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所示。
图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的详解
Servlet 是服务 HTTP 请求并实现 javax.servlet.Servlet 接口的 Java 类。Web 应用程序开发人员通常编写 Servlet 来扩展 javax.servlet.http.HttpServlet,并实现 Servlet 接口的抽象类专门用来处理 HTTP 请求。
Servlet接口及其实现类 Java Servlet Jsp XML HTML Servlet接口及其实现类 Servlet接口及其实现类 Servlet接口 GenericServlet类 HttpServlet类 实现Servlet接口 继承GenericServlet类 Servlet接口及其实现类 方法...
servlet.jar,httpservlet架包,servlet.jar,httpservlet架包
2个方法 简单有图 傻瓜式 javax.servlet.http.HttpServlet无法构建问题解决方法
最简单 Servlet例子 Httpservlet 入门级的
2. 使用Eclipse创建Web Project,并创建一个Servlet继承HttpServlet,打印“Hello HttpServlet”在浏览器上。 3. 使用代码以及文字,说明Servlet的运行机制和生命周期 4. 实现用Servlet实现伪静态页面的访问 5. 实现...
servlet-api.jar 及源文件 javax.servlet HttpServlet 类的jar javax.zip 为源文件怎么添加源文件大家应该知道的。
javax.servlet JAR包,解决找不到 import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; jar包问题
本章内容 知道什么是Servlet,理解Servlet的作用 理解Servlet的生命周期 会通过继承HTTPServlet类的方式创建自己的Servlet类 知道如何访问servlet 理解web.xml中关于Servlet的配置 知道如何在servlet中取得客户端的...
主要介绍了详解 问题:HttpServlet cannot be resolved to a type的相关资料,需要的朋友可以参考下
通过本章的学习让学生了解如何用 servlet 读写文件,用 servlet 访 问数据库;理解servlet 工作原理,servlet 共享变量的使用;掌握编译和安装 servlet,通过 JSP 页面调用 servlet,HttpServlet 类,掌握会话管理。
HttpServlet 代码
创建一个名为 MyServlet 的 Servlet 类,该类扩展 HttpServlet 类并实现 doGet() 方法。在此方法中,您可以编写 Servlet 的逻辑,例如打印 "Hello MyServlet" 消息。 创建第一个 Filter,将其命名为 Filter01,扩展 ...
要创建一个 HTTP Servlet,请扩展 HttpServlet 类, 该类是用专门的方法来处理 HTML 表格的 GenericServlet 的一个子类。 HTML 表单是由 <FORM> 和 </FORM> 标记定义的。表单中典型地包含输入字段(如...
通过本章的学习让学生了解如何用 servlet 读写文件,用 servlet 访 问数据库;理解servlet 工作原理,servlet 共享变量的使用;掌握编译和安装 servlet, 通过 JSP 页面调用 servlet,HttpServlet 类,掌握会话管理
主要介绍了java 出现问题javax.servlet.http.HttpServlet was not found解决方法的相关资料,需要的朋友可以参考下
Servlet&GenericServlet&HttpServlet源码分析,源码分析对于学习很有用
servlet-api.jar 及源文件 javax.servlet HttpServlet 类的jar javax.zip 为源文件怎么添加源文件大家应该知道的。
HttpServlet完全自学手册,由浅入深.