解析Tomcat之HttpServlet详解

  Servlet的框架是 由两个Java包组成:javax.servlet和javax.servlet.http. 在javax.servlet包中定义了所有的Servlet类都必须实现或扩展的的通用接口和类.在javax.servlet.http包中定义了采 用HTTP通信协议的HttpServlet类

Servlet的框架的核心是javax.servlet.Servlet接口,所有的Servlet都必须实现这一接口.在Servlet接口中定义了5个方法,其中有3个方法代表了Servlet的声明周期:

  init方法,负责初始化Servlet对象
  service方法,负责相应客户的请求
  destory方法,当Servlet对象退出声明周期时,负责释放占有的资源

  当Web容器接收到某个Servlet请求时,Servlet把请求封装成一个HttpServletRequest对象,然后把对象传给Servlet的对应的服务方法.

  HTTP的请求方式包括DELETE,GET,OPTIONS,POST,PUT和TRACE,在HttpServlet类中分别提供了相应的服务方法, 它们是,doDelete(),doGet(),doOptions(),doPost(), doPut()和doTrace().

HttpServlet的功能

  HttpServlet 首先必须读取Http请求的内容。Servlet容器负责创建HttpServlet对象,并把Http请求直接封装到HttpServlet对象中,大 大简化了HttpServlet解析请求数据的工作量。HttpServlet容器响应Web客户请求流程如下:

1)Web客户向Servlet容器发出Http请求;

2)Servlet容器解析Web客户的Http请求;

3)Servlet容器创建一个HttpRequest对象,在这个对象中封装Http请求信息;

4)Servlet容器创建一个HttpResponse对象;

5)Servlet容器调用HttpServlet的service方法,把HttpRequest和HttpResponse对象作为service方法的参数传给HttpServlet对象;

6)HttpServlet调用HttpRequest的有关方法,获取HTTP请求信息;

7)HttpServlet调用HttpResponse的有关方法,生成响应数据;

8)Servlet容器把HttpServlet的响应结果传给Web客户。

二、创建HttpServlet的步骤——“四部曲”

1)扩展HttpServlet抽象类;

2)覆盖HttpServlet的部分方法,如覆盖doGet()或doPost()方法;

3)获取HTTP请求信息。通过HttpServletRequest对象来检索HTML表单所提交的数据或URL上的查询字符串;

4)生成HTTP响应结果。通过HttpServletResponse对象生成响应结果,它有一个getWriter()方法,该方法返回一个PrintWriter对象。

举个例子如下:

package mypack;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class HelloServlet extends HttpServlet//第一步:扩展HttpServlet抽象类?
{
?//第二步:覆盖doGet()方法
?public void doGet(HttpServletRequest request,
HttpServletResponse response)throws IOException,ServletException{
//第三步:获取HTTP请求中的参数信息
String clientName=request.getParameter("clientName");
if(clientName!=null)
clientName=new String(clientName.getBytes("ISO-8859-1"),"GB2312");
else
clientName="我的朋友"; //第四步:生成HTTP响应结果
PrintWriter out;
String title="HelloServlet";
String heading1="HelloServlet的doGet方法的输出:";
//set content type
response.setContentType("text/html;charset=GB2312");
//write html page
out=response.getWriter();
out.print("<HTML><HEAD><TITLE>"+title+"</TITLE>");
out.print("</HEAD><BODY>");
out.print(heading1);
out.println("<h1><p>"+clientName+":您好</h1>");
out.print("</BODY></HTML>"); out.close();
?}
}
在web.xml中添加

<servlet>
  <servlet-name>HelloServlet</servlet-name>
  <servlet-class>mypack.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>HelloServlet</servlet-name>
  <url-pattern>/hello</url-pattern>
</servlet-mapping>

通过URL访问HelloServlet:

注意:

实现service方法。

Servlet 的主要功能是接受从浏览器发送过来的HTTP请求(request),并返回HTTP响应(response)。这个工作是在service方法中完成 的。service方法包括从request对象获得客户端数据和向response对象创建输出。

如果一个Servlet 从javax.servlet.http.HttpServlet继承,实现了doPost或doGet方法,那么这个Servlet只能对POST或 GET做出响应。如果开发人员想处理所有类型的请求(request),只要简单地实现service方法即可(但假如选择实现service方法,则不 必实现doPost或doGet方法,除非在service方法的开始调用super.service())。

解析Tomcat之HttpServlet详解的更多相关文章

  1. tomcat的配置详解:[1]tomcat绑定域名

    转自:http://jingyan.baidu.com/article/7e440953dc096e2fc0e2ef1a.html tomcat的配置详解:[1]tomcat绑定域名分步阅读 在jav ...

  2. 【转】HttpServlet详解

    [转]HttpServlet详解 Servlet的框架是由两个Java包组成:javax.servlet和javax.servlet.http. 在javax.servlet包中定义了所有的Servl ...

  3. HttpServlet 详解(基础)

    HttpServlet详解 大家都知道Servlet,但是不一定很清楚servlet框架,这个框架是由两个Java包组成:javax.servlet和javax.servlet.http. 在java ...

  4. tomcat常用配置详解和优化方法

    tomcat常用配置详解和优化方法 参考: http://blog.csdn.net/zj52hm/article/details/51980194 http://blog.csdn.net/wuli ...

  5. 数据结构图文解析之:队列详解与C++模板实现

    0. 数据结构图文解析系列 数据结构系列文章 数据结构图文解析之:数组.单链表.双链表介绍及C++模板实现 数据结构图文解析之:栈的简介及C++模板实现 数据结构图文解析之:队列详解与C++模板实现 ...

  6. Linux下tomcat的安装详解

    Linux下tomcat的安装详解 来源: ChinaUnix博客 日期: 2007.01.21 22:59 (共有0条评论) 我要评论 一,安装前的准备:1,Linux版本:我的是企业版.(至于红帽 ...

  7. [转帖]Tomcat目录结构详解

    Tomcat目录结构详解 https://www.cnblogs.com/veggiegfei/p/8474484.html 之前应该是知道一点 但是没有这么系统 感谢原作者的描述. 1.bin: 该 ...

  8. Tomcat的配置文件详解

    Tomcat的配置文件详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Tomcat的配置文件 Tomcat的配置文件默认存放在$CATALINA_HOME/conf目录中, ...

  9. linux ssh使用深度解析(key登录详解)

    linux ssh使用深度解析(key登录详解) SSH全称Secure SHell,顾名思义就是非常安全的shell的意思,SSH协议是IETF(Internet Engineering Task ...

随机推荐

  1. secureCRT The remote system refused the connection.解决办法

    使用远程登录工具SecureCRT登陆ubuntu的时候遇到了这个问题: secureCRT The remote system refused the connection 这个问题的原因是是Ubu ...

  2. CSS文字超出省略

    .ellipsis { white-space:nowrap overflow:hidden text-overflow:ellipsis }

  3. HTML5 worker计数器简单示例

    效果图: index.html var w; // 开始 function startWorker() { if (typeof (Worker) !== "undefined") ...

  4. js正则删除字符串中的部分内容

    // 例如 let a = `(ID)444` a.replace(/\(ID\)/ig, '') // 结果 "444"

  5. 【leetcode】388. Longest Absolute File Path

    题目如下: Suppose we abstract our file system by a string in the following manner: The string "dir\ ...

  6. 如何在webpack中使用loader

    一.什么是loader loader 用于对模块的源代码进行转换.loader 可以使你在 import 或"加载"模块时预处理文件.因此,loader 类似于其他构建工具中“任务 ...

  7. C/C++ fgets

    {     str_normalize_init();    unsigned options = SNO_TO_LOWER | SNO_TO_HALF;    if (argc > 1)    ...

  8. 关于linux redhat及免费的问题

    我想下载一个redhat的免费版,这个免费版是不是就不叫redhat了? 是Fedora吗? 不要推荐 红旗 以及其它的版本了,谢谢!!! 007struggle | 浏览 12141 次 发布于20 ...

  9. (1)centos7 安装与分区

    xxxxx 系统运行级别 /etc/inittab #

  10. 正则表达式Pattern类的基本用法

    public void mailRegex() { // 要验证的字符串 String str = "shiruo.hdp@taobao.com"; // 邮箱验证规则 Strin ...