7.6HttpServletResponse 类
7.6.1HttpServletResponse 类的作用
HttpServletResponse 类和 HttpServletRequest 类一样。每次请求进来,Tomcat 服务器都会创建一个 Response 对象传递给 Servlet 程序去使用。
HttpServletRequest 表示请求过来的信息,HttpServletResponse 表示所有响应的信息,我们如果需要设置返回给客户端的信息,都可以通过HttpServletResponse 对象来进行设置。
7.6.2两个输出流的说明
字节流 getOutputStream(); 常用于下载(传递二进制数据);
字符流 getWriter(); 常用于回传字符串(常用)
注意:两个流同时只能使用一个。 使用了字节流,就不能再使用字符流,反之亦然,否则就会报错。
7.6.3往客户端回传数据
1. public class ResponseIOServlet extends HttpServlet {
2. @Override
3. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
4. IOException {
5. // 要求 : 往客户端回传 字符串 数据。
6. PrintWriter writer = resp.getWriter();
7. writer.write("response's content!!!");
8. } 9. }
7.6.4响应的乱码解决
方案一(不推荐使用):
1. // 设置服务器字符集为 UTF-8
2. resp.setCharacterEncoding("UTF-8");
3. // 通过响应头,设置浏览器也使用 UTF-8 字符集
4. resp.setHeader("Content-Type", "text/html; charset=UTF-8");
方案二(推荐使用):
1. // 它会同时设置服务器和客户端都使用 UTF-8 字符集,还设置了响应头
2. // 此方法一定要在获取流对象之前调用才有效
3. resp.setContentType("text/html;
``
### 7.6.5请求重定向
请求重定向,是指客户端给服务器发请求,然后服务器告诉客户端说。我给你一些地址。你去新地址访问。叫请求重定向(因为之前的地址可能已经被废弃)。
![在这里插入图片描述](https://img-blog.csdnimg.cn/119399150aac460fb0e690cfe02ed0d7.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAUENDLg==,size_20,color_FFFFFF,t_70,g_se,x_16)
实现重定向的方案一(不推荐使用):
```java
1. // 设置响应状态码 302 ,表示重定向,(已搬迁)
2. resp.setStatus(302);
3. // 设置响应头,说明 新的地址在哪里
4. resp.setHeader("Location", "http://localhost:8080");
实现重定向方案二(推荐使用):
1. resp.sendRedirect("http://localhost:8080");