当前位置: 首页 > news >正文

企业网站建设要素建设公司官网的请示

企业网站建设要素,建设公司官网的请示,官方网站入口,常熟建设局网站首页Servlet servlet在20年前左右,是网站开发的一种主力技术. 现在随着时间的推移,Java这个圈子中,逐渐使用spring代替了servlet.现在讲servlet,目的有两个方面. 1.spring作为一个框架.底层仍然是需要调用servlet里的一些api的,包括熟悉servlet有助于理解spring工作原理.包括spr…

Servlet

servlet在20年前左右,是网站开发的一种主力技术.

现在随着时间的推移,Java这个圈子中,逐渐使用spring代替了servlet.现在讲servlet,目的有两个方面.

1.spring作为一个框架.底层仍然是需要调用servlet里的一些api的,包括熟悉servlet有助于理解spring工作原理.包括spring有些接一口也会暴露出servlet的一些影子.

2.学习servlet,不仅仅是学习servlet api本身,更主要的是学习"web开发"这件事情(为了开发一个网站,你需要做哪些事情).

页面主要分为静态页面和动态页面.静态页面就是你无论什么时候,打开这个页面,他都是一成不变的.而动态页面,往往是在请求发起的时候,由服务器通过一系列运算,动态生成的页面.

servlet主要解决的问题,就是为了实现动态页面.

简单的servlet的hello world程序

1.创建项目

这里需要创建一个Maven项目

这一组现在用不到,但是如果你要把你先的程序放到Maven中央仓库上,就需要通过这几个属性来做区分.联合到一起,就相当于一个 库 的身份标识.

2.引入依赖

当前的代码要使用servlet开发.而servlet并不是Java标准库自带的.就需要让Maven能够把servlet的依赖给获取过来.

需要先找到Maven中央仓库.

选择这个版本.

servlet的版本,和Tomcat的版本是有对应关系的.Tomcat使用8,servlet就是3.1,如果不匹配就可能出现问题.

我们将servlet引入到Maven里面.先手动创建一个标签,把刚才的坐标复制到这个标签里.此时idea就会自动的通过Maven从中央仓库来下载这里的依赖.

如果等了很久还不行,可以点击这里的刷新,手动重新下载

首次使用,是最慢的,后面就快了(首次使用需要加载不少的依赖)下载的过程是需要下载时间的.

3.手动创建一些必要的目录/文件

Tomcat对于servlet项目,是有一些额外要求的.Maven是一个通用的工具,可以管理的不仅仅是servlet项目,还可以管理其他的项目.在这个基础上,在按照servlet项目的要求,创建出一些特定的目录和文件.

目录结构和名字都是固定的.

web.xml就是告诉Tomcat,我现在这个目录里的东西就是一个webapp,你就要把我加载起来.

web.xml里,还需要写一些内容,不能是空着的.这里的内容是固定的内容,不需要咱们去背下来,只需要从别的项目中复制粘贴即可.

<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name>
</web-app>

这个意思是:统一资源标识符没有注册,解决方法就是将这个标识符手动添加到idea中

(这里的标红并非是报错,不影响后续程序的运行.)

1.复制红色部分的代码

file --> settings- -> languages & frameworks -->Schemas and DTDs

解决

这个文件叫做schema文件,描述了该xml里面的格式是怎样的.(哪些标签是合法的,哪些不合法,如何进行嵌套等)idea拿到这个文件,就可以针对你的xml进行代码补全了.

4.编写代码

这个类,是前面的servlet的jar包,提供的父类.编写servlet程序一般都需要继承这个类.

继承不是目的,真正的目的是为了重写父类的方法

req:代表这次请求的http请求内容.

resp:代表这次请求要返回的http响应内容.

这个方法不需要咱们手动调用,doGet本质上也是一个"回调函数"把这个方法写好之后,就会交给Tomcat,Tomcat在收到一个合适的GET请求的时候就会自动调用doGet.调用doGet的时候,Tomcat就会解析这次的http请求,生成一个HttpServletRequest对象.(这个对象里的属性什么的都是个http协议格式匹配的)相当于Tomcat帮我们吧http请求给解析好了.同时,Tomcat也会构造出一个空的 HttpServletResponse 对象(这里的空不是指 null 而是一个new好的但是没有初始化属性的对象),把这个resp对象也会传递到doGet里面.doGet要做的事情,就是根据这次的请求(req),计算出响应(resp).doGet里面的代码,就要根据req里不同的参数的细节,生成一个具体的resp对象(往空的对象里设置属性)Tomcat就会根据这个响应对象,转换成符合HTTP协议的响应报文,返回给浏览器了.

总而言之,doGet就是根据请求计算响应.

在之前写echo server的时候,一个服务器,典型的工作流程就是三步.

1.读取请求并解析

2.根据请求计算响应

3.把响应写回到客户端

以上三个步骤体现了服务器的业务逻辑,1,3都是相对固定的操作.在Servlet这块,1,3都是Tomcat帮我们完成的.咱们写代码就只需要关注2,也就是doGet要完成的工作.

注意:这行代码一定要删除掉,否则会有问题.

我们还需要手动打上这个注解,这个注解就把当前这个Servlet类,和一个请求的路径关联起来了.(配置路由)

Tomcat会在合适的时机,自动调用doGet.

1.请求的方法,是否是GET

GET=>doGet

POST=>doPost

PUT=>doPut

...

2.请求的路径.URL后面带有层次结构的路径.

一个Servlet程序里,可能有多个servlet类的.这些servlet类,就需要在不同的情况下被执行到了

当请求的路径中带有hello的时候,才能执行到咱们这个HelloServlet的代码.不同的Servlet类,就可以关联到不同的路径.

至此,helllo word程序就写完了.

Servlet程序,不需要main方法.一个程序,是需要有main方法作为入口的.实际上,咱们在这里写的这个代码,并不是独立的程序.而是放到Tomcat上执行的.main方法其实是在Tomcat里的,咱们写的这些doGet之类的都是让Tomcat来调用的.

5.打包程序

咱们得程序是放到Tomcat上运行,就需要对程序进行打包,打成一个Tomcat能够识别的报的格式,此时代码才会被Tomcat给加载起来了.

同时"打包"也是借助Maven完成的.

这个就是打包选项

只要出现SUCCESS,那就成功了,注意,首次打包会很慢很慢.

打包成功之后

在左侧会出现target,里面可以看到实际上我们是将代码打包成一个jar包了,但是Tomcat要的不是jar包而是war包.war包本质上和jar包差不多,war包中会包含一些前端的代码(html,css,js),以及一些Tomcat的配置(web.xml)

下面的finalName设置的是打出的war包的包的名字(改名字不是必须的)

6.部署

部署的前提是Tomcat是运行的.

将war包复制到Tomcat的这个目录下

若你的Tomcat处于运行状态下,那么Tomcat就会对这个war包进行解压缩

同时Tomcat中也会多出来几行日志,这就是发现了新的war包,对这个war包进行部署.

7.验证程序是否可以正常工作

通过浏览器发起http get请求,触发刚才servlet的代码.

其中在这里,application path : webappTest

就是war包解压出来的文件名字

servlet path : hello

是这里的路径

通过第一级路径来确定一个webapp

通过第二级路径确定哪个servlet

通过方法确定执行servlet中的哪个方法

此时在页面上就展示出了hello word

这行代码的功劳.

注意如果出现Tomcat正常运行但是浏览器正常转圈.

只需要在Tomcat里面敲几个回车就出来了.

原因:之所以有这种情况,是因为CMD在搞鬼

通过上述七个步骤,hello word 就写完了.

如果需要修改代码,就需要重复上述 5 6 7,是比较麻烦的.当然了,也有大佬想出了办法,可以让我们简化这个修改的过程.让idea和Tomcat集成起来.直接使用idea图形化界面把你的代码部署到Tomcat上达成"一键式打包&部署"过程.

在idea中安装SmartTomcat插件.

在一个项目中,第一次使用,需要配置一下

下面配置一下名字以及ContentPath的名字,以及找到你当前电脑上Tomcat的路径即可

运行结果

但是不要去点击那个链接,此处只是提示你contextPath是什么.而且之前的乱码问题没有了.

http://www.dtcms.com/a/496620.html

相关文章:

  • 苏州网站建设哪里好个人网站 费用
  • 位操作符a
  • GaussDB 应用侧报no pg_hba.conf entry for host处理方法
  • Linux中内存初始化mem_init函数的实现
  • 怎么做微信钓鱼网站吗有哪些设计好看的企业官网
  • html做的网页怎么变成网站seo分析网站
  • 沈阳网站建设技术公司怎么登陆自己的公司网站
  • nextjs前端工程如何打包部署(nginx)
  • 网站设计与建设的阿里巴巴代加工平台
  • 高性能物联网双轴倾角传感器及其可靠厂家选择指南
  • 一个网站如何做桌面快捷链接建设银行网站会员基本信息
  • 广州汽车网站建设国外做的比较好的购物网站
  • 深度学习2-损失函数-数值微分-随机梯度下降法(SGD)-反向传播算法
  • 濮阳网站建设熊掌号网站建设捌金手指花总五
  • 深度剖析:Feign 调用第三方接口 + Token 自动续期(24 小时有效期 + 1/4 时间触发)实战指南
  • AgentScope RAG 示例指南
  • 做网站学哪种代码好jquery 显示 wordpress
  • 做网站模板的网页名称是m开头swiper wordpress
  • 首京建设投资引导基金网站海淀重庆网站建设
  • NumPy random.choice() 函数详解
  • 网站手机端 怎么做东莞工业品网站建设
  • 广东网站建设网站前端一个页面多少钱
  • Redis分布式锁、Redisson及Redis红锁知识点总结
  • 企业网络建站动漫制作专业专升本大学
  • 东莞网站建设推广方案制作一个网站多少钱啊
  • Spark Shuffle 分区与 AQE 优化
  • 上海住建部网站wordpress下载按钮插件
  • 深度解析:电商API的核心功能与应用
  • 网站建设 定制移动端开发工具
  • html5网站开发费用什么是网络营销?网络营销有哪些功能