`

详解Servlet的父类HttpServlet类

阅读更多

13.3  HttpServlet类

HttpServlet类是一个抽象类,扩展了GenericServlet类。HttpServlet类用于创建一个适用于Web站点并支持HTTP协议的Servlet。一个HttpServlet的子类必须至少重载以下方法中的一个。

□ doGet()方法,适用于HTTP GET请求。

□ doPost()方法,适用于HTTP POST请求。

□ doPut()方法,适用于HTTP PUT请求。

□ doDelete()方法,适用于HTTP DELETE请求。

□ init()和destroy()方法,管理Servlet生命周期中的资源。

□ getServletInfo()方法,提供Servlet本身的信息。

HttpServlet类中的 getServletConfig()、getServletContext()、getServletInfo()、 getServletName()、log()等方法和GenericServlet类中的同名方法功能相同,本节不再介绍。

13.3.1  HttpServlet:构造函数

【基本语法】javax.servlet.http.HttpServlet类的构造函数如下:

public HttpServlet ( )

该构造函数什么也不做,因为该类是一个抽象类。

13.3.2  init方法:初始化Servlet

【功能说明】init()方法用于初始化Servlet,参见13.2.2小节。

13.3.3  service方法:处理客户端请求

【功能说明】service()方法用于处理客户端请求。

【基本语法】

protected void service (

    HttpServletRequest request,         //  指定HttpServletRequest对象,包含客户端请求

    HttpServletResponse response        //  指定HttpServletResponse对象,包含Servlet的响应

)

    throws ServletException, IOException

public void service (

    ServletRequest request,                //  指定HttpServletRequest对象,包含客户端请求

    ServletResponse response               //  指定HttpServletResponse对象,包含Servlet的响应

)

    throws ServletException, IOException

通常情况下不需要重载该方法。

13.3.4  destroy方法:销毁Servlet

【功能说明】destroy()方法用于销毁Servlet,参见13.2.4小节。

13.3.5  doGet方法:处理GET请求

【功能说明】doGet()方法用于处理HTTP的GET请求。

【基本语法】

protected void doGet (

    HttpServletRequest request,                 //  指定HttpServletRequest对象,包含客户端请求

    HttpServletResponse response                //  指定HttpServletResponse对象,包含Servlet的响应

)

    throws ServletException, IOException

重载doGet()方法可以支持HTTP的GET请求,同时自动支持HTTP的HEAD请求。HEAD请求是仅请求头部的GET请求。

在使用PrintWriter对象返回响应之前,最好先设置响应的内容类型和编码方式。如果请求的格式不正确,该方法将返回一个“HTTP BAD REQUEST”错误信息。

【实例演示】

package mil.zcz.jsp.servlet;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class WelcomeServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        response.setContentType("text/html;charset=GB2312");

        PrintWriter out = response.getWriter();

        String user = request.getParameter("user");

        String msg = "Hi " + user + ", welcome to the servlet's world!";

        out.println(msg);

        out.close();

    }

}

在web.xml中添加以下代码:

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

    version="2.4">

   

    <servlet>

        <servlet-name>WelcomeServlet</servlet-name>

        <servlet-class>mil.zcz.jsp.servlet.WelcomeServlet</servlet-class>

    </servlet>

    <servlet-mapping>

        <servlet-name>WelcomeServlet</servlet-name>

        <url-pattern>/Welcome</url-pattern>

    </servlet-mapping>

   

</web-app>

测试JSP页面welcome.jsp的源代码如下:

<html>

<head>

<title>Welcome</title>

</head>

<B>Please input your name:</B></br>

<form method="GET" action="/JSPBook/Welcome">

    <input type="TEXT" name="user" />

    <input type="SUBMIT" value="Submit" />

</form>

示例代码的执行效果如图13.3所示。

详解Servlet的父类HttpServlet类 - 24kljq - 24kljq

图13.3  使用HttpServlet的doGet方法

13.3.6  doPost方法:处理POST请求

【功能说明】doPost()方法用于处理HTTP的POST请求。

【基本语法】

protected void doPost (

    HttpServletRequest request,                 //  指定HttpServletRequest对象,包含客户端请求

    HttpServletResponse response         //  指定HttpServletResponse对象,包含Servlet的响应

)

    throws ServletException, IOException

在使用PrintWriter对象返回响应之前,最好先设置响应的内容类型和编码方式。如果请求的格式不正确,则该方法将返回一个“HTTP BAD REQUEST”错误信息。

【实例演示】

package mil.zcz.jsp.servlet;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class WelcomeServlet extends HttpServlet {

   

    public void doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        response.setContentType("text/html;charset=GB2312");

        PrintWriter out = response.getWriter();      

        String user = request.getParameter("user");

        String msg = "Hi " + user + ", welcome to the servlet's world!";

        out.println(msg);

        out.close();

    }

   

    public void doPost(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

       

        this.doGet(request, response);           //  调用doGet()方法

       

    }

}

将测试JSP页面welcome.jsp的源代码修改如下:

<B>Please input your name:</B></br>

<form method="POST" action="/JSPBook/Welcome">

    <input type="TEXT" name="user" />

    <input type="SUBMIT" value="Submit" />

</form>

示例代码的执行效果参见13.3.5小节。

13.3.7  doHead方法:处理HEAD请求

【功能说明】doHead()方法由service()方法调用,用于处理HTTP的HEAD请求。

【基本语法】

protected void doHead (

    HttpServletRequest request,            //  指定传递给Servlet的请求对象

    HttpServletResponse response         //  指定Servlet返回给客户端的HTTP头部

)

    throws ServletException, IOException

该方法不向客户端返回任何数据,仅仅返回包含内容长度的头部信息。如果请求的格式不正确,则该方法将返回一个“HTTP BAD REQUEST”错误信息。通常情况下不需要重载该方法。

13.3.8  doPut方法:处理PUT请求

【功能说明】doPut()方法由service()方法调用,用于处理HTTP的PUT请求。

【基本语法】

protected void doPut (

    HttpServletRequest request,                 //  指定HttpServletRequest对象,包含客户端请求

    HttpServletResponse response         //  指定HttpServletResponse对象,包含Servlet的响应

)

    throws ServletException, IOException

该方法允许客户端将文件放置到服务器上,类似于通过FTP发送文件。如果请求的格式不正确,则该方法将返回一个“HTTP BAD REQUEST”错误信息。通常情况下不需要重载该方法。

13.3.9  doDelete方法:处理DELETE请求

【功能说明】doDelete()方法由service()方法调用,用于处理HTTP的DELETE请求。

【基本语法】

protected void doDelete (

    HttpServletRequest request,                  //  指定HttpServletRequest对象,包含客户端请求

    HttpServletResponse response                 //  指定HttpServletResponse对象,包含Servlet的响应

)

    throws ServletException, IOException

该方法允许客户端请求从服务器上移除文档或页面。如果请求的格式不正确,则该方法将返回一个“HTTP BAD REQUEST”错误信息。通常情况下不需要重载该方法。

13.3.10  doTrace方法:处理TRACE请求

【功能说明】doTrace()方法由service()方法调用,用于处理HTTP的TRACE请求。

【基本语法】

protected void doTrace (

    HttpServletRequest request,                  //  指定HttpServletRequest对象,包含客户端请求

    HttpServletResponse response                 //  指定HttpServletResponse对象,包含Servlet的响应

)

    throws ServletException, IOException

该方法将产生一个响应,该响应包含所有在TRACE请求中发送的头部信息。通常情况下不需要重载该方法。

13.3.11  doOptions方法:处理OPTIONS请求

【功能说明】doOptions()方法由service()方法调用,用于处理HTTP的OPTIONS请求。

【基本语法】

protected void doOptions (

    HttpServletRequest request,                  //  指定HttpServletRequest对象,包含客户端请求

    HttpServletResponse response                 //  指定HttpServletResponse对象,包含Servlet的响应

)

    throws ServletException, IOException

该方法自动决定支持哪一种HTTP方法,并返回一个适当的头部。例如,如果Servlet重载了doGet()方法,doOptions()方法将返回以下头部:

Allow: GET, HEAD, TRACE, OPTIONS

通常情况下不需要重载该方法。

13.3.12  getInitParameter方法:获取初始化参数

【功能说明】getInitParameter()方法用于返回初始化参数的值,参见13.2.5小节。

13.3.13  getInitParameterNames方法:获取所有初始化参数名

【功能说明】getInitParameterNames()方法用于返回所有初始化参数的名称集合,参见13.2.6小节。

13.3.14  getLastModified方法:获取最后修改时间

【功能说明】getLastModified()方法用于返回HttpServletRequest对象的最后修改时间。

【基本语法】

protected long getLastModified (

    HttpServletRequest request             //  发送给Servlet的HttpServletRequest对象

)

该方法返回的时间为自GMT 1970年1月1日以来的毫秒数。默认情况下,该方法返回?1,标识最后修改时间未知。

为了支持GET操作,必须重载该方法,使浏览器和代理服务器更加有效地工作,减少装载服务器和网络资源。

分享到:
评论

相关推荐

    HttpServlet 的Servlet的详解

    HttpServlet 的Servlet的详解

    Servlet详解与配置

    Servlet 是服务 HTTP 请求并实现 javax.servlet.Servlet 接口的 Java 类。Web 应用程序开发人员通常编写 Servlet 来扩展 javax.servlet.http.HttpServlet,并实现 Servlet 接口的抽象类专门用来处理 HTTP 请求。

    JavaWeb开发技术-Servlet接口及其实现类.pptx

    Servlet接口及其实现类 Java Servlet Jsp XML HTML Servlet接口及其实现类 Servlet接口及其实现类 Servlet接口 GenericServlet类 HttpServlet类 实现Servlet接口 继承GenericServlet类 Servlet接口及其实现类 方法...

    servlet.jar,httpservlet架包

    servlet.jar,httpservlet架包,servlet.jar,httpservlet架包

    javax.servlet.http.HttpServlet无法构建问题

    2个方法 简单有图 傻瓜式 javax.servlet.http.HttpServlet无法构建问题解决方法

    最简单 Servlet例子

    最简单 Servlet例子 Httpservlet 入门级的

    Servlet的运行机制

    2. 使用Eclipse创建Web Project,并创建一个Servlet继承HttpServlet,打印“Hello HttpServlet”在浏览器上。 3. 使用代码以及文字,说明Servlet的运行机制和生命周期 4. 实现用Servlet实现伪静态页面的访问 5. 实现...

    servlet-api.jar 及源文件

    servlet-api.jar 及源文件 javax.servlet HttpServlet 类的jar javax.zip 为源文件怎么添加源文件大家应该知道的。

    javax.servlet 的JAR包

    javax.servlet JAR包,解决找不到 import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; jar包问题

    Java Web应用开发:servlet.ppt

    本章内容 知道什么是Servlet,理解Servlet的作用 理解Servlet的生命周期 会通过继承HTTPServlet类的方式创建自己的Servlet类 知道如何访问servlet 理解web.xml中关于Servlet的配置 知道如何在servlet中取得客户端的...

    详解 问题:HttpServlet cannot be resolved to a type

    主要介绍了详解 问题:HttpServlet cannot be resolved to a type的相关资料,需要的朋友可以参考下

    Java_Servlet入门教程

    通过本章的学习让学生了解如何用 servlet 读写文件,用 servlet 访 问数据库;理解servlet 工作原理,servlet 共享变量的使用;掌握编译和安装 servlet,通过 JSP 页面调用 servlet,HttpServlet 类,掌握会话管理。

    HttpServlet

    HttpServlet 代码

    基于Servlet实现 Filter 拦截器

    创建一个名为 MyServlet 的 Servlet 类,该类扩展 HttpServlet 类并实现 doGet() 方法。在此方法中,您可以编写 Servlet 的逻辑,例如打印 "Hello MyServlet" 消息。 创建第一个 Filter,将其命名为 Filter01,扩展 ...

    servlet资源

    要创建一个 HTTP Servlet,请扩展 HttpServlet 类, 该类是用专门的方法来处理 HTML 表格的 GenericServlet 的一个子类。 HTML 表单是由 &lt;FORM&gt; 和 &lt;/FORM&gt; 标记定义的。表单中典型地包含输入字段(如...

    [java]Java_Servlet入门教程.rar_34S

    通过本章的学习让学生了解如何用 servlet 读写文件,用 servlet 访 问数据库;理解servlet 工作原理,servlet 共享变量的使用;掌握编译和安装 servlet, 通过 JSP 页面调用 servlet,HttpServlet 类,掌握会话管理

    java 出现问题javax.servlet.http.HttpServlet was not found解决方法

    主要介绍了java 出现问题javax.servlet.http.HttpServlet was not found解决方法的相关资料,需要的朋友可以参考下

    Servlet&GenericServlet&HttpServlet源码分析.zip_GenericServle_httpser

    Servlet&amp;GenericServlet&amp;HttpServlet源码分析,源码分析对于学习很有用

    servlet-api.jar

    servlet-api.jar 及源文件 javax.servlet HttpServlet 类的jar javax.zip 为源文件怎么添加源文件大家应该知道的。

    HttpServlet完全自学手册,由浅入深.

    HttpServlet完全自学手册,由浅入深.

Global site tag (gtag.js) - Google Analytics