两个输出流的说明。
字节流 getOutputStream(); 常用于下载(传递二进制数据)
字符流 getWriter(); 常用于回传字符串(常用)
两个流同时只能使用一个。
使用了字节流,就不能再使用字符流,反之亦然,否则就会报错。
package top.qaqaq.P154;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* @author RichieZhang
* @create 2022-12-05 下午 7:47
*/
public class ResponseIOServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// super.doGet(req, resp);
//两个流同时只能使用一个。
//使用了字节流,就不能再使用字符流,反之亦然,否则就会报错。
// resp.getWriter();
// resp.getOutputStream();
// 字节流 getOutputStream(); 常用于下载(传递二进制数据)
// 字符流 getWriter(); 常用于回传字符串(常用)
System.out.println(resp.getCharacterEncoding());//默认ISO-8859-1
//方式一:
// 设置服务器字符集为UTF-8
// resp.setCharacterEncoding("UTF-8");
// 通过响应头,设置浏览器也使用UTF-8字符集
// resp.setHeader("Content-Type","text/html; charset=UTF-8");
//方式二
// 它会同时设置服务器和客户端都使用UTF-8字符集,还设置了响应头
// 此方法一定要在获取流对象之前调用才有效
resp.setContentType("text/html; charset=UTF-8");
System.out.println(resp.getCharacterEncoding());
// 要求 : 往客户端回传 字符串 数据。
PrintWriter writer = resp.getWriter();
// writer.write("response's content!!!");
writer.write("你好");
}
}
<servlet>
<servlet-name>ResponseIOServlet</servlet-name>
<servlet-class>top.qaqaq.P154.ResponseIOServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ResponseIOServlet</servlet-name>
<url-pattern>/responseIOServlet</url-pattern>
</servlet-mapping>