Servlet能够做什么?
Servlet API的核心类框图:
Servlet API的核心是javax.servlet.Servlet接口,所有的Servlet类都必须实现该接口。在Servlet接口中定义了5个方法,其中有3个方法都是由Servlet容器调用,即管理Servlet的生命周期,分别是init(ServletConfig cfg)、service(ServletRequest req, ServletResponse resp)、destroy()方法。除此之外,另外两个方法是getServletConfig()和getServletInfo(),用于返回Servlet相关信息。
GenericServlet抽象类,为Servlet接口提供了通用实现,它与任何网络应用层协议无关。
HttpServlet类是GenericServlet类的子类。
ServletRequest接口,当Servlet容器接收到客户端要求访问特定请求时,容器先解析客户端的原始请求数据,把它包装成一个ServletRequest对象。当容器调用service(req, resp)方法时,就可以把ServletRequest对象作为参数传递给service()方法。
ServlerRequest接口提供了一系列用于读取客户端的请求数据的方法。这里不列举了。
HttpServletRequest接口是ServletRequest接口的子接口。
————
说完了ServletRequest,该说ServletResponse了。
没错,ServletResponse是Servlet容器service(req, resp)方法的第二个参数。Servlet容器通过它来生成响应结果。在ServletResponse接口中定义了一系列与生成响应结果相关的方法。这里不列举了。
有两种输出方法重点说一下:
HttpServletResponse接口是ServletResponse的子接口。
——————
ServletConfig接口,包含了Servlet的初始化参数信息。Servlet容器在调用Servlet对象的init(cfg)方法时,会把ServletConfig对象作为参数传给Servlet对象。
每个初始化参数包括一对参数名和参数值。在web.xml中配置一个Servlet时,通过<init-param>元素来设置初始化参数。
## HttpServlet类继承GenericServlet类,而GenericServlet类实现了ServletConfig接口,因此在HttpServlet类或者GenericServlet及其子类中都可以直接调用ServletConfig接口中的方法。
——————
ServletContext接口,是Servlet与Servlet容器之间直接通信的接口。Servlet容器在启动一个web应用时,会为它创建一个ServletContext对象,且唯一!!可以把ServletContext对象形象的理解为web应用的总管家,同一个web应用中的所有Servlet对象都共享一个总管家,Servlet对象们可通过这个总管家来访问容器中的各种资源。