(1)、HTTP协议

Web浏览器和服务器通过HTTP协议在Internet上发送和接收消息。HTTP是一种基于请求/响应模式的协议。客户端发送一个请求,服务器端返回对该请求响应。

(2)、HTTP请求

个部分构成,分别是:

l  请求方法URI协议/版本

l  请求头(Request Header)

l  请求正文

下面是一个HTTP请求的例子:

GET/sample.jspHTTP/1.1

 

Accept:image/gif.image/jpeg,*/*

Accept-Language:zh-cn

Connection:Keep-Alive

Host:localhost

User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)

Accept-Encoding:gzip,deflate

 

username=ssss&password=1234

 

1>、请求方法URI协议/版本

以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1”代表协议和协议的版本。

种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet应用中,最常用的方法是GET和POST。

URL完整地指定了要访问的网络资源,通常只要给出相对于服务器的根目录的相对目录即可,因此总是以“/”开头,最后,协议版本声明了通信过程中使用HTTP的版本。

2>、请求头(Request Header)

请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。

Accept:image/gif.image/jpeg.*/*

Accept-Language:zh-cn

Connection:Keep-Alive

Host:localhost

User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)

Accept-Encoding:gzip,deflate.

3>、请求正文

请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息:

username=rrrro&password=1234

在以上的例子的HTTP请求中,请求的正文只有一行内容。当然,在实际应用中,HTTP请求正文可以包含更多的内容。

HTTP响应

个部分构成,分别是:

l  协议状态版本代码描述

l  响应头(Response Header)

l  响应正文

下面是一个HTTP响应的例子:

HTTP/1.1 200 OK

 

Server:Apache Tomcat/5.0.12

Date:Mon,6Oct2003 13:23:42 GMT

Content-Length:112

 

<html>
<head>

<title>HTTP响应示例<title>

</head>

<body>

Hello HTTP!

</body>

</html>

1>、协议 状态代码描述

表示成功):

HTTP/1.1 200 OK

2>、响应头(Response Header)

响应头也和请求头一样包含许多有用的信息,例如服务器类型、日期时间、内容类型和长度等:

  Server:Apache Tomcat/5.0.12

Date:Mon,6Oct2003 13:13:33 GMT

Content-Type:text/html

Last-Moified:Mon,6 Oct 2003 13:23:42 GMT

Content-Length:112

3>、响应正文

响应正文就是服务器返回的HTML页面:

  <html>
<head>

<title>HTTP响应示例<title>

</head>

<body>

Hello HTTP!

</body>

</html>

响应头和正文之间也必须用空行分隔。  

(3)HTTPServlet的功能

在了解具体的HTTP协议规范后,可以更好地理解HttpServlet的作用,它能够根据客户发出HTTP请求,生成相应的HTTP响应结果。HttpServlet首先必须读取HTTP请求的内容。Servlet容器负责创建HttpRequest对象,并把HTTP请求信息封装到HttpRequest对象中,这大大简化了HttpServlet解析请求数据的工作量。如果没有HttpRequest,HttpServlet只能直接处理Web客户发出的原始的字符数据,有了HttpRequest后,只要调用HttpServletRequest的相关方法,就可以方便地读取HTTP请求中任何一部分信息,HttpServletRequest中读取HTTP请求信息的常用方法参见下表

HttpServletRequest对象的常用方法

方法

描述

getCookie()

返回HTTP请求的Cookies

getHeader(String name)

返回参数指定的HTTP请求的Header数据

getRequestURI()

返回HTTP请求的URI

getQueryString()

返回HTTP请求数据中的查询字符串

getMethod()

返回HTTP请求方法

Servlet容器还向HttpServlet提供了HttpServletResponse对象,HttpServlet可以通过它来生成HTTP响应的每一部分内容,HttpServletResponse提供了生成响应数据Header的方法

HttpServletResponse对象的常用方法

方法

描述

addCookie(Cookie cookie)

向HTTP响应中加入Cookie

setHeader(String name,String value)

设置HTTP响应的Header,如果参数name对应的Header已经存在,则覆盖原来的Header数据

addHeader(String name,String value)

向HTTP响应中加入Header

(4)Servlet容器响应Web客户请求流程的UML时序图

,表示Servlet容器调用HttpServlet的service()方法,对于步骤2,箭头的起点和终点都指向Servlet容器,表示Servlet容器调用自身的方法来解析HTTP请求信息。

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客户

--------------------

++转载

HTTP与HttpServlet的更多相关文章

  1. The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path解决方案

    0.环境: win7系统,Tomcat9配置无误. 1.错误: 项目中某一.jps页面忽然出现错误,鼠标点上去为:The superclass "javax.servlet.http.Htt ...

  2. The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path。问题

    JSP页面顶端出现“红色”的报错信息:The superclass "javax.servlet.http.HttpServlet" was not found on the Ja ...

  3. 错误:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

    我们在利用Eclipse进行Java web开发时,可能会出现这样的错误:The superclass javax.servlet.http.HttpServlet was not found on ...

  4. eclipse中 报出The type javax.servlet.http.HttpServlet cannot be resolved. It is indirect错误

    在Myeclispe部署项目后 报错 The type javax.servlet.http.HttpServlet cannot be resolved. It is indirect错误 如果在M ...

  5. Servlet简介与Servlet和HttpServlet运行的流程

    1.Servlet      [1] Servlet简介         > Server + let         > 意为:运行在服务器端的小程序.         > Ser ...

  6. Servlet/JSP-03 HttpServlet

    一. GenericServlet GenericServlet本身是一个抽象类,并且实现了Servlet和ServletConfig接口 其在内部定义了一个私有的ServletConfig类型的变量 ...

  7. ubuntu下eclipse遇到The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

    JSP页面顶端出现“红色”的报错信息:The superclass "javax.servlet.http.HttpServlet" was not found on the Ja ...

  8. servlet、genericservlet、httpservlet之间的区别

    转自:http://blog.csdn.net/rat9912345/article/details/5161789 当编写一个servlet时,必须直接或间接实现servlet接口,最可能实现的方法 ...

  9. HttpServlet 详解(注!仿)

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

  10. Java Servlet(六):HttpServlet实现原理(jdk7+tomcat7+eclipse)

    本篇记录了HttpServlet的实现过程,主要讲述了如何依赖Servlet,GenericServlet实现的原理. HttpServlet实现过程:1.是一个Servlet,继承自GenericS ...

随机推荐

  1. c# 可以设置透明度的 Panel 组件

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; u ...

  2. IOS开发-视频,音频,录音简单总结

    /***** * 1. 视频播放 * *  @格式:mp4 mov m4v m2v 3gp 3g2 * *  @系统框架使用:#import <MediaPlayer/MediaPlayer.h ...

  3. ios外包公司—北京动点软件分享:IOS工程自动打包并发布脚本实现

    前言 IOS的开发过程中,当需要给测试人员发布测试包的时候,直接使用xcode来做的效率是非常低下的.尤其是当有一点小改动需要重新出包时,那简直是个折磨的人的工作.通过一番研究后,遂决定写一系列脚本, ...

  4. 在mui中遇到的内容覆盖导航栏的问题

    一.问题描述: 公司项目中为了让内容以页面的形式显示,并要格式化页面内容,采用了百度的UEditor编辑器来显示内容,但是遇到了一个问题就是当下拉页面到一定距离之后,页面上方的导航栏会被内容遮盖. 二 ...

  5. iMac一体机安装苹果和Win7双系统

    前几天,有个客户说有一苹果的一体机,想装苹果和Win7双系统.约好了时间,带上工具就过去了.去的路上,用手机上网查了一下苹果电脑装双系统的过程.虽然以前也有给苹果的电脑安装过双系统,但次数不多而且时间 ...

  6. SqlHelper文件复习

    SqlHelper这是个cs类文件,将经常使用到的数据库操作写到一个文件下,方便调用,以及减少代码量.使用这个文件的前提是要建立一个app.config文件,并且引用configuration程序集: ...

  7. [工具开发] Perl 爬虫脚本--从美国国家漏洞数据库抓取实时信息

    一.简介 美国国家漏洞数据库收集了操作系统,应用软件的大量漏洞信息,当有新的漏洞出现时,它也会及时发布出来. 由于信息量巨大,用户每次都需要到它的网站进行搜索,比较麻烦.如果能有个工具,每天自动分析它 ...

  8. 103. Binary Tree Zigzag Level Order Traversal

    Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...

  9. 64. Minimum Path Sum

    Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which ...

  10. Redis内存使用优化与存储(转)

    Redis常用数据类型 Redis最为常用的数据类型主要有以下五种: String Hash List Set Sorted set 在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部 ...