servlet生命周期与工作原理

1、概念

Servlet是一个java编写的程序,此程序是在服务端运行的,是按照Servlet规范编写的一个java类。

Servlet作用是处理客户端的请求并响应再发送到客户端。

每一个自定义的Servlet都必须实现Servlet的接口,其中涉及到比较重要的三个方法,分别是init(), service(), destroy(), 一般来说,我们定义Servlet的时候只需要继承HTTPServlet即可。


2、工作原理

 Servlet接收和响应客户请求的过程,首先是客户发送一个请求,Servlet是调用service()方法对请求进行响应的,通过源代码可见,service()方法中对请求的方式进行了匹配,选择调用doGet/doPost方法,然后再进入对应的方法中调用逻辑层的方法,实现对客户的响应,HTTPServlet中定义了这些方法,但是返回的都是error信息,所以,我们每次定义一个Servlet的时候,都必须实现doGet或doPost方法。

可将请求流程概括为以下四点:

1、客户端请求指定的servlet(url)

2、系统会根据web.xml的配置找到对应的url-pattern

3、根据url-pattern找到对应的servlet-name

4、根据指定的servlet类执行service方法

Servlet类创建及方法示例:

public class HelloServlet extends HttpServlet{

	public HelloServlet() {
//		HelloServet hs = new HelloServlet();
		System.out.println("执行构造器");
	}
	
	@Override
	public void init() throws ServletException {
		System.out.println("helloServlet被初始化");
	}
	
	@Override
	public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//		System.out.println("servlet被执行。。。。");
//		PrintWriter out = response.getWriter();
//		out.println("<h1>hello Servlet</h1>");
//		out.println("<input type=\"text\">");
//		out.flush();
		System.out.println("service被执行....");
		super.service(request, response);
		
	}
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("doGet被执行。。。");
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("doPost被执行....");
	}
	
	@Override
	public void destroy() {
		System.out.println("helloServlet被销毁!!!");
	}
}
3、生命周期
Servlet的生命周期由Servlet容器控制,该容器创建Servlet的实例。Servlet生命周期指的是常见Servlet实例后响应客户请求直至销毁的全过程。

生命周期分为以下四大步:

1、容器启动之后,会对web.xml进行加载,主要验证映射配置是否正确,出现任何映射异常,则服务器抛出异常。

2、web.xml被成功加载之后,当客户端对指定的servlet第一次发起访问时,容器会自动执行servlet的init方法(只会在第一次访问时执行),完成一些初始化操作。

3、容器会自动执行service方法,再根据客户端发起的请求(get,post...)决定调用doGet/doPost完成相应的操作。

4、当容器停止服务时,servlet会执行destroy完成销毁操作。


web.xml文件配置示例(联系上面的Servlet类创建):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值