JavaWeb学习笔记(二)

Web基础下

1- HTTP协议
    1.1  什么是协议?
        就是通信双方建立的一种规则。
     1.2  什么HTTP协议?
         a. HTTP协议(HyperText Transfer Protocal)超文本传输协议。如何在浏览器和服务器之间传输超文本(HTML)的协议。
         b. HTTP协议规定了Web的基本运行过程,以及浏览器和服务器之间通信细节。
     1.3  HTTP协议特点
         a. HTTP协议无状态的,无连接的协议。
       b.HTTP协议采用客户端/服务器通信模式。服务器也叫Web服务器或HTTP服务器;客户端叫HTTP客户端(浏览器)。
       c.HTTP版本号:  HTTP1.0, HTTP1.1,HTTP2.0
            HTTP1.0和HTTP1.1之间的区别?
           1.0:一次请求得到所有内容。
           1.1:如果请求的HTML文档中含有img, embed标签时,在第一次请求结束后,还会向服务器端请求图片,音频视频等文件。详细见(https://www.cnblogs.com/andashu/p/6441271.html)
         d.HTTP客户端向服务器端发送信息,叫请求(request);服务器端向客户端返回信息,叫响应(response)
         e.HTTP客户端和服务器端可以分别用不同的语言编写。并且可以运行在不同的平台上。只需要请求和响应格式符合HTTP协议的规 范, 双方就能够交流。
    总之:HTTP协议规定了HTTP请求的数据内容格式和HTTP响应的数据内容格式。只要符合HTTP规定 的数据格式,客户端和浏览器端就能够通信。
    1.4  HTTP请求格式
         HTTP协议规定,HTTP请求由三部分组成          
                        请求首行
                        请求头信息
                        请求正文内容
      客户端(不仅仅指浏览器)发送给服务器的内容必须按照这个格式,否则Web服务器无法解析
        案例:自己编写一个服务器,使用浏览器访问          
 
public class MyTomcat {
    public static void main(String[] args) throws IOException, InterruptedException {
        ServerSocket server = new ServerSocket(9999);
        Socket s = server.accept();
        InputStream is = s.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        System.out.println(br.readLine());
        System.out.println(br.readLine());
        System.out.println(br.readLine());
        System.out.println(br.readLine());
        System.out.println(br.readLine());
        System.out.println(br.readLine());
        System.out.println(br.readLine());
        System.out.println(br.readLine());
        System.out.println(br.readLine());
        System.out.println(br.readLine());
    }
}                       
请求首行:请求方式 URI HTTP版本号 例如:GET / HTTP/1.1
请求方法:GET, POST。 (HEAD, PUT, DELETE)

    GET:将HTML表单内容放在URI之后?name=value&name=value ; 请求正文一般无数据。
    POST:可以发送大量的数据。HTML表单数据在请求正文中。
URI: 标识访问的资源路径。以/开头,/可以理解为服务器发布web应用的根目录
              HTTP版本号:一般都是1.1
请求头信息:GET请求头信息         
Host: localhost:9999    访问的主机的地址和端口号 
Connection: keep-alive  浏览器和服务器之间连接模式,默认keep-alive为3000ms。将连接保存一会
Cache-Control: max-age=0  表示缓存
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8告诉服务器,浏览器能够接受的MIME信息类型。 */*所有
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36告诉服务器浏览器自己所在操作系统的相关信息。
Accept-Encoding: gzip,deflate,sdch   告诉服务器,浏览器支持的压缩格式。服务器会根据此对返回信息进行压缩。
Accept-Language: zh-CN,zh;q=0.8  告诉服务器,客户端操作系统是中文,tomcat根据此设置,自动选择相对应的语言网页,发送给浏览器。
Accept-Charset:GB2312, utf-8  告诉服务器,浏览器支持的编码
If-Modified-Since:Web, 01, 2016  06:11:22 GMT   此请求的头信息,与相应的last-modified配对使用。

Cookie: JSEESIONID=xxxxxxxxxxx     :浏览器第一次请求服务器时,服务器会为浏览器分配一个cookie,下次浏览器再去访问服务器,带上cookie。服务器就认识浏览器。
请求头信息:POST请求头信息  
POST  /hello.jsp   HTTP1.1
Referer:  http:www.baidu.com   参考。告诉服务器,此次请求从哪个页面转来的。如果直接在地址栏输入,没有referer头信息。
统计搜索平台的广告效果;防止链接盗用
Content-Type: application/x-www-form-urlencoded//MIME类型,form标记enctype值默认。表单数据采用name=value形式表示,对表单数据使用url编码。表单自动进行URL编码,而超链接传值则不会自动编码(必须手动编码)
Content-length:15   //POST请求中,请求正文的长度。
...

name=helloworld
      空行:HTTP协议规定,请求头和正文之间必须以空行(\r\n)分割。表示的意思请求头已结束。
      请求正文:  get请求一般没有请求正文(有空行);Post方式请求正文,就是表单信息。     
    1.5 HTTP响应格式:
             HTTP协议规定,HTTP响应也有三部分组成
响应首行
响应头信息
响应正文
         Tomcat将浏览器请求的内容发送给浏览器。浏览器按照该样式解析并显示
        响应首行:  HTTP协议版本号  状态码  描述信息(对状态码的解释)
               HTTP/1.1 200 OK
       常见的状态码表示的含义:
         200    请求成功    浏览器会把响应体内容显示
         404    请求资源未找到,说明客户端请求了不存在的资源
         500    请求的资源找到了,但是服务器内部出现错误。
         302    重定向,表示服务器要求浏览器重新发一个请求,服务器告诉浏览器 新请求的URL。新的URL以一个location的响应头,告诉浏览器。
         304    根据响应的last-modified与请求的if-modified-since
响应头信息               
Server:  xxxx      //服务器的版本信息
Accept-Ranges:bytes  //告诉浏览器服务器支持断点续传
Last-Modified:xxx      
Content-Type: text/html    //告诉浏览器发送的MIME类型
Content-Length:100        //请求正文的长度
Date:  时间                    //响应的时间

以下三个响应头表示服务器告诉浏览器不要缓存。
Expires=0或-1
Cache-Control:no-cache
Pragma:no-cache
响应正文
    HTML文档内容是最常见的响应正文。
   1.6 HTTPS(了解)
         HTTPS  HyperText Transfer Protocal over Secure Socket Layer.使用SSL进行信息 交换。简单说HTTPS就是安全的HTTP。
         对称加密:
              加密和解密使用同样的密钥。
              对称加密的私钥进行非对称加密,再传送。
               A       B
              A用户有一个对称加密的秘钥(100)。先访问B,B将非对称的公钥发送给A,A通过公 钥将 对称加密的密钥(100)进行加密,再传给B,B通过私钥对发过来的信息解密,得到 对称加密的密钥。
         非对称加密:RSA
              使用一对密钥(公钥和私钥),私钥只能有一方保管,不能外泄。公钥可以发送诶任何 请求的人。使用公钥加密,使用私钥解密。
           HTTPS和HTTP区别?
              1- HTTPS协议需要到CA申请证书,一般收费。
              2- HTTP信息传输是明文,HTTPS具有安全性的SSL加密传输协议。
              3- HTTP和HTTPS使用完全不同的连接方式和端口号。HTTP端口80, HTTPS是443。
              4- HTTP连接简单,无状态,高效。HTTPS是SSL+HTTP协议构建的可进行加密传输,身 份认证的网络协议,安全,但性能低    

2- Web应用
    2.1 静态应用和动态应用
         静态应用:web发展初期,信息仅仅以文本,图片,声音等形式展现。浏览器    
                  访 问Web服务器中的静态信息。
         动态应用:Web服务器增加了动态执行特定程序的代码,这些代码用于根据用户请
                    动态生成HTML文档。这些特定代码就是Servlet(完全用Java语言编写的程         
                    序)/JSP(嵌入了程序代码的HTML文档)。
         什么是动态应用:Web服务器可以为访问同一资源的不同客户单定制的显示信息。
              案例:如何动态生成HTML。
              客户端:浏览器
                             http://localhost:8080/servlet/HelloServlet?name=jack               
                             http://localhost:8080/servlet/HelloServlet?name=rose     
       2.2 Web应用定义
             Servlet规范中对Web应用定义:  Web应用由一组Servlet/JSP,HTML文件,相关Java类,还
                     有其他资源构成。Web应用可以在各个符合Servlet规范的容器中运行。
     2.3  Web应用目录结构
              Web应用的目录结构是要符合Servlet规范。

                                  
    
web目录结构分析:
    1- hello:  Web应用的根目录,所有的JSP,HTML文档都存放在此目录(实际开发,jsp一般放在WEB-INF目录下)。
    2- WEB-INF:存放Web应用的配置文件web.xml。该目录必须大写,且 浏览器无法访问该目录中的资源,安全。
    3- src: 开发hello应用阶段,开发人员编写代码的目录。该目录中存放的都是Java类源文件。Web产品正式发布,一般都不会将Java源文件公开。在真正使用的时候,使用的.class文件(一般在WEB-INF\clsses目录下)。
    4- WEB-INF/web.xml: web应用程序的部署描述符文件。由开发人员编写,供Servlet容器访问。Servlet容器在加载和启动Web应用会读取该文件的信息,从中获得关于当前Web应用的信息。
    5- WEB-INF/classes:存放的都是src包中源文件编译后的.class文件。
    6- lib: 存放当前Web应用所需要的各种jar包。jdbc  jar

也就是说,以后自己编写Web应用时,应当符合以上Web应用的目录结构。

猜你喜欢

转载自blog.csdn.net/zqq3436/article/details/80306893