《Servlet和JSP学习指南》一1.9 HTTP Servlet

    xiaoxiao2021-07-21  150

    1.9 HTTP Servlet

    我们所编写的Servlet应用程序,尽管不能说全部,但其中大多数要用到HTTP。这意味着,可以利用HTTP提供的特性。javax.servlet.http包是Servlet API中的第二个包,其包含了编写Servlet应用程序的类和接口。javax.servlet.http中的许多类型覆盖了javax.servlet中的类型。图1-5展示了javax.servlet.http中的主要类型。

    1.9.1 HttpServlet

    HttpServlet类覆盖javax.servlet.GenericServlet类。在使用HttpServlet时,还要使用HttpServletRequest和HttpServletResponse对象,它们分别表示Servlet请求和Servlet响应。HttpServletRequest接口继承javax.servlet.ServletRequest,HttpServletResponse继承javax.servlet.ServletResponse。HttpServlet覆盖GenericServlet中的service方法,并用以下签名添加了另一个service方法:

    这个新的service方法与javax.servlet.Servlet中的区别在于,前者接受的是HttpServlet-Request和HttpServletResponse,而不是ServletRequest和ServletResponse。与往常一样,Servlet容器调用javax.servlet.Servlet中原始的service方法,HttpServlet中的service方法要如下这么写:

    原始的service方法将请求和响应对象进行向下转换,分别从Servlet容器转换成HttpServletRequest和HttpServletResponse,并调用新的service方法。向下转换总是会成功,因为在调用一个Servlet的service方法时,Servlet容器总会预计使用HTTP,所以传递一个HttpServletRequest和一个HttpServletResponse。即使正在实现javax.servlet.Servlet接口或者继承javax.servlet.GenericServlet,也可以将传给service方法的Servlet请求和Servlet响应,分别向下转换成HttpServletRequest和HttpServletResponse。之后,HttpServlet中新的service方法会查看通常用来发送请求(通过调用request.getMethod)的HTTP方法,并调用以下某个方法(doGet、doPost、doHead、doPut、doTrace、doOptions和doDelete)。这7个方法各自表示一个HTTP方法。其中,doGet和doPost是最常用的。因此,通常不需要再覆盖service方法,而是覆盖doGet或者doPost,或者将doGet和doPost都覆盖掉。总之,HttpServlet中有两项特性是GenericServlet所没有的:不覆盖service方法,而是覆盖doGet、doPost,或者两者都覆盖掉。在极少数情况下,还要覆盖以下某个方法:doHead、doPut、doTrace、doOptions或doDelete。将用HttpServletRequest和HttpServletResponse代替ServletRequest和Servlet-Response。

    1.9.2 HttpServletRequest

    HttpServletRequest表示HTTP环境中的Servlet请求。它继承javax.servlet.ServletRequest接口,并增加了几个方法,例如:

    返回表示请求context的请求URI部分。

    返回一个Cookie对象数组。

    返回指定HTTP标头的值。

    返回发出这条请求的HTTP方法的名称。

    返回请求URL中的查询字符串。

    返回与这个请求有关的session对象。如果没有找到,则创建新的session对象。

    返回与这个请求有关的session对象。如果没有找到,并且create参数为true,那么将创建新的session对象。在接下来的章节中,将学习如何使用这些方法。

    1.9.3 HttpServletResponse

    HttpServletResponse表示HTTP环境下的Servlet响应。下面是其中定义的部分方法:

    给这个响应对象添加cookie。

    给这个响应对象添加标头。

    发送响应代号,将浏览器重定向到指定的位置。在接下来的章节中将进一步学习这些方法。

    相关资源:七夕情人节表白HTML源码(两款)

    最新回复(0)