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对象的主要内容,如果未能解决你的问题,请参考以下文章