JavaWeb基础恢复之网络、

目录
    1. 网络
  1. 网络
计算机网络
    把分布在不同地理区域的计算机互连成一个网络,使计算机可以资源共享、传递信息

网络协议
    计算机网络实现通讯必须遵循一定的通信协议。
5111884-aab459ce569fb2fd.png
通信协议分层
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);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值