Http协议与Tomcat

http协议:

    概念:是w3c组织(万维网联盟)的一种通信协议。定义
    浏览器与web应用之间的数据格式;
    包含了请求与响应。
  1.请求:浏览器向服务器发送数据
      请求数据包含:
      请求行:请求方法+请求路径+协议种类+版本
      消息头:都是以键值对的形式存储的。
      比如: content-type消息头存储字符编码集。
      实体内容: 只有post请求才会有数据
  2.响应: 服务器向浏览器发送数据
      响应数据包含: 
        状态行:协议种类+版本号+状态码+状态信息
        消息头:以键值对的形式存储的
      响应数据: 经过业务逻辑运算后要发送给浏览器的数据。

 Servlet如何处理HTTP协议

    1 )Servlet容器会将接收的信息进行封装。封装到
    HttpServletRequest这个类型的一个对象上。
       我们就可以从request这个对象上获取我们想要的数据。
    比如:获取版本号
    用户提交的数据
    字符集

  2)Servlet容器在响应浏览器时,也会将一些数据,封装到
    HttpServletResponse类型的一个对象上。发送给浏览器后
    浏览器会自动解析
    如:绑定消息头
    字符集
    状态码等。 

  注意:每一次请求与响应,Servlet容器都会创建一个
  request和Response 
  request.setCharacterEncoding("utf-8");
  /response.setCharacterEncoding("content= text/html; charset=UTF-8");错误
  response.setContentType("text/html;charset=utf-8"); 

 参数的处理:

  1.请求对象的方法
    getParameter(""):
    获取浏览器页面的value值。参数要传name属性的值。
    返回字符串类型,
    页面上没有的name值,返回null.

  2.请求方法:
    默认的是get请求方式:
    特点:提交的数据都会显示在地址栏上,
      可以提交数据的大小最多为4k
      相对来说不安全 
    post请求方式:
      数据不显示在地址栏上
      大小无限制
      相对来说安全

 处理中文乱码问题:

    1.服务端接收浏览器端的数据时:
    get请求:
    服务端默认用的是ISO-8859-1字符集
    String username = request.getParameter("username");
    byte[] bs = username.getBytes("iso-8859-1"); 
    username = new String(bs,"UTF-8");
    System.out.println(username);//输出在控制台。
    此种方法也适合post请求,也可以直接:request.setCharacterEncoding("utf-8");来代替它.

    post请求:
            request.setCharacterEncoding("utf-8");

    2. 浏览器端接受服务端的数据出现乱码时:
      使用response对象设置消息头 
      response.setContentType("text/html;charset=utf-8"); 




三、http协议:
    概念:是w3c组织(万维网联盟)的一种通信协议。定义
    浏览器与web应用之间的数据格式;
    包含了请求与响应。
  1.请求:浏览器向服务器发送数据
      请求数据包含:
      请求行:请求方法+请求路径+协议种类+版本
      消息头:都是以键值对的形式存储的。
      比如: content-type消息头存储字符编码集。
      实体内容: 只有post请求才会有数据
  2.响应: 服务器向浏览器发送数据
      响应数据包含: 
        状态行:协议种类+版本号+状态码+状态信息
        消息头:以键值对的形式存储的
      响应数据: 经过业务逻辑运算后要发送给浏览器的数据。

 四、Servlet如何处理HTTP协议
    1 )Servlet容器会将接收的信息进行封装。封装到
    HttpServletRequest这个类型的一个对象上。
       我们就可以从request这个对象上获取我们想要的数据。
    比如:获取版本号
    用户提交的数据
    字符集

  2)Servlet容器在响应浏览器时,也会将一些数据,封装到
    HttpServletResponse类型的一个对象上。发送给浏览器后
    浏览器会自动解析
    如:绑定消息头
    字符集
    状态码等。 

  注意:每一次请求与响应,Servlet容器都会创建一个
  request和Response 
  request.setCharacterEncoding("utf-8");
  /response.setCharacterEncoding("content= text/html; charset=UTF-8");错误
  response.setContentType("text/html;charset=utf-8"); 

五、参数的处理:
  1.请求对象的方法
    getParameter(""):
    获取浏览器页面的value值。参数要传name属性的值。
    返回字符串类型,
    页面上没有的name值,返回null.

  2.请求方法:
    默认的是get请求方式:
    特点:提交的数据都会显示在地址栏上,
      可以提交数据的大小最多为4k
      相对来说不安全 
    post请求方式:
      数据不显示在地址栏上
      大小无限制
      相对来说安全

六、.处理中文乱码问题:
    1.服务端接收浏览器端的数据时:
    get请求:
    服务端默认用的是ISO-8859-1字符集
    String username = request.getParameter("username");
    byte[] bs = username.getBytes("iso-8859-1"); 
    username = new String(bs,"UTF-8");
    System.out.println(username);//输出在控制台。
    此种方法也适合post请求,也可以直接:request.setCharacterEncoding("utf-8");来代替它.

    post请求:
    request.setCharacterEncoding("utf-8");

    2. 浏览器端接受服务端的数据出现乱码时:
      使用response对象设置消息头 
      response.setContentType("text/html;charset=utf-8"); 

猜你喜欢

转载自blog.csdn.net/xiaozelulu/article/details/80395102
今日推荐