HttpServletResponse对象

Posted Vodka~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HttpServletResponse对象相关的知识,希望对你有一定的参考价值。

接收到客户端请求后,可以通过HttpServletResponse 对象进行直接响应,响应时需要获取输出流,客户端再接收到数据会被浏览器解析。
-getWriter() 获取字符流(响应回复的内容同样是字符)
-getOutputStream() 获取字节流(能响应一切数据)
-上面这两个方法不能同时使用(因为response对象只有一个)。

package com.StartSL;

import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;

/**
 * @author Vodka
 * @date 2021/08//17:49
 */
@WebServlet(name="Vodka" ,urlPatterns="/Res","/Vodka")
public class HttpResponse extends HttpServlet 
    @Override
    protected  void service(HttpServletRequest req, HttpServletResponse res)
        try 
            //        getWriter()   字符输出流(输出字符串)
//            PrintWriter wt = res.getWriter();
//            wt.write("Hello Vodka!Go ahead!");

            //  getOutputStream()   字符输出流(输出一切数据)
            ServletOutputStream SOS = res.getOutputStream();
            SOS.write("您隐藏在烟雾里\\n".getBytes());
            SOS.write("在瓶底书刻隶仿前朝的飘逸".getBytes());

        
        catch ( Exception e)
            e.printStackTrace();
        

    


4.响应乱码问题
-响应过程中,如果响应内容含有中文,当服务端和客户端使用的编码方式不同,则可能出现乱码。
-getWriter() ,使用该方法获取到的字符流,响应中文必定乱码,服务端在进行编码时,也默认会使用ISO-8859-1格式的编码,该编码
不支持中文。
-解决响应乱码的方法:保证客户端和接收端的编码一致

response.setCharacterEncoding("UTF-8");  //设置服务器端编码

response.setHeader("content-type","text/html;charset=UTF-8");   //设置客户端编码

//也可以选择同时设置客户端和服务端的编码格式

response.setContentType("text/html;charset=UTF-8");

5.服务器重定向
-重定向是一种服务器指导客户端的行为,客户端发出第一个请求被服务器处理后,服务器响应给客户端一个新地址(response.sendRedirect(url);),客户端接到响应后,根据服务器给的新地址,从新发起第二个请求,服务器接收请求并作出响应,重定向
完成。
-存在两次请求,两次不共享request对象包含的数据

package com.StartSL;

import javax.servlet.Servlet;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @author Vodka
 * @date 2021/08//17:28
 */
@WebServlet(name="vodka",urlPatterns="/One")
public class Redirect extends HttpServlet 
   @Override
   protected void service(HttpServletRequest req, HttpServletResponse res)
       System.out.println("准备重定向跳转到Two页面");
       try 
           res.sendRedirect("Two");
        catch (IOException e) 
           e.printStackTrace();
       
   



6.请求转发和重定向的区别
请求转发(req.getRequestDispatcher().forward()) 重定向(res.sendRedirect())
-一次请求,数据在req域中共享 -两次请求,req域中数据不共享
-服务器端行为 -客户端行为
-地址栏不发生变化 -地址栏发生变化
-绝对地址可以定位到站点后 -绝对地址可写到http://

以上是关于HttpServletResponse对象的主要内容,如果未能解决你的问题,请参考以下文章

HttpServletResponse 与 HttpServletRequest 4

HttpServletResponse对象

HttpServletResponse对象

4,学习总结-HttpServletResponse

HttpServletResponse对象之常见应用

重新认识HttpServletResponse对象,你学会了吗?--乐字节