Servlet技术 1
一、什么是Servlet
① Servlet是Javaweb应用中的最核心组件(Servlet、Filter、Listener)。Servlet运行在Servlet容器中,能够为各种各样的客户请求(主要是处理动态资源请求)提供相应服务。即Servlet是sun公司提供的动态web资源开发技术。本质是上一段java小程序。
② Servlet的任务有:(1)获取请求数据 (2)处理请求 (3)完成响应
二、Servlet接口 : 所有的Servlet类都必须实现Servlet接口,Servlet接口中有5个方法。
① init(ServletConfig)方法,负责初始化Servlet对象。
② service(ServletRequset req,ServletResponse res)方法,负责响应客户请求,为客户提供相应服务。其中ServletRequset是请求对象,ServletResponse是响应对象。
③ destroy()方法,负责释放Servlet对象占用的资源。
④ getServletConfig();
⑤ getServletInfo();
其中,前三个方法也叫Servlet的生命周期方法,后面两个方法可以获取Servlet的配置信息及其他相关信息。有关Servlet生命周期的内容,将在后文中详述。
三、实现Servlet的方式
① 实现Servlet接口(不方便)
② 继承GenericServlet类(也不方便,GenericServlet类是Servlet接口的实现类)
③ 继承HttpServlet类(方便,推荐使用。HttpServlet类是GenericServlet类的子类,且HttpServlet类与HTTP协议相关)
④例程:MyServlet.java
四、Servlet的生命周期
① 通常情况下,servlet第一次被访问的时候在内存中创建对象,在创建后立即调用init()方法进行初始化。对于每一次请求都掉用service(req,resp)方法处理请求,此时会用Request对象封装请求信息,并用Response对象(最初是空的)代表响应消息,传入到service方法里供使用。当service方法处理完成后,返回服务器服务器根据Response中的信息组织称响应消息返回给浏览器。响应结束后servlet并不销毁,一直驻留在内存中等待下一次请求。直到服务器关闭或web应用被移除出虚拟主机,servlet对象销毁并在销毁前调用destroy()方法做一些善后的事情。
② 在Servlet的生命周期中,Servlet的初始化和销毁只会发生一次,因此init()方法和destroy()方法只会被Servlet容器调用一次。而Service()方法可能会被Servlet容器调用多次,这取决于客户端请求访问Servlet的次数。
③ 服务器只为一个类型的Servlet创建一个实例对象,所以Servlet是单例的。故可能在同一时刻一个Servlet对象会被多个请求同时访问,所以这可能出现线程安全问题