Servlet简介
生命周期
Servlet的生命周期可以分为四个阶段,即装载类及创建实例阶段、初始化阶段、服务阶段和实例销毁阶段。
1、创建实例阶段客户端发送请求后首先判断是否存在Servlet实例,如果没有存在创建Servlet实例(Servlet的构造方法)。2、初始化阶段如果存在Servlet实例,则开始其初始化阶段,执行器初始化方法(init()方法)。3、响应客户端请求阶段调用service()方法,根据提交方式选择执行doGet()方法或者doPost()方法。4、销毁阶段程序结束或者是服务器停止,调用其销毁方法(destroy()方法)。
运行流程
1、客户端发送请求(以Get方式或者Post方式发送请求)——> <a href="servlet/HelloServlet"/> 或者<form name="regForm" action="servlet/HellServlet" method="post">。
2、在web.xml中找到<servlet-mapping><servlet-name>HelloServlet</servlet-name><url-pattern>/servlet/HelloServlet</url-pattern></servlet-mapping>(第一条中的请求路径对应的就是url-pattern中的请求路径)。
3、同样是在web.xml中,寻找<servlet><servlet-name>HelloServlet</servlet-name><servlet-class>servlet.HelloServlet</servlet-class></servlet>(第二条中的servlet-name对应第三条中的servlet-name,并且我们可以根据servlet-class找到对应的类)。
4、根据servlet-class我们找到请求对应的类信息,根据请求方式确定调用doGet()方法或者doPost()方法。
工作原理
1、客户端发送一个请求,servlet是调用service方法对请求响应的,在service中对请求的方式进行分配,选择调用doGet,doPost等这些方法。
2、然后再进入对应的方法调用逻辑层的方法,实现客户端的响应。
3、在servlet接口和GenericService中是没有doGet,doPost等等这些方法,所以每个自定义的servlet都要实现HttpServlet方法,HttpServlet中的方法都是返回错误信息。
4、GenericServlet是一个通用的,不特定于任何协议的servlet,它实现了Servlet接口
而HttpServlet继承与GenericServlet,因此HttpServlt也实现了Servlet接口,所以定义的servlet只需要继承HttpServlet即可。
5、Servlet接口和GenericServlet是不特定于任何协议的,HttpServlt是特定于Http协议的类,所以HttpSerlvet实现了service方法,并将请求ServletRequest和ServltResponse转换成了HttpRequest和HttpResponse。