Web服务器常用配置
    
    
    
      1.Web系统采用B/S结构通信的:Browser --- Server
    
    
    
      1)浏览器向服务器发送访问目标资源请求(请求)
    
    
    
      2)服务器根据请求的目标资源路径,在服务器端进行查找(请求查找)
    
    
    
      3)服务器会将查找结果返回给客户端浏览器(响应)
    
    
    
      通信结构图:
    
  
     
  
    
      2.什么是Web服务器?
    
    
    
      包括硬件环境和软件环境,在网络中安装web服务器软件的计算机
    
    
    
      3.Tomcat服务器安装和配置
    
    
    
      1)在Apache官网上下载tomcat服务器
    
    
    
      *一般采用zip格式的(可直接解压使用)
    
    
    
      2)解压缩tomcat
    
    
    
      *不要使用含有空格和中文目录的文件夹
    
    
    
      3)启动tomcat之前,配置JAVA_HOME环境变量 ---- 配置JDK安装路径
    
    
    
      *注意JAVA_HOME使用下划线
    
    
    
      4)启动tomcat服务器
    
    
    
      双击bin/startup.bat(如果使用linux双击bin/startup.sh)
    
    
    
      输入http://localhost:8080/ 访问tomcat网站主页
    
    
    
      5)因为网站通过HTTP协议访问,HTTP协议默认端口80 ---- 修改tomcat服务器启动端口80
    
    
    
      修改conf/server.xml
    
    
    
      <Connector port="80" protocol="HTTP/1.1"
    
    
    
                     connectionTimeout="20000"
    
    
    
                     redirectPort="8443" />  将8080修改为80
    
    
    
      访问localhost:80端口  ----- 省略端口写法 http://localhost访问站点
    
    
    
      4.tomcat启动问题
    
    
    
      1)窗口一闪然后消失 ----- 编辑startup.bat,在文件末尾加入pause指令,再次运行,读取错误原因,根据原因解决
    
    
    
      *JAVA_HOME路径必须是JDK不可以是JRE
    
    
    
      2)端口占用问题
    
    
    
      发现端口被占用后,通过cmd命令行,查看占用端口进程 ----  netstat –ano
    
    
    
      在任务管理器关闭该进程
    
    
    
      3)CATALINA_HOME环境变量
    
    
    
      指定tomcat安装位置(该环境变量可以不配置) ----  如果配置出错,tomcat将无法启动
    
  
    
      5.各种版本对应问题
    
    
    
      Tomcat版本    Servlet/JSP版本    JavaEE版本    运行环境
    
    
    
      4.1              2.3/1.2            1.3            JDK1.3
    
    
    
      5.5              2.4/2.0            1.4            JDK1.4
    
    
    
      6.0              2.5/2.1            5.0            JDK5.0
    
    
    
      7.0              3.0/2.2            6.0            JDK6.0
    
    
    
      Tomcat 支持Servlet和JSP规范,Servlet技术属于JavaEE规范 
    
    
    
      * 随着javaEE 版本提升 -- Servlet版本提升 --- 运行Servlet环境Tomcat版本提升 
    
    
    
      * tomcat运行需要JDK 环境版本 
    
    
    
    
      如果编写 JavaEE5.0工程 需要哪个版本tomcat可以运行? 6.0 7.0
    
  
    
      6.Tomcat目录结构
    
    
    
      bin --- 存放tomcat启动关闭程序
    
    
    
      conf --- 存放tomcat配置文件
    
    
    
      lib --- tomcat运行需要jar包
    
    
    
      logs --- tomcat日志文件
    
    
    
      webapps --- 网站发布目录(所有网站可以发布到该目录)
    
    
    
      work --- 存放工程运行时,产生数据文件(JSP翻译Servlet、Session持久化数据)
    
    
    
      7.网站的标准目录结构
    
    
    
      站点根目录
    
    
    
          -------  静态web资源、jsp
    
    
    
          -------  WEB-INF目录
    
    
    
                        -------  classes目录 (保存,class文件)
    
    
    
                        --------  lib  目录 (当前网站需要jar包) 
    
    
    
                        -------- web.xml (网站配置文件)
    
    
    
      * WEB-INF目录不是必须的,没有java动态程序代码, 可以没有WEB-INF 目录
    
    
    
      * WEB-INF目录下资源不能被浏览器直接访问
    
    
    
      8.网站开发好后,如果想让网站被外界访问,需要将网站发布到 web服务器tomcat上 (虚拟目录映射)
    
    
    
      Tomcat发布网站三种方式
    
    
    
      原理:
    
    
    
      配置<Context>元素
    
    
    
      1)配置tomcat/conf/server.xml
    
    
    
      在<Host name=”localhost”>内部添加<Context>元素
    
    
    
      <Context path="/aa" docBase="C:\AA" /> ---- 为网站配置虚拟目录 /aa ------映射到 c:\AA目录
    
    
    
      *修改server.xml 重启tomcat
    
    
    
      2)$CATALINA_HOME/conf/[enginename]/[hostname]/xxx.xml
    
    
    
          tomcat/conf/Catalina/localhost/xxx.xml
    
    
    
          在conf下新建Catalina
    
    
    
      在Catalina下新建 localhost
    
    
    
      在localhost下 新建 bb.xml 
    
    
    
      <Context docBase="C:\BB" /> --- 为什么不需要写path --- 虚拟目录就是文件名bb ,path默认/bb
    
    
    
      *添加bb.xml,不用重启tomcat
    
    
    
      *推荐第二种写法(不需要重启服务器,而且出错不会影响其它工程运行),尽量不要使用第一种
    
    
    
      3)将网站复制到tomcat/webapps
    
    
    
      *不用重启tomcat
    
    
    
      *tomcat会根据文件夹名称,自动生成虚拟路径
    
    
    
      9.虚拟目录?
    
    
    
      当浏览器访问网站采用访问路径 /aa /bb /abc ----- 这些路径不一定是服务器真实存在目录,只是浏览器在访问这些路径时,映射到指定网站跟目录
    
    
    
      10.WAR包制作?
    
    
    
      先用压缩软件将网站制作xx.zip --- 重命名 xx.wat ---- 复制war到tomcat/webapps
    
    
    
      11. Tomcat Manager 使用 (程序员管理已经发布到tomcat网站)
    
    
    
      *conf/tomcat-users.xml  加入
    
    
    
      <role rolename="manager"/>
    
    
    
      <user username="tomcat" password="s3cret" roles="manager"/>
    
    
    
      * 重启服务器 
    
    
    
      * 这个功能默认不要开启 (安全问题)
    
  
12.域名解析完整过程图:
    
      在tomcat内部同时 架设多个网站 --- 百度网站、谷歌网站 
    
    
    
      * 虚拟主机技术  ---- 在tomcat中配置 <Host> 元素 
    
    
    
      1)搭建tomcat中网站 --- baidu
    
    
    
      2)在c盘 新建虚拟主机目录 baidu , 在虚拟主机目录中新建网站根目录 main , 将百度网站复制main 目录中
    
    
    
      3)在tomcat中新建
    
  
      
        <
      
      
        Host
      
      
        >
      
      
         
Host name="www.baidu.com"  appBase="C:\baidu"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      
      
        </
      
      
        Host
      
      
        >
      
    
  
    
      * 重启tomcat
    
    
    
      4)修改本机hosts文件 
    
    
    
      * win7 系统 ,将hosts文件复制到桌面修改,改后复制回去 
    
    
    
      192.168.1.145   www.baidu.com
    
    
    
      5)将c:\baidu\main 网站根目录 配置为缺省虚拟目录
    
  
      
        <
      
      
        Context 
      
      
        path
      
      
        =""
      
      
         docBase
      
      
        ="main"
      
      
        />
      
    
  
    
      ----- 配置缺省虚拟目录 /main 省略 
    
    
    
      http://www.baidu.com/baidu.htm ---- 访问本机百度 
    
    
    
      6)将main目录 baidu.htm 配置 网站欢迎页面 
    
    
    
      新建WEB-INF目录 下新建web.xml
    
  
      
        <?
      
      
        xml version="1.0" encoding="ISO-8859-1"
      
      
        ?>
      
      
        <
      
      
        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"
      
      
        >
      
      
        <
      
      
        welcome-file-list
      
      
        >
      
      
        <
      
      
        welcome-file
      
      
        >
      
      baidu.htm
      
        </
      
      
        welcome-file
      
      
        >
      
      
        </
      
      
        welcome-file-list
      
      
        >
      
      
        </
      
      
        web-app
      
      
        >
      
    
    
  
    
      hosts应用
    
    
    
      1、限制用户上网 ,网站禁止访问
    
    
    
      2、软件破解
    
  
    
      13.缺省虚似主机 DefaultHost 
    
    
    
      <Engine name="Catalina" defaultHost="localhost"> ----- 一个tomcat中可以配置多台虚拟主机,但是只有一台虚拟主机。客户端可以直接通过ip访问
    
    
    
      http://www.baidu.com ---- 客户端通过域名访问
    
    
    
      http://192.168.1.145 ---- 通过ip访问 
    
    
    
    
      只有缺省虚拟主机可以通过ip访问
    
    
    
    
      14. MyEclipse 整合 tomcat 进行 web 程序开发 
    
    
    
      1)配置myeclipse 内部tomcat 插件
    
    
    
      配置tomcat6 在 window - preferences -- tomcat6 
    
    
    
      检查JDK 版本是否符合
    
    
    
      Launch 默认采用 debug model 
    
    
    
      2)将tomcat插件设置为enable  浏览tomcat目录后 配置ok
    
    
    
      3)在MyEclipse中通过插件 tomcat6 --- start  实际上 运行tomcat/bin/startup.bat 
    
    
    
      4)在console窗口 查看tomcat日志 
    
    
    
      * tomcat6 --- stop server 正常关闭tomcat  调用 tomcat/bin/shutdown.bat 
    
    
    
      * 如果直接点击 myeclipse console 窗口 红色按钮 --- 强行停止tomcat 
    
    
    
    
      应用:
    
    
    
      在myeclipse中编写一个web工程
    
    
    
      1)创建web project
    
    
    
      context root url 默认工程名 
    
    
    
      Javaee 规范版本 
    
    
    
      * 在使用javaee5 规范版本时,默认支持jstl技术
    
    
    
      2)新建html 将html编辑器 设置 html editor 
    
    
    
      window -- preference ---- general ---- editor --- File Associations 
    
    
    
      3)发布工程到tomcat 
    
    
    
      原理:将当前web工程复制tomcat/webapps 
    
    
    
      * 修改 发布虚拟目录名称 --- 右键工程属性 --- myeclipse ---web ----修改Web Context-root
    
  
    
      HTTP协议
    
    
    
      1.HTTP协议特征
    
    
    
      1)基于TCP传输协议
    
    
    
      OSI七层网络体系结构
    
    
    
      TCP是传输层协议
    
    
    
      HTTP是应用层协议,基于TCP协议
    
    
    
    
      TCP特征:三层握手
    
    
    
      例如
    
    
    
      A给B说话:能听到我说话吗?
    
    
    
      B回应:我能听到,能听到我说话吗?
    
    
    
      A回应:我也能听到
    
    
    
    
      确保通信畅通 ----  数据传输不允许丢包
    
    
    
      A给B发数据,如果B没有回应,A选择重新发送 ----- 超时
    
    
    
      2)默认端口80
    
    
    
      3)基于请求 – 响应模式的协议
    
    
    
      先请求,在出现响应 ----- 请求和响应一一对应
    
    
    
    
      2.两个实验
    
    
    
      实验一 : 通过telnet 连接服务器,进行协议操作 
    
    
    
      XP 自动安装telnet 
    
    
    
      win7 系统 安装telnet插件 
    
    
    
      * telnet 采用 传输层连接原理方式  通信内容必须严格按照应用层协议 
    
    
    
      语法:telnet ip port 
    
    
    
      1、 cmd> telnet localhost 80 
    
    
    
      2、手动输入HTTP协议请求 
    
    
    
      telnet乱码解决:ctrl+] 回车
    
    
    
      3、输入协议内容
    
    
    
      GET / HTTP/1.0
    
    
    
      HOST: localhost
    
    
    
      回车
    
    
    
    
      实验二  : 安装Httpwatch
    
    
    
      完成访问web页面时 http协议数据包 抓取 
    
    
    
      3.查看网络连接过程中 http协议内容
    
    
    
      请求内容
    
    
    
      GET / HTTP/1.1
    
    
    
      Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*
    
    
    
      Accept-Language: zh
    
    
    
      Accept-Encoding: gzip, deflate
    
    
    
      User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
    
    
    
      Host: localhost
    
    
    
      Connection: Keep-Alive
    
    
    
    
      响应内容
    
    
    
      HTTP/1.1 200 OK
    
    
    
      Server: Apache-Coyote/1.1
    
    
    
      ETag: W/"7347-1184876416000"
    
    
    
      Last-Modified: Thu, 19 Jul 2007 20:20:16 GMT
    
    
    
      Content-Type: text/html
    
    
    
      Content-Length: 7347
    
    
    
      Date: Sat, 09 Jun 2012 07:02:35 GMT
    
    
    
    
      <?xml version="1.0" encoding="ISO-8859-1"?>
    
    
    
    
      ...
    
    
    
      4.HTTP和HTML关系?
    
    
    
      HTTP通信协议,规定数据传输格式
    
    
    
      HTML网页设计语言,静态网页数据
    
    
    
      HTTP 传输格式、 HTML传输内容
    
    
    
      5.HTTP/1.0、HTTP/1.1区别?
    
    
    
      在HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源
    
    
    
      HTTP1.1协议,运行客户端与web服务器建立连接后,在一个连接上获取多个web资源
    
    
    
      6.一个web页面中,使用img标签引用了三幅图片,当客户端访问服务器中的这个web页面时,客户端总共会访问几次服务器,即向服务器发送了几次HTTP请求?
    
    
    
      *三幅图片地址是否相同
    
    
    
      如果三幅图片地址都不相同 --- 4次请求
    
  
    
      HTTP请求
    
    
    
      请求完整格式包括三个部分:请求行、头信息、请求体
    
    
    
      1.请求行:请求中第一行信息 --- 包括三个部分  请求方式、资源路径、HTTP协议版本
    
    
    
      例如:GET / HTTP/1.1
    
    
    
      HTTP请求方式有七种:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
    
    
    
      常用两种:GET、POST
    
    
    
      1)客户端网页哪些是GET方式请求?哪些是POST请求
    
    
    
      GET方式:1、用户直接在浏览器上手动输入url地址 2、<a href="url"></a> 
    
    
    
      3、<form method="get">   *form表单默认提交方式就是get
    
    
    
      POST方式:1、<form method="post">
    
    
    
      2)GET提交方式和POST提交方式区别?
    
    
    
      GET提交方式后携带数据有大小限制1K,提交数据在url上显示
    
    
    
      *http://localhost/day04/url?username=zhangsan 格式 url?name=value&name=value&name=value... 
    
    
    
      以?分隔url和参数,参数采用键值对格式,多个参数使用&符号分隔
    
    
    
      POST数据在请求体重,不再url上显示,没有数据大小限制
    
    
    
      *uesrname=zhangsang 请求体和信息头直接存在一个空行
    
    
    
      2.头信息
    
    
    
      Accept: text/html,image/*   ----- 客户端可以接收文件类型 text/html->HTML文件 image/* 任意格式图片
    
    
    
      Accept-Charset: ISO-8859-1 ----- 客户端可以识别编码字符集
    
    
    
      Accept-Encoding: gzip ----- 客户端可以识别压缩数据格式,gzip是一种压缩格式
    
    
    
      Accept-Language:zh-cn ----- 客户端浏览器语言
    
    
    
      Host: www.itcast.com:80  ----- 访问服务器地址 
    
    
    
      If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT ----- 该请求的资源在客户端保存最后访问时间(缓存有关)
    
    
    
      Referer: http://www.itcast.com/index.jsp ---- 上一次请求访问页面
    
    
    
      User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) ---- 客户端浏览器类型版本 
    
    
    
      Connection: close/Keep-Alive    ---- 该请求连接后,连接是保持还是关闭 1.0关闭 1.1保持
    
    
    
      Date: Tue, 11 Jul 2000 18:23:51 GMT ---- 请求时间
    
    
    
      3.请求体:存放客户端提交post请求数据
    
    
    
      key=value&key=value&key=value ....  
    
    
    
      例如:username=sss
    
    
    
      4.Referer防止客户盗链数据
    
    
    
      eg:模拟浏览器访问服务器获得refererServlet当中信息
    
    
    
      1)URL连接 --- HTTP协议
    
    
    
      2)Socket连接 --- TCP协议
    
  
eg:
      
        package
      
      
         cn.lsl.servlet;
      
      
        import
      
      
         java.io.IOException;
      
      
        import
      
      
         java.io.PrintWriter;
      
      
        import
      
      
         javax.servlet.ServletException;
      
      
        import
      
      
         javax.servlet.http.HttpServlet;
      
      
        import
      
      
         javax.servlet.http.HttpServletRequest;
      
      
        import
      
      
         javax.servlet.http.HttpServletResponse;
      
      
        public
      
      
        class
      
       RefererServlet 
      
        extends
      
      
         HttpServlet {
    
    
      
      
        public
      
      
        void
      
      
         doGet(HttpServletRequest request, HttpServletResponse response)
            
      
      
        throws
      
      
         ServletException, IOException {
        String referer 
      
      = request.getHeader("referer");     
      
        //
      
      
        获得头信息
      
      
        response.setContentType("text/html;charset=gbk"
      
        );
        
      
      
        if
      
      (referer == 
      
        null
      
       || !referer.startsWith("http://localhost"
      
        )){
            
      
      
        //
      
      
        盗链
      
      
            response.getWriter().println("盗链!"
      
        );
            
      
      
        return
      
      
        ;
        }
      
      
        else
      
      
        {
            response.getWriter().println(
      
      "XX网站欢迎您。。。。"
      
        );
        }
    }
    
    
      
      
        public
      
      
        void
      
      
         doPost(HttpServletRequest request, HttpServletResponse response)
            
      
      
        throws
      
      
         ServletException, IOException {
        doGet(request, response);
    }
}
      
    
    
  
    
      直接输入网址,则会被当做盗链
    
    
    
      从该网站的某个页面点进去则能正常访问
    
  
      
        <%
      
      
        @ page language
      
      
        =
      
      
        "
      
      
        java
      
      
        "
      
      
         import
      
      
        =
      
      
        "
      
      
        java.util.*
      
      
        "
      
      
         pageEncoding
      
      
        =
      
      
        "
      
      
        ISO-8859-1
      
      
        "
      
      
        %>
      
      
        <!
      
      
        DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
      
      
        >
      
      
        <
      
      
        html
      
      
        >
      
      
        <
      
      
        head
      
      
        >
      
      
        </
      
      
        head
      
      
        >
      
      
        <
      
      
        body
      
      
        >
      
      
        <
      
      
        a 
      
      
        href
      
      
        ="referer"
      
      
        >
      
      link
      
        </
      
      
        a
      
      
        >
      
      
        </
      
      
        body
      
      
        >
      
      
        </
      
      
        html
      
      
        >
      
    
    
  模拟客户端,绕过防盗链逻辑,获得需要信息
      
        package
      
      
         cn.lsl.servlet;
      
      
        import
      
      
         java.io.InputStream;
      
      
        import
      
      
         java.net.URL;
      
      
        import
      
      
         java.net.URLConnection;
      
      
        public
      
      
        class
      
      
         URLTest {
    
      
      
        public
      
      
        static
      
      
        void
      
       main(String[] args) 
      
        throws
      
      
         Exception {
        
      
      
        //
      
      
        创建URL对象
      
      
        URL url = 
      
        new
      
       URL("http://localhost:8080/HTTPTest/referer"
      
        );
        
      
      
        //
      
      
        链接目标资源
      
      
        URLConnection connection=
      
         url.openConnection();
        connection.addRequestProperty(
      
      "referer", "http://localhost/index.jsp"
      
        );
        
      
      
        //
      
      
        获得网站输入流
      
      
        InputStream in =
      
         connection.getInputStream();
        
      
      
        byte
      
      [] buf = 
      
        new
      
      
        byte
      
      [1024
      
        ];
        in.read(buf);    
      
      
        //
      
      
        将流数据读取buf中
      
      
        for
      
      (
      
        byte
      
      
         b : buf){
            System.out.write(b);
        }
        System.out.flush();
    }
}
      
    
    
  
    
      HTTP响应
    
    
    
      响应数据 分为三个部分:状态行、头信息、响应体
    
    
    
      1.状态行分为三个部分:HTTP协议版本、状态码、描述信息
    
    
    
      例如:HTTP/1.1 200 OK
    
    
    
      100~199 Informational 请求信息不足,还需要其他信息才能处理
    
    
    
      200~299 Success 请求处理成功
    
    
    
      300~399 Redirection 服务器已经处理完毕,客户端还需要进一步动作
    
    
    
      400~499 Client Error 客户端错误
    
    
    
      500~599 Server Error 服务器端错误
    
    
    
    
      200 请求处理成功 302 客户端进行重定向 304 客户端访问资源没有被修改后,客户端访问本地缓存
    
    
    
      404 访问资源不存在 500 服务器内部出错
    
    
    
      2.响应头
    
    
    
      Location: http://www.it315.org/index.jsp ---- 重定向地址 结合302一起使用
    
    
    
      *重定向两次请求,两次响应
    
    
    
      Server:apache tomcat ----- 服务器类型 
    
    
    
      Content-Encoding: gzip ---- 设置响应数据压缩格式
    
    
    
      *如果响应数据经过压缩,传输体积更小,性能更好
    
    
    
      例如:
    
    
    
      在没有压缩情况下,13605字节 http://localhost/docs/
    
    
    
      如何设置tomcat压缩
    
    
    
      *通过设置tomcat/conf/server.xml设置响应数据压缩
    
    
    
      <Connector port="80" protocol="HTTP/1.1" 
    
    
    
                     connectionTimeout="20000" 
    
    
    
                     redirectPort="8443" compressableMimeType="text/html,text/xml,text/plain" compression="on"/>
    
    
    
      清楚浏览器缓存,重启tomcat
    
    
    
      4244字节 http://localhost/docs
    
    
    
      Content-Length: 80  ----- 响应数据长度
    
    
    
      Content-Language: zh-cn  ----- 响应数据语言
    
    
    
      Content-Type: text/html; charset=GB2312  ----- 响应数据类型
    
    
    
      *数据类型采用Mime协议规定类型  html文件 ---- text/html、jpg文件 ---- image/jpeg
    
    
    
      *在tomcat/conf/web.xml中查看文件mime类型
    
    
    
      Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT  ----- 和请求头信息If-Modified-Since一起使用,控制服务器缓存
    
    
    
      * ETag: W/"13397-1184876416000" tomcat生成Etag 13397文件大小 1184876416000文件最后修改时间(精确毫秒)
    
    
    
      * 客户端下次请求时通过If-None-Match 携带刚刚 Etag信息
    
    
    
      Refresh: 1;url=http://www.it315.org ----- 网页自动跳转
    
    
    
      Content-Disposition: attachment; filename=aaa.zip ----- 文件下载时指定文件附件名称
    
    
    
      控制该程序在客户端不缓存(以下三个一起使用)
    
    
    
      Expires: -1 
    
    
    
      Cache-Control: no-cache  
    
    
    
      Pragma: no-cache  
    
    
    
      *对于动态程序,经常修改,禁止浏览器缓存内容
    
    
    
      Connection: close/Keep-Alive   ---- 响应后连接是否关闭
    
    
    
      Date: Tue, 11 Jul 2000 18:23:51 GMT --- 响应时间
    
    
    
      3.响应体
    
    
    
      通常为HTML文件内容 --- 如果设置响应体进行gzip压缩,看到gzip压缩内容
    
  
重定向:
eg:
      
        package
      
      
         cn.lsl.servlet;
      
      
        import
      
      
         java.io.IOException;
      
      
        import
      
      
         java.io.PrintWriter;
      
      
        import
      
      
         javax.servlet.ServletException;
      
      
        import
      
      
         javax.servlet.http.HttpServlet;
      
      
        import
      
      
         javax.servlet.http.HttpServletRequest;
      
      
        import
      
      
         javax.servlet.http.HttpServletResponse;
      
      
        public
      
      
        class
      
       RedirectServlet 
      
        extends
      
      
         HttpServlet {
    
      
      
        public
      
      
        void
      
      
         doGet(HttpServletRequest request, HttpServletResponse response)
            
      
      
        throws
      
      
         ServletException, IOException {
        response.setStatus(
      
      302
      
        );
        response.setHeader(
      
      "Location", "index.jsp");  
      
        //
      
      
        重定向index.jsp
      
      
            }
    
    
      
      
        public
      
      
        void
      
      
         doPost(HttpServletRequest request, HttpServletResponse response)
            
      
      
        throws
      
      
         ServletException, IOException {
        doGet(request,response);
    }
}
      
    
    
  设置浏览器不缓存
eg:
      
        package
      
      
         cn.lsl.servlet;
      
      
        import
      
      
         java.io.IOException;
      
      
        import
      
      
         java.io.PrintWriter;
      
      
        import
      
      
         javax.servlet.ServletException;
      
      
        import
      
      
         javax.servlet.http.HttpServlet;
      
      
        import
      
      
         javax.servlet.http.HttpServletRequest;
      
      
        import
      
      
         javax.servlet.http.HttpServletResponse;
      
      
        public
      
      
        class
      
       NoCacheServlet 
      
        extends
      
      
         HttpServlet {
    
      
      
        public
      
      
        void
      
      
         doGet(HttpServletRequest request, HttpServletResponse response)
            
      
      
        throws
      
      
         ServletException, IOException {
        
      
      
        //
      
      
        需要三句禁止缓存,防止浏览器兼容问题
      
      
        response.setDateHeader("expires", -1
      
        );
        response.setHeader(
      
      "Cache-Control", "no-cache"
      
        );
        response.setHeader(
      
      "Pragma", "no-cache"
      
        );
        response.getWriter().println(
      
      "aabbcc"
      
        );
    }
    
    
      
      
        public
      
      
        void
      
      
         doPost(HttpServletRequest request, HttpServletResponse response)
            
      
      
        throws
      
      
         ServletException, IOException {
        doGet(request,response);
    }
}
      
    
    
  
    
      通过HTTP协议Range头信息,实现断点下载功能
    
    
    
      在连接服务器目标资源进行下载过程中,传递Range头信息,指定下载目标资源部分内容  ---  实现断点下载功能
    
    
    
      断点下载:使用URL类模拟客户端访问WebRoot/info.txt,下载文件中内容
    
  
      
        package
      
      
         cn.lsl.servlet;
      
      
        import
      
      
         java.io.FileOutputStream;
      
      
        import
      
      
         java.io.InputStream;
      
      
        import
      
      
         java.io.OutputStream;
      
      
        import
      
      
         java.net.URL;
      
      
        import
      
      
         java.net.URLConnection;
      
      
        public
      
      
        class
      
      
         RangeTest {
    
      
      
        //
      
      
        通过Range头信息实现断点下载
      
      
        public
      
      
        static
      
      
        void
      
       main(String[] args) 
      
        throws
      
      
         Exception {
        URL url 
      
      = 
      
        new
      
       URL("http://localhost:8080/HTTPTest/info.txt"
      
        );
        URLConnection connection 
      
      =
      
         url.openConnection();
        
      
      
        //
      
      
        通过addRequestProperty添加头信息,Range实现断点下载
      
      
        connection.addRequestProperty("Range", "bytes=100-"
      
        );
        InputStream in 
      
      =
      
         connection.getInputStream();
        OutputStream out 
      
      = 
      
        new
      
       FileOutputStream("download.txt"
      
        );
        
      
      
        byte
      
      [] buf = 
      
        new
      
      
        byte
      
      [1024
      
        ];
        
      
      
        int
      
      
         len;
        
      
      
        while
      
      ((len = in.read(buf)) != -1
      
        ){
            out.write(buf, 
      
      0
      
        , len);
        }
        in.close();
        out.close();
    }
}
      
    
    
  


 
         
					 
					