Java web笔记(三)

Response

服务器每次收到请求时,都会为这个请求开辟一个新的线程。

服务器会把客户端的请求数据封装到这个request对象中,request是请求数据的载体!

服务器还会创建response对象,这个对象和客户端连接在一起,他可以用来向客户端发送相应

1.response:其类型为HttpServletResponse

         ServletResponse-->与协议无关的类型

         HttpServletResponse-->与http协议有关的类型

          **  状态码:200表示成功,302表示重定向,404表示客户端错,500表示服务器端错

         方法

         sendError(int sc)  发送错误的状态码

         sendError(int sc, String msg) 也是发送错误状态码,同时带一个错误信息

         sendStatus(int sc) 发送成功的状态码,也可以发送302

 

         ** 头就是一个键值对,可能会存在一个头(一个名字,一个值),也可能会存在一个头(一个名字,多个值)

         setHeader(String name, String value):适用于单值的响应头,例如 response.addHeader("aaa", "AAA");  (重要)

         addHeader(String name, String value):适用于多值的响应头

                         response.addHeader("aaa", "A");
                         response.addHeader("aaa", "AA");
                         response.addHeader("aaa", "AAA");

         setIntHeader(String name, int value):适用于单值的int类型的头

         addIntHeader(String name, int value):适用于多值的int类型的头

         setDataHeader(String name, long value):适用于单值的毫秒类型的头

         addDataHeader(String name, long value):适用于多值的毫秒类型的头

2.重定向

          Java web笔记(三)_第1张图片

         /**
         * 重定向
         * 1.设置location
         * 2.发送302状态码
         */
        response.setHeader("Location", "/Response/CServlet");
        response.sendError(302);

        重定向分为两步,设置location,发送302,Java提供了一个快捷方式,完成重定向

        --sendRedirect(String location) 方法

3.定时刷新

         5秒后跳转到FServlet页面    

         response.setHeader("Refresh", "5;URL = /Response/FServlet");

         //Refresh是定时刷新响应头,5是5秒,URL是跳转页面

4.禁用浏览器缓存

        response.setHeader("Cache-Control", "no-cache");
        response.setHeader("pragma", "no-cache");
        response.setDateHeader("expires", -1);

5.相应体:通常是HTML或图片

        - response的两个流

               (1)ServletOutputStream:用来向客户端发送字节数据  ServletOutputStream out = response.getOutputStream();

               (2)PrintWriter,用来向客户端发送字符数据!需要设置编码  PrintWriter writer = response.getWriter();

               (3)两个流不能同时使用

 

request -->封装了客户端所有的请求数据

1.在request中,请求协议中的数据都可以通过request对象获取

请求行

请求头

空行

请求体(GET没体)

2.获取常用信息

获取客户端IP: request.getRemoteAddr();

获取请求方式:request.getMethod(),可能是POST可能是GET

3.获取HTTP请求头

String getHeader(String name) 适用于单值请求头

int getIntHeader(String name) 适用于单值int类型的请求头

long getDateHeader(String name) 适用于单值毫秒的请求头

Enumeration getHeaders(String name) 适用于多值请求头

 

你可能感兴趣的:(Java web笔记(三))