【徒手搭建SSM开发环境二】Servlet篇(下)——搭建Servlet应用

搭建Servlet应用

1,引入Servlet相关Maven依赖,并刷新项目依赖包

在这里插入图片描述

Servlet依赖是Servlet容器的实现基础,搭建Servlet应用,需要引入此依赖,并基于该依赖中的接口或者类进行代码开发(如实现Servlet接口,HttpServlet类),
但是在打包部署时,由于Servlet容器中已包含了相应的依赖包,因此需要在生成部署包时排除项目中的Servlet相关依赖,
这也是依赖配置中加入<scope>provided</scope>的原因

有关Servlet容器的实现原理,推荐参考 孙卫琴 老师 的 《Tomcat 与 Java Web》,通俗易懂,适合入门或者想要系统学习Java WEB的同学

2,创建Servlet请求处理代码

2.1 在java 文件夹下创建一个源代码包:com.ssm.demo

在这里插入图片描述

在这里插入图片描述

2.2 在com.ssm.demo 创建类:HelloServlet

在这里插入图片描述
在这里插入图片描述

2.3 继承HttpServlet类,重写其doGet方法,并在方法响应参数中写入一段字符串

在这里插入图片描述

3 在项目的web.xml中配置 Servlet

在这里插入图片描述

这里需要注意,servlet和servlet-mapping标签的servlet-name子标签的内容自行定义即可,但是需要保持一致,因为servlet-mapping标签需要通过子标签servlet-name的内容,
与servlet标签下的servlet-name子标签进行匹配,从而来查找到处理对应请求的servlet类,servlet标签下的servlet-class子标签用于配置servlet请求处理类,servlet-mapping标签下的
url-pattern子标签用于配置需要进行处理的请求的url匹配模式

4 启动tomcat容器,访问项目

完成上述的所有配置后,启动tomcat容器,容器启动成功后访问:http://localhost:8080/ssmdemo/hello,访问成功则表明servlet应用搭建成功

在这里插入图片描述

5 Servlet生命周期调试

由于在集成SpringMVC框架的时候需要使用到Servlet的生命周期,故此先对Servlet的生命周期进行调试和理解。
Servlet的生命周期,主要分为初始化阶段(对应Servlet接口的init方法),处理请求阶段(对应Servlet接口的service方法),销毁阶段(对应Servlet接口的destroy方法)

对于初始化阶段,有两种触发时机,第一种是在Servlet容器启动时就触发该阶段,第二种是在第一次访问 servlet 关联的url-pattern 匹配的 url 路径时,默认的触发时机是第二种。
在web.xml文件中,通过servlet标签的load-on-startup子标签可对触发时机进行配置,当此子标签的值设置为0或者正整数时,表示对servlet的初始化阶段在容器启动时触发,
并且当存在多个servrlet时,Servlet容器将按照load-on-startup子标签值从小到大依次触发各servlet的初始化阶段,当load-on-startup子标签未设置或者设置为负整数时,第一次访问 servlet关联的url-pattern匹配 的url时,才会触发初始化阶段

对于处理请求阶段,就是当浏览器发出请求的url地址被Servlet容器接收到后,如果url地址与servlet对应配置的url-pattern配置的url匹配,则触发处理请求阶段,此阶段实质上我们在上述2-4步骤中已经完成了调试(由于HelloServlet继承的父类HttpServlet的service方法中根据请求的方式对调用的方法进行了分流处理,并且将get请求分发到了doGet方法,因此,当上述步骤中,在浏览器中访问地址http://localhost:8080/ssmdemo/hello 时,HelloServlet类的doGet方法被调用,也就是HelloServlet的处理请求阶段被触发)。
在这里插入图片描述

对于销毁阶段,需要注意,Servlet应用的销毁和tomcat容器销毁是两个不同的概念,因为tomcat容器中可能包含多个Servlet应用,直接停止tomcat容器的话,由于容器线程直接被销毁,是无法通过debug模式进入servlet的销毁阶段的。需要对tomcat容器进行配置,并通过tomcat容器的应用管理界面,只对相应的Servlet应用进行销毁,才能通过debug方式进入销毁阶段。

以下是对servlet的初始化阶段和销毁阶段的调试过程

5.1 在HelloServlet类中重写父类的init 方法和 destroy 方法 ,在重写的方法中分别打印对应的输出语句,并对打印语句添加断点

在这里插入图片描述

5.2 启动Servlet容器(tomcat)。在启动过程中,init方法的断点没有进入,说明初始化阶段没有触发

5.3 访问:http://localhost:8080/ssmdemo/hello,开发工具中首先进入init方法中的断点

在这里插入图片描述

5.4 放开断点,继续执行后,浏览器中获取到响应
在这里插入图片描述

5.5 刷新浏览器,再次访问http://localhost:8080/ssmdemo/hello,开发工具中不再进入init方法中的断点,并且直接得到响应,由此可见:初始化阶段只在第一次访问 servlet关联url-pattern匹配的url时触发

5.6 关闭Servlet容器。在关闭动作全部完成后,destroy方法中的断点始终未进入,说明此时销毁阶段未被触发

在这里插入图片描述

5.7 修改项目中的web.xml文件配置,给对应的servlet添加load-on-startup配置
在这里插入图片描述

5.8 修改/tomcat/conf/文件夹下,tomcat-users.xml文件配置,添加tomcat应用管理界面访问用户,所添加用户的用户名和密码均为tomcat,
并且将该用户添加具有tomcat容器UI界面访问权限的角色:manager-gui

在这里插入图片描述
在这里插入图片描述

5.9 在开发工具中添加tomcat默认应用

打开tomcat部署配置界面

在这里插入图片描述

在这里插入图片描述

在部署配置界面 点击 + 号 选择 External Source… 添加应用

在这里插入图片描述

选择tomcat下的webapp文件夹下的ROOT文件夹,点击OK按钮

在这里插入图片描述

点击OK 按钮完成 tomcat默认应用的添加

5.10 启动Servlet容器(tomcat)。在启动过程中,init方法的断点进入,说明初始化阶段在容器启动过程中触发

在这里插入图片描述

5.11 ,放开5.10中的断点, 访问http://localhost:8080/manager/html,并在弹出发窗口中输入用户名和密码:tomcat/tomcat

在这里插入图片描述

5.12 登录成功后,进入到了tomcat容器的应用管理界面,可在应用列表中看到自己的应用

在这里插入图片描述

此处的Display Name 就是在项目中的web.xml文件中display-name标签中配置的内容

5.13 在应用管理界面中,应用列表中,找到自己的Servlet应用所在行里的stop按钮,点击此stop按钮,对自己的Servlet应用进行销毁

在这里插入图片描述

5.14 销毁过程中,进入了HelloServlet类的destroy方法的断点
在这里插入图片描述

5.15 放开方法5.14中的断点,待应用销毁完成后,开发工具IDEA中的tomcat进程仍在运行状态,并且tomcat容器的应用管理界面仍然可以继续访问,并且自己的应用在应用列表中仍然可以找到,只是Running 列的值变成了 false,表示改Servlet应用已经被停止了。
在这里插入图片描述

5.16 点击tomcat应用管理界面中,自己的Servlet应用所在行里的start按钮可以重新启动Servlet应用,此时,再次进入了HelloServlet类的init方法中的断点

在这里插入图片描述

在这里插入图片描述

至此Servlet应用的搭建及调试,以及servlet生命周期的调试完成

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值