Servlet第二天

1. http协议(了解)

(1)http协议是什么?

是一种网络应用层协议,规定了浏览器与web服务器之间如何通信以及相应的数据包的格式。
注:
    TCP/IP(传输层和网络层协议),可以确保数据可以可靠的传递。
    Http协议(应用层协议)将数据打包之后,需要依赖TCP/IP协议来传递数据包。
1)通信过程:
  建立连接
  发送请求
  发送响应
  关闭连接
2)优点
  web服务器可以利用有限的连接数为尽可能多的请求服务。

(2)数据包的结构

1)请求数据包
a.请求行 (请求方式 请求资源路径 协议和版本)
b.若干消息头
    注:
        消息头是一个键值对(以": "隔开),浏览器与web服务器之间可以通过发送消息头来传递一些特定的信息,比如浏览器可以发送"user-agent"消息头告诉服务器,浏览器的类型和版本。
c.实体内容
    注:
        get请求没有数据,只有发送post请求时,才会有数据(请求参数)   。
2)响应数据包
    a.状态行 (协议和版本 状态码 状态描述)
    注:
        200: 正确
        404: 依据请求路径找不到对应的资源
        500: 系统出错
    b.若干消息头
        注:
        服务器也可以将一些消息头发送给浏览器,比如,通过发送"content-type"消息头,告诉浏览器,服务器发送过来的数据类型以及编码。 
    c.实体内容
        程序处理的结果,浏览器需要解析出来,生成相应的页面。

(3)两种请求方式

1)get请求
  a.哪一些情况下,浏览器会发送get请求?
    在地址栏输入某个地址。
    点击链接。
    表单默认的提交方式。
  b.特点
    会将请求参数显示在浏览器地址栏,不安全。
    注:
        有一些网络设备(比如路由器),会记录所有的请求地址,如果包含了敏感的请求参数,则不安全。
    会将请求参数添加到请求行(也就是请求资源路径的后面),只能提交少量的数据。
    注:
        请求行大约只能存放约2k左右的数据。
2)post请求
    a.哪一些情况下,浏览器会发送post请求?
        设置表单的method属性为"post"。
    b.特点
    浏览器地址栏不会显示请求参数,相对安全。
        注:
            不管是哪种请求类型,都不会对数据加密。对于敏感数据,一定要加密处理。
    请求参数会添加到实体内容里面,可以提交大量的数据。
        注:
            实体内容里面添加的数据量理论上是没有限制的。

 2.读取请求参数值

(1)方式一

String request.getParameter(String paramName);
注:
    paramName:请求参数名。
    如果请求参数名写错,返回null。

(2)方式二

String[] request.getParameterValues(String paramName);
注:
    有多个请求参数名相同时,用该方法。

3.Servlet输出中文时产生的乱码问题

(1)为什么会有乱码?

out输出时,默认会使用iso-8859-1来编码。

4.表单包含有中文参数值产生的乱码问题

(1)为什么会有乱码?

表单提交时,会对中文参数值进行编码,比如,
使用utf-8来编码,而服务器端默认会使用iso-8859-1来解码,所以产生了乱码。
注:
    会按照打开该表单所在的页面时的字符集来
编码。

(2)如何解决?

1)情形1: post请求
2)情形2: get请求
    修改server.xml

猜你喜欢

转载自blog.csdn.net/anqing_liu/article/details/80636060