Servlet总结

1 servlet是什么

servlet是server(服务器)+applet(程序)的缩写,是服务器端运行的java程序

2 servlet职责

servlet对象的职责有两个:

  • 和前端(html/jsp)交互,和后台(java)交互,并在其中起着控制的作用
  • 控制页面的跳转

3 servlet的生命周期(LF)

3.1 创建

3.1.1 三种创建方式

有三种创建servlet的方式,第三种是最常用的方法:

  • implements Servlet
  • extends abstract GenericServlet类:覆盖service()方法
  • extends HttpServlet:覆盖doGet() / doPost()方法

对象创建过程:代码块–>构造方法–>对象

类HttpServlet继承于类GenericServlet,类GenericServlet实现了Servlet接口

3.1.2 servlet对象

servlet对象只创建一次,有两个地方会创建

  • 在第一次请求时创建
  • 容器(tomcat)启动时创建
    < load-on-startup >1< /load-on-startup > : 配置这个则会在容器启动创建
    附带创建的对象ServletConfig:配置servlet的对象

在多次请求时,用多线程的方法,servlet请求是线程不安全的

3.1.2.1 验证在第一次请求时创建一次servlet
  • 这里创建方法用的是继承HttpServlet
  • 在构造方法里的两行打印,来验证只创建一次servlet
public class LFServlet extends HttpServlet {
	
	public LFServlet() {
		System.out.println("验证多次请求时,servlet的创建次数:创建servlet");
		System.out.println(this.hashCode());
	}
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		doGet(req, resp);
	}

}

打开一个网页来发起请求
在这里插入图片描述

在这里插入图片描述

在多次刷新页面后,也只创建一次servlet对象
在这里插入图片描述

3.1.2.2 验证在容器(tomcat)启动时创建servlet对象

1.要使得在tomcat启动时就能创建servlet对象,先要在web.xml中servlet下加上:< load-on-startup >1< /load-on-startup >
在这里插入图片描述
2.在构造方法打印两行用于验证

public class LFServlet extends HttpServlet {
	
	public LFServlet() {
		System.out.println("验证在容器启动时创建servlet");
		System.out.println(this.hashCode());
	}
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		doGet(req, resp);
	}

}

3.重启tomcat,发现在启动时就创建了servlet对象,无需等待网页的请求
在这里插入图片描述

注:还有另一种情况,如果是用注解的方式创建的servlet对象,则如下修改
在这里插入图片描述

3.2 初始化

初始化指的是调用构造方法之后(servlet对象创建后),第一个调用的方法(init方法),servlet自动调用。

3.2.1 验证

在这里插入图片描述
这里使用的是容器启动时创建servlet,可以看到在创建servlet对象后,立刻调用了init()方法,这就是初始化
在这里插入图片描述

3.3 service()方法

每次前端的向servlet的请求,实际上是servlet对象调用service()方法。

3.3.1 验证

在这里插入图片描述
请求一次网页,则调用一次service方法
在这里插入图片描述

3.4 选择doGet()/ doPost()方法

在service方法中,通过判断method,调用doGet()/doPost()
在这里插入图片描述

在这里插入图片描述

3.5 销毁

销毁时会自动调用destroy()方法
destroy()—>容器(java)–>JVM
servlet被容器(一个java程序)销毁。容器是被JVM销毁的。在JVM上跑着一个容器,容器里装的是servlet

4 补充:ServletConfig配置servlet的对象

在创建Servlet对象时,会自动创建一个ServletConfig对象,可以配置servlet对象

可以用于传入一些值,比如是key:123

在这里插入图片描述

通过ServletConfig对象可以拿到这个值
在这里插入图片描述

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值