Web第四节课

1. 两种请求方式

  • get方式

    • 哪一些情况下,会发送get请求

      • 直接输入某个地址
      • 点击链接
      • 表单默认提交方式
    • get请求的特点

      • 会将请求参数添加到请求资源路径的后面,只能提交少量的数据(因为请求行最多只能存放大约2k左右的数据)
      • 会将请求参数显示在浏览器地址栏,不安全,比如,路由器会记录请求地址。
  • post方式

    • 哪一些情况下,会发送post请求
      • 设置表单的method=”post”
    • post请求的特点

      • 会将请求参数添加到实体内容里面,可以提交大量的数据。
      • 不会将请求参数显示在浏览器地址栏,相对安全(要注意,不管是什么请求,都不会对请求数据加密,一般使用https协议)
    • service()两种都能处理

    • doGet()只能处理get
    • doPost()只能处理post

2. servlet如何输出中文?

  • 为什么会有乱码
    • out.println输出中文时,默认会使用”iso-8859-1”去编码。
  • 如何解决
    • response.setContentType(“text/html;charset=utf-8”);
    • 或者
    • response.setCharacterEncoding(“utf-8”);

3. 表单包含了中文参数值,如何处理?

  • 为什么会有乱码?

    • 当表单提交时,浏览器会检查请求参数值,如果是中文,会按照打开该表单所在的页面时的字符集来编码(比如,按照”utf-8”来编码)。

    • 服务器默认情况下,会使用”iso-8859-1”来解码。如何解决?

      1. 保证浏览器使用指定的字符集来打开页面。(http–>< head>后添加语句:)
        < meta http-equiv=”content-type” content=”text/html;charset=utf-8”>
        或者< meta charset=”utf-8”/>

      2. 服务器端使用对应的字符集去解码。

        • 方式一:
          request.setCharacterEncoding(“utf-8”);

          注意:只针对post请求有效。

        • 方式二:
          new String(str.getBytes(“iso-8859-1”),”utf-8”);

          注:先还原得到浏览器发送过来的字节数组然后使用正确的字符集来解码.

        • 方式三:
          /conf/server.xml中直接改成UTF-8:
          < Connector port=”8080” protocol=”HTTP/1.1”
          connectionTimeout=”20000”
          redirectPort=”8443”
          URIEncoding=”UTF-8”/>

4. 如何获得请求参数值?

  • tring request.getParameter(String paramName);

    注意:
    1. paramName必须与实际传递的参数名一致,否则会获得null。
    2. 有可能获得空字符串。

  • String[] request.getParameterValues(String paramName);

    • 对于多选框和单选框,如果不选择任何选项,会获得null值。

猜你喜欢

转载自blog.csdn.net/qq_24653023/article/details/60954526