Web之HTTP协议

一、HTTP协议


1、当请求的资源中含有:img link <script src=""/>浏览器都会自动发出请求

     浏览器访问多图网页
    在一个HTML页面中如果包含<img>标记的话,当浏览器解析到这些标记时,还会向服务器请求访问标记中指定的文件,即再次建立连接并发出HTTP请求。

     *http 1.0和http 1.1的区别:

         a. 1.0中链接是无状态的,浏览器与WEB服务器的连接过程是短暂的,每次连接只处理一个请求和响应。对每一个页面的访问,

          浏览器与WEB服务器都要建立一次单独的连接。

     b.1.1中链接是有状态的。在一个TCP连接上可以传送多个HTTP请求和响应。增加了更多的请求头和响应头

     

2、组成
     请求部分:客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。

     一个完整的HTTP请求包括 一个请求行、若干消息头、以及请求正文,其中的一些消息头和正文都是可选的,只有当请求以post方式时,才会有请求征文 
        

               常用的请求方式:

               GET:默认的请求方式。http://localhost:8080/hello/4.html?username=abc&password=456
                    如果有表单数据,会出现在地址栏中,实际上是作为请求资源路径的一部分出现的。
                    不安全。长度有限制,一般情况下不能超过1k
               POST:使用表单的method属性来指定。POSt方式的请求正文会出现
                    username=abc&password=456。木有长度限制。(建议使用的方式)
           *常用的响应码:
               200 表示一切正常,返回的是正常请求结果
               302、307 (临时重定向)  指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出

              
               304   (未修改)表示客户机缓存的版本是最新的,客户机可以继续使用它,无需到服务器请求。
               404   (找不到)服务器上不存在客户机所请求的资源。
               500   (服务器内部错误)一般情况下是代码错误服务器端的程序发生错误
           *消息头的作用:用户客户端和服务器端之间互相传递附加信息(枕边细雨)。
               请求消息头:
                    Accept:告知服务器,浏览器可接受的MIME类型
                         MIME类型:文件系统文件类型用文件的扩展名区别的。
                              MIME类型由大类型/小类型组成的。比如:text/html. text/css text/js.image/bmp;image/jpeg;(参考Tomcat\conf\web.xml)
                    Accept-Charset: 告知服务器,浏览器通过这个头告诉服务器,它支持哪种字符集
                    *Accept-Encoding:告知服务器,浏览器支持的压缩格式,浏览器能够进行解码的数据编码方式,比如gzip
                    Accept-Language:告知服务器,浏览器所希望的语言种类
                    *Referer:告知服务器,当前请求的URL来自哪个地址。(防盗链)

                         ** Referer表示该页面来自哪一个页面

               Referer请求头是比较有用的一个请求头,它可以用来做统计工作,也可以用来做防盗链。

统计工作

:我公司网站在百度上做了广告,但不知道在百度上做广告对我们网站的访问量是否有影响,那么可以对每个请求中的
 Referer 进行分析,如果 Referer为百度的很多,那么说明用户都是通过百度找到我们公司网站的。

防盗链

:我公司网站上有一个下载链接,而其他网站盗链了这个地址,例如在我网站上的 index.html 页面中有一个链接,点击即可下载 JDK7.0 ,但有某个人的微博中盗链了这个资源,它也有一个链接指向我们网站的 JDK7.0 ,也就是说登录它的微博,点击链接就可以从我网站上下载 JDK7.0 ,这导致我们网站的广告没有看,但下载的却是我网站的资源。这时可以使用 Referer 进行防盗链,在资源被下载之前,我们对 Referer 进行判断,如果请求来自本网站,那么允许下载,如果非本网站,先跳转到本网站看广告,然后再允许下载。

                    *Content-Type: application/x-www-form-urlencoded:表单的数据类型,说明会使用url格式编码数据;url编码的数据都是以“%”为前
    缀,后面跟随两位的16进制,例如“传智”这两个字使用UTF-8的url编码用为“%E4%BC%A0%E6%99%BA”;

                    If-Modified-Since: Wed, 02 Feb 2011 12:04:56 GMT利用这个头与服务器的文件进行比对,如果一致,则从缓存中直接读取文件。
                    User-Agent:浏览器类型.
                    Content-Length:表示请求消息正文的长度
                    *****Cookie:这是最重要的请求头信息之一 ,会话有关
               响应消息头:
                    *Location: http://www.it315.org/index.jsp告知浏览器,新的资源的位置(结合302响应码来用,实现请求重定向)

                eg: //设置状态码,302/307表示重新定向

                       response.setStatus(302);

                       //设置头,Location属性,使其重定向

                       response.setHeader( "Location", "/Test_day07_httpWatchTest//servlet/ServletDemo2" );

                    *Content-Encoding: 告知浏览器,服务器发送的数据采用的编码类型gzip
                    *Content-Length: 80 告诉浏览器正文的长度
                    *Content-Type: text/html; charset=GB2312告诉浏览器,服务器发送的正文内容的MIME类型
                    *Refresh:1  告诉浏览器,刷新频率。单位是秒
                    *Content-Disposition: attachment; filename=aaa.zip告诉浏览器,以下载的形式打开数据

                    eg:            

          //告诉浏览器以下载的方式打开

          response.setHeader("Content-Disposition", "attachment;filename=1.gif") ;

                    *****Set-Cookie会话有关
                    *//告诉客户端不要缓存
                    Expires: -1    (有效时间,单位是毫秒值。取值只要比当前时间小)
                    Cache-Control: no-cache (1.1) 
                    Pragma: no-cache   (1.0)

                

  

二、Servlet入门
1、Servlet的编写步骤:
a、建立一个标准的JavaWeb应用的目录结构
b、在WEB-INF\classes目录下建立一个HelloServlet.java,内容如下:
package com.itheima.servlet;
import javax.servlet.*;
import java.io.*;

public class HelloServlet extends GenericServlet{
     public void service(ServletRequest req,ServletResponse res)
                      throws ServletException,IOException{
          res.getWriter().write("Hello Servlet");
     }
}
c、进入WEB-INF\classes目录,编译。
注意:要把servlet-api.jar加入到构建路径中。set classpath=%classpath%;C:\apache-tomcat-6.0.37\lib\servlet-api.jar
编译,注意有包名。javac -d . HelloServlet.java
d、修改应用中的web.xml,给Servlet类一个映射地址:
<?xml version="1.0" encoding="GBK"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">
     <servlet>
          <!--给你的Servlet类取一个名字-->
          <servlet-name>HelloServlet</servlet-name>
          <servlet-class>com.itheima.servlet.HelloServlet</servlet-class>
     </servlet>
     <servlet-mapping>
          <!--给Servlet一个映射地址-->
          <servlet-name>HelloServlet</servlet-name>
          <url-pattern>/hello</url-pattern>
     </servlet-mapping>
</web-app>
e、部署到Tomcat中。访问http://localhost:8080/firstServlet/hello即可看到程序的输出内容

三、Servlet的生命周期
Servlet的生命周期:
Servlet对象默认情况下是用户第一次访问时由容器创建。
日后就驻留Tomcat内存了。
针对用户的每次请求,Tomcat都会调用service方法为客户端服务。
当应用被卸载了,或者TOmcat挂了,会调用destory方法。

     <servlet>
          <!--给你的Servlet类取一个名字-->
          <servlet-name>HelloServlet</servlet-name>
          <servlet-class>com.itheima.servlet.HelloServlet</servlet-class>
          <load-on-startup>2</load-on-startup><!--启动顺序,应用被服务器加载时就完成了初始化-->
     </servlet>

四、Servlet的配置
     Servlet的映射<url-pattern/>可以使用通配符(*)
          使用通配符有2中形式:
          a、以*开头,以其他什么东西结尾。如*.do
          b、以/开头,必须以*结尾。如 /action/*
          /*匹配任意的东东
         
          注意:
          使用通配符有2中形式,绝对匹配最高-------》b优先级比a高-----》从前往后找对相近的
         
          注意:(知道)
          如果一个servlet的映射路径为一个/,那么它就是默认的Servlet。该Servlet会处理没有映射路径的所有请求。
         
     更改MyEclipse10.6生成的Servlet模板:
     1、关闭MyEclipse
     2、找到MyEclipse的安装目录的上级目录。
     3、搜索com.genuitec.eclipse.wizards*.jar
     4、打开,找到templates\Servlet.java,这就是模板文件。(做好备份,再修改)
     5、替换jar包中的Servlet.java
     6、重启MyEclipse,生效

时间: 2024-12-20 23:21:29

Web之HTTP协议的相关文章

java web基于snmp协议的局域网远程电源管理系统

问题描述 java web基于snmp协议的局域网远程电源管理系统 5C 准备通过java web做基于snmp协议的局域网远程电源管理系统,(学校机房有3层,1200台电脑以上)以下是我的想法,请各位指导提建议哈,在此感谢呀 通过mib borwer收集第三方电源有关的mib库,保存到枚举,集合或xml中 遍历mib库,遍历电脑ip,管理端通过snmp的get获取agent端电源有关信息,进行数据的处理然后保存到db(通过异步,队列,多线程或分批方式定时获取) 设置报警阈值,agent端定时t

Web版微信协议分析—版本2

微信web协议分析(微信网页版 wx2.qq.com) 1.打开首页,分配一个随机uuid,2.根据该uuid获取二维码图片.3.微信客户端扫描该图片,在客户端确认登录.4.浏览器不停的调用一个接口,如果返回登录成功,则调用登录接口5.此时可以获取联系人列表,可以发送消息.然后不断调用同步接口.6.如果同步接口有返回,则可以获取新消息,然后继续调用同步接口. 源码地址:https://github.com/biezhi/wechat-robot 执行流程 +--------------+ +--

《Web异步与实时交互——iframe AJAX WebSocket开发实战》—— 1.1 基于HTTP协议的Web交互

1.1 基于HTTP协议的Web交互 HTTP协议(Hyper Text Transport Potocol,超文本传输协议),是基于服务器/客户端模式的无连接.无状态的协议.基于HTTP协议的Web应用中,所有的请求是由客户端发起的,服务器处于被动响应的地位.然而,服务器却相当于是信息的发布者,当有新信息产生时,服务器并不能主动将新信息发送给客户端,必须等待客户端主动发起访问请求建立连接后才能发送给客户端. 当遇到实时监控.即时通信.在线互动等的Web交互开发需求(如设备监控.聊天室.股票行情

ios xmpp探索研究:了解什么是XMPP协议

Extensible Messaging and Presence Protocol (XMPP) 简介 本文来转自: http://www.ibm.com/developerworks/cn/xml/tutorials/x-realtimeXMPPtut/section3.html  XMPP 简介 本小节将简要介绍 XMPP,它的起源,以及为何它是一个适合实时 web 通信的协议.您将检查 XMPP 通信设置的组件,并查看展示这些组件如何使用的示例. Web 标准和 XMPP XMPP 是一

教你学会XML Web Service 的基础

web|xml 什么是 XML Web Service? XML Web Service 是在 Internet 上进行分布式计算的基本构造块.开放的标准以及对用户和应用程序之间的通信和协作的关注产生了这样一种环境,在这种环境下,XML Web Service 成为应用程序集成的平台.应用程序是通过使用多个不同来源的 XML Web Service 构造而成的,这些服务相互协同工作,而不管它们位于何处或者如何实现. 有多少个构建 XML Web Service 的公司,就可能有多少种 XML W

全局XML Web服务体系结构概述

web|web服务|xml|体系 全局XML Web服务体系结构(Global XML Web Services Architecture,下面简称GXA)平台是一个新术语,包括Web服务交互领域的许多制定的新标准.相当多的大公司正在GXA的幕后进行合作,包括微软和IBM. GXA的主要目标是定义指定Web服务的协议新家族的语法和语义,这些协议把SOAP和XML的基本功能带到下一代相互适应性中.虽然在过去的几年中,已经做了大量的工作来创建用于Web服务的标准,但是仍然有很多工作要做.这些工作由增

Web Service简介

web 1.定义由两部分组成·SOAP--Web Service之间的基本通信协议.·WSDL--Web Service描述语言,它定义了Web Service做什么,怎么做和查询的信息. 2.简单的Web Service实现包含四个基本步骤·创建Web Service的商业逻辑(通常是一些Java类)·将这些Java类部署到一个SOAP服务器上·生成客户访问代码·部署客户应用注意:WSDL等文件的生成通常是利用厂商提供的工具来完成 3.SOAP Soap 是 XML Web Service 的

XML Web Service 基础 (转微软MSDN)

web|xml|微软 XML Web Service 基础 Roger WolterMicrosoft Corporation 2001 年 12 月 摘要:本文概述了 XML Web Service 对于开发人员的价值,同时还介绍了 SOAP.WSDL 和 UDDI. 目录 什么是 XML Web Service? SOAP WSDL UDDI 其他内容 什么是 XML Web Service?XML Web Service 是在 Internet 上进行分布式计算的基本构造块.开放的标准以及

WEB服务有待实践的检验[转]

web|web服务 SOAP,WSDL,和UDDI定义了XML中的WEB服务,但他们并不能保证会为软件架构中的组件带来好处   .要应用WEB服务,协议需要更加清晰,工具需要更加好用,而且,IT项目经理和开发商也需要在思想上有所转变. 但WEB服务在通信中的优点,诸如可重用组件和企业应用中的易集成性,已经使得微软和IBM惊异于它的高效.尽管WEB服务的应用尚在实验阶段,媒体已经将这些高级的概念深入人心.尽管开发者和反对者意见不同,但他们都从WEB服务中得到了大量的机会. 这里有一些开发者在WEB