zoukankan      html  css  js  c++  java
  • post&get请求总结

    开发动态资源:
    静态资源:刷新界面,数据始终不会发生改变,如果要改变界面需要修改源代码
    动态资源:刷新界面,数据可能发生改变,数据可来源于数据库
    servlet:使用Java开发动态资源的技术
    --WebContent  项目根路径
    ----html
    ------test.html   访问路径:http://localhost:6666/MyFirstWeb/html/Test.html
    ----index.html   访问路径:http://localhost:6666/MyFirstWeb/index.html
    ----META-INF
    ----WEB-INF (不能通过url直接访问WEB-INF中的资源,如果需要访问,需要在web.xml中进行配置)
    ------lib      存放关联架包
    ------web.xml  web项目核心配置文件
     
    如何创建servlet:
     
     
     
     
     
     
    方法一:
    1.创建一个普通的类
    2.继承HttpServlet(普通的类——》Servlet)
    3.重写父类的doGet( )方法
    4.在在web.xml中配置servlet
    <!-- 配置servlet -->
      <servlet>
           <!-- 给FirstServelt设置一个名称 -->
          <servlet-name>firstServelt</servlet-name>
          <!-- 配置Servlet的完整类名(包名+类名) -->
          <!-- 此路径错误 /MyFirstWeb/src/com/igeekhome/igeekhome/FirstServlet.java -->
          <servlet-class>com.igeekhome.igeekhome.FirstServlet</servlet-class>
      </servlet>
     
      <!-- 设置servlet映射路径 -->
      <servlet-mapping>
          <!-- 声明给哪个servlet设置路径  一定要与上面的servlet配置的name一致-->
          <servlet-name>firstServelt</servlet-name>
          <!-- 设置路径 -->
          <url-pattern>/first</url-pattern>
      </servlet-mapping>
    方法二:
    1. 直接右键新建Servlet
    2. 在web.xml中配置servlet(暂时先删除注解)
    注意:servlet不能直接运行,需要交给tomcat运行
    同上
     
     
    HTTP协议:
    超文本传输协议:浏览器客户端与服务端的数据传输规范
    HTTP协议内容:
    (1)HTTP请求:(浏览求客户端到服务端)
     
    GET /MyFirstWeb/second HTTP/1.1      --请求行
    Host: localhost:8086          -- 目的主机地址以及端口          --以下都是请求头
    Connection: keep-alive        -- 此次请求过后连接的状态(close 关闭  keep-alive 保持连接)
    Cache-Control: max-age=0      -- 缓存存活时间
    Upgrade-Insecure-Requests: 1     -- 支持http请求
    User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36    --  浏览器类型
    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8    -- 告诉服务器 浏览器所支持的数据类型
    Accept-Encoding: gzip, deflate, br    ---告诉服务器 浏览器所支持的数据压缩格式
    Accept-Language: zh-CN,zh;q=0.8    --- 告诉服务器 浏览器支持的语言
     
    (1)请求行
    (2)请求头
    (3)请求体:GET请求的数据是拼接在url之后的   只有POST请求才有请求体
    解析:
    GET /MyFirstWeb/second HTTP/1.1      --请求行
    请求方式     请求的URI     协议、协议的版本
    A.请求方式:GET、POST、PUT、DELETE…
    常用请求方式:GET、POST
     
     
    GET请求 VS POST请求:
    GET请求:
    1. GET请求的数据是拼接在URL后面的
     拼接格式: 请求路径?参数名=参数值&参数名=参数值
    参数名就是表单的name
    1. GET请求的数据有大小限制(1kb左右)
    2. GET请求一般不适合提交敏感信息
    3. 使用浏览器请求的方式一般都是get请求
    POST请求:
    1. POST请求数据放在请求体中      
               FormData:(请求体)     请求数据的name就是表单的name
    1. POST请求提交的数据没有大小限制
    2. 一般用于提交敏感信息以及文件上传
     
    B.URI:统一资源标记符 (指定本地资源 也可以指定网络资源)
    URL(统一资源定位符 定位网络资源) 是 URI的一个分支
    C.HTTP 1.0 VS HTTP 1.1
    HTTP 1.0 建立一次连接之后,只能发送一次请求就断开连接
    HTTP 1.1 建立一次连接之后,可以发送多个请求(基本都是HTTP 1.1)
     
    HttpServletRequest
    获取请求数据
    1. 请求行
    1. 请求头
    2. 表单数据
     
    (2)HTTP响应:
    HTTP/1.1 200 OK                         ---  响应行
    Cache-Control: private                 ---响应头
    Connection: Keep-Alive
    Content-Length: 93              服务端返回给客户端的数据的大小
    Content-Type: baiduApp/json; v6.27.2.14; charset=UTF-8    服务端返回给客户端的数据类型、编码格式
    Date: Wed, 13 Sep 2017 02:06:02 GMT                  服务端响应的事件
    Expires: Wed, 13 Sep 2017 03:06:02 GMT               缓存过期事件
    Server: suggestion.baidu.zbb.df                      服务器类型
     
     
    1. 响应行   
      A:HTTP协议版本 
       B:状态码:服务端处理请求的结果   
      200:正确处理并正常返回
      404:找不到资源
      状态的描述
    2.     响应头      
    1. 实体内容:服务端具体返回的数据
                 HttpServletResponse:更改服务端响应
               更改响应行(不建议更改)
            更改响应头
             更改实体内容
     
     
     
     
    http:协议
    localhost:访问的服务端的ip地址
    8086:端口   -> Tomcat
    20170913_respons: 项目名   ->在webapps目录中查找项目
    test:  在20170913_respons查找资源
    查找资源的步骤:【在服务器启动的时候,tomcat会加载webapps中所有项目的web.xml】
    1. 以test查找资源,先到项目的web.xml中查找是否存在匹配的url-partten
    2. 如果查找到,在当前servelt-mapping中找出相对应的servlet-name
    3. 以servlet-name再去查找是否有同名的配置的servlet
    4. 如果有同名的servlet ,取出当前sevelt的servlet-class(com.igeekhome.servlet.TestServlet【字符串】)
     
     
     
     
    底层:
    1. 通过反射,由完整类名的字符串(com.igeekhome.servlet.TestServlet)创建对象
    2. 通过反射,调用servlet中的方法
    实现过程:
    1. 通过配置文件获取到完整类名(com.igeekhome.servlet.TestServlet)
    2. 通过完整类名创建字节码对象
    Class clazz = Class.forName(“com.igeekhome.servlet.TestServlet”);
    1. 通过反射创建Servlet对象(【1】构造方法)
    Object obj = clazz.newInstance();
    1. 获取init方法
    Method m = obj.getDeclareMethod(“init”,ServletConfig.class);
    1. 调用init方法   ---实例化servlet对象
    m.invoke(obj,config);
    6.  获取service方法
    Method m = obj.getDeclareMethod
    (“service”,HttpServletRequest.class,HttpServletResponse.class);
    1. 调用service方法
    m.invoke(obj,request,response);
    8.  获取destroy()方法
    9.  执行destroy()方法
     
    路径配置:
    <servlet>
        <servlet-name>testServlet</servlet-name>
        <servlet-class>com.igeekhome.servlet.TestServlet</servlet-class>
      </servlet>
          <servlet-mapping>
          <servlet-name>testServlet</servlet-name>
          <url-pattern>/test</url-pattern>
      </servlet-mapping>
    <url-pattern>/test</url-pattern>:配置匹配路径
     
    精确匹配:
             /test     http://localhost:8086/20170913_response/test
             /igeekhome/test   http://localhost:8086/20170913_response/igeekhome/other
    模糊匹配:
             /*       匹配任意路径
             *.action          匹配任意后缀
             *.do
    注意:
    1.精确匹配优先级最高
    2.匹配路径只能以/ 或者*开头
    3.模糊匹配不能同时使用多种匹配方式
    Tomcat提供了一个缺省路径 (<url-pattern>/</url-pattern>)
    <servlet>
            <servlet-name>default</servlet-name>
            <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
           <!—初始化参数-- >
            <init-param>
                <param-name>debug</param-name>
                <param-value>0</param-value>
            </init-param>
            <init-param>
                <param-name>listings</param-name>
                <param-value>false</param-value>
            </init-param>
            <!—Servlet自启动 -- >
            <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>/</url-pattern>
     </servlet-mapping>
    剖析:
    1. index.html 先到web.xml进行匹配,查找有同名的url-partten
    2. 如果不存在同名的url-partten,会默认调用DefaultServlet,查找静态资源
    3. 根据index.html,查找静态资源,如果找到了,就返回给客户端进行显示,如果未找到,就返回404
    总结:先找动态资源 再找静态资源
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    statusStrip控件上的项目靠右对齐
    HTML基础——列表(一)
    HTML基础——HTML基本要素(二)
    HTML基础——文字格式设置
    HTML基础----HTML基本要素(一)
    web下载的dll文件无法加载进项目
    Silverlight加载第一个Map
    ArcGIS API for Silverlight map中添加graphic对象(文字、几何图形、图片)
    BackgroundWorker控件使用(一)
    Winform程序实现COM口通信
  • 原文地址:https://www.cnblogs.com/liyang6/p/10497106.html
Copyright © 2011-2022 走看看