Servlet官方文档学习笔记

Servlet的生命周期被javax.servlet.Servlet这个接口所定义

init()方法获得了一个Servlet配置对象(ServletConfig)。这个对象在Servlet引擎中执行,并允许Servlet通过它获处相关参数。这个对象使得Servlet能够访问ServletContext对象。

 

Servlet处理请

ServletRequest的对象用于向Servlet提供客户端请求信息,如内容类型,内容长度,参数名称和值,标题信息,属性等

 

    Servlet被初始化之后,它已经可以处理来自客户端的请求,每一个来自客户端的请求都被描述成一个ServletRequest对象,Servlet的响应被描述成一个ServletResponse对象。

   当客户端发出请求时,Servlet引擎传递给Servlet一个ServletRequest对象和一个ServletResponse对象,这两个对象作为参数传递到service()方法中。

Servlet 也可以执行ServletRequest接口和ServletResponse接口。ServletRequest接口使得Servlet有权使用客户端发出的请求。Servlet可以通过

ServletInputStream读取请求信

ServletResponse接口允Servlet建立响应头和状。通过执个接口,Servlet使用ServletOutputStream类来向客户端返回数据。

 

Servlet接口的方法

Servlet接口有5种方法。分别为:initservicedestroy是servlet的生命周期方法。这些方法由web容器调用。

 

方法

描述

public void init(ServletConfig config)

初始化servlet,它是servlet的生命周期方法,由web容器调用一次。

public void service(ServletRequest request,ServletResponse response)

为传入的请求提供响应。它由Web容器的每个请求调用。

public void destroy()

仅被调用一次,并且表明servlet正在被销毁。

public ServletConfig getServletConfig()

返回ServletConfig对象。

public String getServletInfo()

返回有关servlet的信息,如作者,版权,版本等。

 

GenericServlet类实现了ServletServletConfigSerializable接口。它提供除了service方法之外,还实现了这些接口的所有方法。

GenericServlet类可以处理任何类型的请求,因此它与协议无关。

可以通过继承GenericServlet类并提供服务方法的实现来创建通用servlet

HttpServlet类扩展了GenericServlet类并实现了Serializable接口。它提供了http特定的方法,如:doGetdoPostdoHeaddoTra

 

Web容器如何处理servlet请求?

Web容器负责处理请求。下面来看看看它如何处理请求。

  • 将请求与web.xml文件中的servlet进行映射。
  • 为请求创建请求和响应对象
  • 调用线程上的service方法
  • 公共service方法内部调用受保护的service方法
  • 受保护的service方法根据请求的类型调用doGet方法。
  • doGet方法生成响应,并将其传递给客户端。
  • 发送响应后,Web容器将删除请求和响应对象。线程包含在线程池中或删除取决于服务器实现

 

在公共service方法中写什么?

公共service方法ServletRequest对象转换为HttpServletRequest类型和ServletResponse对象转为HttpServletResponse类型。然后调用传递这些对象的service方法。

受保护的service方法检查请求的类型,如果请求类型为get,则调用doGet方法,如果请求类型为post,则调用doPost方法

 

 

 

RequestDispatcher接口中定义了两种方法

include 包含上层的信息加本层的,forward只有上层返回的不包括本层的

ServletRequest接口的getRequestDispatcher()方法返回RequestDispatcher的对象

 

 

ServletConfig对象是由每个servlet的Web容器创建的。这个对象可用于从web.xml文件获取配置信息ServletConfig的核心优点是,如果可以修改web.xml文件中的信息,则不需要编辑servlet代码文件。

 

 

 

 

ServletContext

如果有信息要共享给多个servlet使用,最好在web.xml文件中使用<context-param>元素提供它

 

servletconfig对象引用单个servlet,而servletcontext对象引用整个Web应用程序

 

猜你喜欢

转载自blog.csdn.net/weixin_42248302/article/details/85369062