美文网首页JavaEE
JavaWeb基础恢复之网络、

JavaWeb基础恢复之网络、

作者: 平安喜乐698 | 来源:发表于2018-04-17 22:24 被阅读12次
    目录
        1. 网络
    
    1. 网络
    计算机网络
        把分布在不同地理区域的计算机互连成一个网络,使计算机可以资源共享、传递信息
    
    网络协议
        计算机网络实现通讯必须遵循一定的通信协议。
    
    通信协议分层
    IP协议
        属于网络层
       
    172.10.2.10
        每台计算机都有一个唯一的IP地址
        IP地址用点分成四段。在计算机内部IP地址是用四个字节来表示的,一个字节代表一段,每一个字节代表的数最大只能到达255。
    
    TCP协议和UDP协议
        属于传输层
    
    TCP
        面向连接,三次握手,可靠,点对点
    UDP  
        不面向连接,不可靠,点对多点(速度快)    
    

    HTTP协议

    HTTP协议
        HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议.
        用于WEB浏览器与WEB服务器之间交换数据。
    
    HTTP协议的版本
        HTTP/1.0、HTTP/1.1
        在HTTP1.0协议,客户端与web服务器建立连接后,只能获得一个web资源。
       在HTTP1.1协议,客户端与web服务器建立连接后,在一个连接上获取多个web资源。
    
     HTTP请求
        客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求
            一个完整的HTTP请求包括如下内容:一个请求行、若干消息头、以及实体内容
                请求行:请求方式 请求资源名  协议版本号
                    请求方式有:POST、GET(浏览器直接输入地址,地址?参数1=值&参数2=值,不安全,上限1kb)、HEAD、OPTIONS、DELETE、TRACE、PUT
                消息头:Accept、Cookie等
                   Accept:浏览器通过这个头告诉服务器,它所支持的数据类型
                  Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集
                  Accept-Encoding:浏览器通过这个头告诉服务器,支持的压缩格式
                  Accept-Language:浏览器通过这个头告诉服务器,它的语言环境
                  Host:浏览器通过这个头告诉服务器,想访问哪台主机
                  If-Modified-Since: 浏览器通过这个头告诉服务器,缓存数据的时间
                  Referer:浏览器通过这个头告诉服务器,客户机是哪个页面来的  防盗链
                  Connection:浏览器通过这个头告诉服务器,请求完后是断开链接还是何持链接
     例:
     Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg,
          application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
     Referer: http://localhost:8080/JavaWebDemoProject/Web/2.jsp
     Accept-Language: zh-CN
     User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3)
     Accept-Encoding: gzip, deflate
     Host: localhost:8080
     Connection: Keep-Alive
                实体内容:
    
     HTTP响应
     一个HTTP响应代表服务器向客户端回送的数据,它包括: 一个状态行、若干消息头、以及实体内容
     状态行
        HTTP协议版本 状态码 原因
        状态码
            100~199 成功接收请求,要求客户端在此提交请求才能完成整个过程
            200~299 成功接收请求并完成处理过程
            300~399 为完成请求,用户需要进一步细化请求
            400~499 客户端请求有错误
            500~599 服务端出错
     消息头
        描述服务器的基本信息
     实体内容
        返回给客户端的显示数据
     
     HTTP响应中的常用响应头(消息头)
       Location: 服务器通过这个头,来告诉浏览器跳到哪里
       Server:服务器通过这个头,告诉浏览器服务器的型号
       Content-Encoding:服务器通过这个头,告诉浏览器,数据的压缩格式
       Content-Length: 服务器通过这个头,告诉浏览器回送数据的长度
       Content-Language: 服务器通过这个头,告诉浏览器语言环境
       Content-Type:服务器通过这个头,告诉浏览器回送数据的类型
       Refresh:服务器通过这个头,告诉浏览器定时刷新
       Content-Disposition: 服务器通过这个头,告诉浏览器以下载方式打数据
       Transfer-Encoding:服务器通过这个头,告诉浏览器数据是以分块方式回送的
       Expires: -1  控制浏览器不要缓存
       Cache-Control: no-cache
       Pragma: no-cache
     
     例:
     HTTP/1.1 200 OK
     Server: Apache-Coyote/1.1
     Content-Type: text/html;charset=ISO-8859-1
     Content-Length: 105
     Date: Tue, 27 May 2014 16:23:28 GMT
     
      <html>
          <head>
              <title>Hello World JSP</title>
          </head>
          <body>
              Hello World!
     
          </body>
      </html>
    
    在src下新建包名com.sst.cx,包下新建TestServlet会在web.xml中生成相应的映射.
     http://localhost:8080/TestProject/servlet/TestServlet
     
     servlet中设置
     response.setStatus(302);//设置服务器的响应状态码
     response.setHeader("Location", "http://www.baidu.com");
    
    
    例:
    package com.sst.cx;
    
    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 TestServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            /*
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
            out.println("<HTML>");
            out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
            out.println("  <BODY>");
            out.print("    This is ");
            out.print(this.getClass());
            out.println(", using the GET method");
            out.println("  </BODY>");
            out.println("</HTML>");
            out.flush();
            out.close();
            */
            response.setStatus(302);//设置服务器的响应状态码
            response.setHeader("Location", "http://www.baidu.com");
    
    
    
    /*
    指定压缩格式
             String data = "abcdabcdabcdabcdabcdabcdab" +
                     "cdabcdabcdabcdabcdabcdabcdabcdabcdabcd";
             System.out.println("原始数据的大小为:" + data.getBytes().length);
             
             ByteArrayOutputStream bout = new ByteArrayOutputStream();
             GZIPOutputStream gout = new GZIPOutputStream(bout); //buffer
             gout.write(data.getBytes());
             gout.close();
             //得到压缩后的数据
             byte g[] = bout.toByteArray();
             response.setHeader("Content-Encoding", "gzip");
             response.setHeader("Content-Length",g.length +"");
             response.getOutputStream().write(g);
    */
    /*
    指定返回类型
              浏览器能接收(Accept)的数据类型有: 
              * application/x-ms-application, 
              * image/jpeg, 
              * application/xaml+xml, 
              * image/gif, 
              * image/pjpeg, 
              * application/x-ms-xbap, 
              * application/vnd.ms-excel, 
              * application/vnd.ms-powerpoint, 
              * application/msword, 
    
             response.setHeader("content-type", "image/jpeg");//使用content-type响应头指定发送给浏览器的数据类型为"image/jpeg"
             //读取位于项目根目录下的img文件夹里面的WP_20131005_002.jpg这张图片,返回一个输入流
             InputStream in = this.getServletContext().getResourceAsStream("/img/WP_20131005_002.jpg");
             byte buffer[] = new byte[1024];
             int len = 0;
             OutputStream out = response.getOutputStream();//得到输出流
             while ((len = in.read(buffer)) > 0) {//读取输入流(in)里面的内容存储到缓冲区(buffer)
                 out.write(buffer, 0, len);//将缓冲区里面的内容输出到浏览器
             }
    */
    /*
    设置refresh响应头,让浏览器每隔3秒定时刷新
              response.setHeader("refresh", "3");
    设置refresh响应头,3秒后跳转
             response.setHeader("refresh", "3;url='http://www.baidu.com'");
             response.getWriter().write("gacl");
    */
    
    /*
    设置content-disposition响应头,让浏览器下载文件
             response.setHeader("content-disposition", "attachment;filename=xxx.jpg");
             InputStream in = this.getServletContext().getResourceAsStream("/img/1.jpg");
             byte buffer[] = new byte[1024];
             int len = 0;
             OutputStream out = response.getOutputStream();
             while ((len = in.read(buffer)) > 0) {
                 out.write(buffer, 0, len);
             }
    */
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            this.doGet(request,response);
        }
    }
    

    相关文章

      网友评论

        本文标题:JavaWeb基础恢复之网络、

        本文链接:https://www.haomeiwen.com/subject/kkcukftx.html