<>Response响应数据

<>1. response将字符数据返回到浏览器

需要两步:

* 通过response对象获取字符输出流PrintWriter writer = resp.getWriter();
* 通过字符输出流写数据:writer.writer(“aaa”);
案例
浏览器中打印出字符 /** * 响应字符数据:设置字符数据的响应体 */ @WebServlet("/resp3") public class
ResponseDemo3 extends HttpServlet { @Override protected void doGet(
HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException { response.setContentType(
"text/html;charset=utf-8"); //1. 获取字符输出流 PrintWriter writer = response.getWriter
(); writer.write("aaa"); } @Override protected void doPost(HttpServletRequest
request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response); } }
还可以返回html字符串,并且浏览器能解析出来,如下:
PrintWriter writer = response.getWriter();
//content-type,告诉浏览器返回的数据类型是HTML类型数据,这样浏览器才会解析HTML标签 response.setHeader(
"content-type","text/html"); writer.write("<h1>aaa</h1>");
注意: 一次请求响应结束后,response对象就会被销毁,所以不要手动关闭流

提醒 如果要返回一个中文字符串你好,需要设置响应数据编码为utf-8
//设置响应的数据格式及数据的编码 response.setContentType("text/html;charset=utf-8"); writer.
write("你好");
<>2. response响应字节数据

需要将字节数据写回到浏览器,我们需要两个步骤:

* 通过response对象获取字节输出流:servletOutputStream outputStream =
resp.getOutputStream();
* 通过字节输出流写数据:outputStream。write(字节数据);
1.返回一个图片文件到浏览器,如下: /** * 响应字节数据:设置字节数据的响应体 */ @WebServlet("/resp4") public
class ResponseDemo4 extends HttpServlet { @Override protected void doGet(
HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException { //1. 读取文件 FileInputStream fis = new
FileInputStream("d://a.jpg"); //2. 获取response字节输出流 ServletOutputStream os =
response.getOutputStream(); //3. 完成流的copy byte[] buff = new byte[1024]; int len
= 0; while ((len = fis.read(buff))!= -1){ os.write(buff,0,len); } fis.close(); }
@Override protected void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException { this.doGet(request, response);
} }
上述代码中,对于流的copy的代码还是比较复杂的,所以我们可以使用别人提供好的方法来简化代码的开发,具体的步骤如下:

* pom.xml添加依赖 <dependency> <groupId>commons-io</groupId> <artifactId>commons-
io</artifactId> <version>2.6</version> </dependency>
* 调用工具类方法 //fis:输入流 //os:输出流 IOUtils.copy(fis,os);
优化代码之后:
/** * 响应字节数据:设置字节数据的响应体 */ @WebServlet("/resp4") public class ResponseDemo4
extends HttpServlet { @Override protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException { //1. 读取文件
FileInputStream fis = new FileInputStream("d://a.jpg"); //2. 获取response字节输出流
ServletOutputStream os = response.getOutputStream(); //3. 完成流的copy IOUtils.copy(
fis,os); fis.close(); } @Override protected void doPost(HttpServletRequest
request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response); } }

技术
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:766591547
关注微信