(14)javaWeb中的HttpServletResponse类详解
如果希望了解请求和响应的详细内容,可以看我的“HTTP协议”系列文章
响应体的简单概述:
a,响应报文结构:
b,常见的状态码,返回服务器处理的结果:
c,常见的响应头:
HttpServletResponse常用的方法
1,设置返回内容类型
response.setContentType("text/html");
response.setContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。
例如web浏览器就是通过MIME类型来判断文件是GIF图片。通过MIME类型来处理json字符串。
Tomcat的安装目录\conf\web.xml 中就定义了大量MIME类型 ,可以参考。
类型分类:
<option value="image/bmp">BMP</option> <option value="image/gif">GIF</option> <option value="image/jpeg">JPEG</option> <option value="image/tiff">TIFF</option> <option value="image/x-dcx">DCX</option> <option value="image/x-pcx">PCX</option> <option value="text/html">HTML</option> <option value="text/plain">TXT</option> <option value="text/xml">XML</option> <option value="application/afp">AFP</option> <option value="application/pdf">PDF</option> <option value="application/rtf">RTF</option> <option value="application/msword">MSWORD</option> <option value="application/vnd.ms-excel">MSEXCEL</option> <option value="application/vnd.ms-powerpoint">MSPOWERPOINT</option> <option value="application/wordperfect5.1">WORDPERFECT</option> <option value="application/vnd.lotus-wordpro">WORDPRO</option> <option value="application/vnd.visio">VISIO</option> <option value="application/vnd.framemaker">FRAMEMAKER</option> <option value="application/vnd.lotus-1-2-3">LOTUS123</option>
2,设置字符编码
response.setCharacterEncoding("UTF-8");
3,设置响应状态码
response.setStatus(200);
4,设置响应头
response.setHeader("privateUser", "yangzi");//也可以添加一些私人的头部信息
5,发送返回内容
response.getWriter().writer(); 发送字符实体内容
response.getOutputStream().writer() 发送字节实体内容
6,重定向
/** * 需求: 跳转到adv.html * 使用请求重定向: 发送一个302状态码+location的响应头 */ /* response.setStatus(302);//发送一个302状态码 response.setHeader("location", "/day09/adv.html"); //location的响应头 */ //请求重定向简化写法 response.sendRedirect("/day09/adv.html");
7,定时刷新
/** * 定时刷新 * 原理:浏览器认识refresh头,得到refresh头之后重新请求当前资源 */ //response.setHeader("refresh", "1"); //每隔1秒刷新次页面 /** * 隔n秒之后跳转另外的资源 */ response.setHeader("refresh", "3;url=/day09/adv.html");//隔3秒之后跳转到
8,返回内容+contentType配合使用
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /** * 设置响应实体内容编码 */ //response.setCharacterEncoding("utf-8"); /** * 1. 服务器发送给浏览器的数据类型和内容编码 */ //response.setHeader("content-type", "text/html"); response.setContentType("text/html;charset=utf-8");//和上面代码等价。推荐使用此方法 //response.setContentType("text/xml"); //response.setContentType("image/jpg"); //response.getWriter().write("<html><head><title>this is tilte</title></head><body>中国</body></html>"); response.getOutputStream().write("<html><head><title>this is tilte</title></head><body>中国</body></html>".getBytes("utf-8")); /*File file = new File("e:/mm.jpg"); *//** * 设置以下载方式打开文件 *//* response.setHeader("Content-Disposition", "attachment; filename="+file.getName()); *//** * 下载图片 *//* *//** * 发送图片 *//* FileInputStream in = new FileInputStream(file); byte[] buf = new byte[1024]; int len = 0; //把图片内容写出到浏览器 while( (len=in.read(buf))!=-1 ){ response.getOutputStream().write(buf, 0, len); }*/ }