JavaEE学习04--request&response

来源:互联网 发布:mac 断点续传工具 编辑:程序博客网 时间:2024/05/22 00:08

Response对象

Response对象简述

Response对象用于动态响应客户端请示,控制发送给用户的信息,并将动态生成响应。Response对象只提供了一个数据集合cookie,它用于在客户端写入cookie值。若指定的cookie不存在,则创建它。若存在,则将自动进行更新。结果返回给客户端浏览器。

HttpServletResponse对象中的方法

      响应首行 协议/版本号 状态码 状态码描述

             添加状态码和 描述

             voidsetStatus(int sc)                      只设置状态码

             voidsetStatus(int sc, String sm)     设置状态码和描述

             voidsendError(int sc)                       只设置状态码,错误的

       void sendError(int sc, String msg)    设置状态码和描述

      响应头

             添加响应头

             voidsetHeader(String name, String value)设置响应头,如果key一样会覆盖

                    setIntHeader(Stringname, int value)

                    setDateHeader(Stringname, long date)

 

             voidaddHeader(String name, String value)设置响应头,无论如何都新增.

             voidaddIntHeader(String name, int value)

             voidaddDateHeader(String name, long date) 

      响应空行

      响应正文

             getOutputStream       发送字节流

             getWriter                   发送字符流

Request对象

Request对象简述

request对象是从客户端向服务器发出的请求,里面包含了用户提交的信息以及客户端的一些信息。客户端可通过HTML表单或在网页地址后面提供参数的方法提交数据,服务器通过request对象的相关方法来获取这些数据。request的各种方法主要用来处理客户端浏览器提交的请求中的各项参数和选项。

Request对象解决编码问题

获得表单提交的参数

GET请求

http://localhost:8080/Day08-request/AServlet?name=tom&age=18

      乱码:只要确保编码和解码一致,就绝对没有问题.

      1.浏览器负责编码.浏览器使用的码表就是表单所在页面的码表.

      2.服务器负责解码.服务器默认使用ISO-8859-1解码.如下配置的URIEncoding来决定解码码表

<Connectorport="8080" protocol="HTTP/1.1" URIEncoding="UTF-8" connectionTimeout="20000" redirectPort="8443" />

      如上配置会影响整个服务器不推荐.

      我们使用如下代码解决:

             //获得参数

             Stringname = request.getParameter("name");

             //因为服务器使用了错误的码表,那么我们按照错误的码表原路返回

             byte[]nameByte = name.getBytes("ISO-8859-1");

             //用正确的码表重新解码

             StringnewName = new String(nameByte,"UTF-8");

             System.out.println("解决之后的:"+newName);

POST请求

因为Post解码是在第一次调用getParameter之前,那么解决乱码只需要在调用该方法之前设置编码:

      request.setCharacterEncoding("UTF-8");

      Stringname = request.getParameter("name");

      System.out.println(name);

Request的请求转发和包含功能

转发:

含义:

一个Servlet处理完毕交给下面的servlet(JSP)继续处理.

作用:

      开发中经常由Servlet处理数据,处理完交给JSP负责显示

      注意问题:

                    1.servlet中不要做输出正文的动作,没有结果

                    2.如果放到前面会出现乱码.

                    3.但是响应头是可以设置的.

包含:

含义:

      两个servlet(jsp)共同向浏览器输出内容.

作用:

      在现实开发中,多个页面含有相同的内容,我们把相同的内容抽取到一个jsp,在需要显示这个段内容的jsp,包含抽取的jsp.可以达到统一管理相同的内容的目的.

             

Request域的应用

原理:request对象中含有一个map.这个map就是request.

作用:在将来开发中.使用请求转发时,servlet处理完数据,处理结果要交给jsp显示.可以使用request域将处理结果由servlet带给jsp进行和显示有关的处理.

操作:

      1.setAttribute 存入一个键值对

      2.getAttribute 通过键取出值

      3.getAttributeNames获得域中所有键

      4.removeAttribute跟据键移除一个键值对           

Request的范围:

      一个request对象对应一个request(map).

      系统当前有多少个request就有多少request.

 

0 0
原创粉丝点击