1.Servlet 简介
Servlet是server applet的简写,是一个运行在Web服务器端的Java小程序,由服务器调用执行。在JavaEE中,Servlet就是一个接口,定义了Java类被tomcat识别和运行的规则,Servlet接口定义的方法如下
方法 | 描述 |
---|---|
void init(ServletConfig servletConfig) | 初始化方法,在servlet对象被创建的时候执行,只会执行一次 |
ServletConfig getServletConfig() | 获取servlet对象的配置对象 |
void service(ServletRequest servletRequest, ServletResponse servletResponse) | 提供服务的方法,每一次servlet被访问时执行 |
String getServletInfo() | 获取Servlet的信息。如版本,作者… … |
void destory() | 销毁方法,只有在服务器正常关闭时,才会执行销毁方法且在Servlet被销毁之前执行,一般用于释放资源,只会执行一次 |
2.Servlet生命周期
(1)实例和初始化阶段
当请求到达服务器时,服务器会查找该servlet对象是否存在,如果不存在,则会通过反射创建实例并进行初始化
注:Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的。多个用户同时访问的时候,可能存在线程安全问题,尽量不要在Servlet中定义成员变量。即使定义了也不要修改值
(2)服务阶段
服务器调用servlet的service()方法,处理请求的方法在整个生命周期中可以被多次调用
(3)销毁阶段
服务器正常关闭时,将程序中的servlet实例进行销毁
3.Servlet的工作流程
(1)通过请求头获知浏览器访问的是哪个主机
(2)再通过请求行获取访问的是哪一个Web应用
(3)再通过请求行中的请求路径获知访问的是哪个资源
(4)通过获取的资源路径在配置中匹配到真实的路径
(5)服务器会创建Servlet对象(如果是第一次访问)
(6)调用service方法,并生成请求和响应对象,用来处理请求和响应
(7)调用service方法完毕后返回服务器,由服务器将响应缓冲区的数据取出,以http响应的格式发送给浏览器
4.Servlet的常用实现
@WebServlet("/demo")
public class MyServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 处理请求和响应
}
}