HttpResponse的使用方法

HttpRequest类是一个封闭HTTP提交信息的类型,而封闭HTTP输出信息的类型就是HttpResponse类,使用HttpResponse类可以实现三种类型的输出,即文本,URL,二进制流.
实现这三类的属性和方法分别介绍如下:
1.文本的输出,在日常开发中,后台中的文本可能需要输出到浏览器中,让用户浏览,这就需要实现动态HTML的输出,使用HttpResponse类的Write静态方法可以实现,例如希望在浏览器上显示一个”hello world!”的字样时,可以在Page_load方法中增加如下代码,就可以实现:
Response.write(“hello world!”)
2.URL的输出,程序开发经常需要根据情况将用户浏览的界面重定向到其他页面,例如,用户在没有登录的状态下查看自己的信息,系统需要首先将其转向到登录页,登录后再转回信息浏览页,实现URL的输出可以使用HttpResponse类的redirect方法实现,代码如下:
response.redirect(“http://www.djjwz.com/“)
3.二进制流,有时需要将服务器上的文件提供给用户下载,或者在浏览器端动态生成一幅图片,例如,验证的初一二进制流输出到用户浏览器中.

response.setContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。
例如web浏览器就是通过MIME类型来判断文件是GIF图片。通过MIME类型来处理json字符串。

Tomcat的安装目录\conf\web.xml 中就定义了大量MIME类型 ,可以参考。
response.setContentType(“text/html; charset=utf-8”); html
.setContentType(“text/plain; charset=utf-8”); 文本
text/javascript json数据
application/xml xml数据

这 个方法设置发送到客户端的响应的内容类型,此时响应还没有提交。给出的内容类型可以包括字符编码说明,例 如:text/html;charset=UTF-8.如果该方法在getWriter()方法被调用之前调用,那么响应的字符编码将仅从给出的内容类型 中设置。该方法如果在getWriter()方法被调用之后或者在被提交之后调用,将不会设置响应的字符编码,在使用http协议的情况中,该方法设 置 Content-type实体报头。
一般在Servlet中,习惯性的会首先设置请求以及响应的内容类型以及编码方式:
response.setContentType(“text/html;charset=UTF-8”);
request.setCharacterEncoding(“UTF-8”);

response.setContentType()的String参数及对应类型

<option   value="image/bmp">BMPoption>   
<option   value="image/gif">GIFoption>   
<option   value="image/jpeg">JPEGoption>   
<option   value="image/tiff">TIFFoption>   
<option   value="image/x-dcx">DCXoption>   
<option   value="image/x-pcx">PCXoption>   
<option   value="text/html">HTMLoption>   
<option   value="text/plain">TXToption>   
<option   value="text/xml">XMLoption>   
<option   value="application/afp">AFPoption>   
<option   value="application/pdf">PDFoption>   
<option   value="application/rtf">RTFoption>   
<option   value="application/msword">MSWORDoption>   
<option   value="application/vnd.ms-excel">MSEXCELoption>   
<option   value="application/vnd.ms-powerpoint">MSPOWERPOINToption>   
<option   value="application/wordperfect5.1">WORDPERFECToption>   
<option   value="application/vnd.lotus-wordpro">WORDPROoption>   
<option   value="application/vnd.visio">VISIOoption>   
<option   value="application/vnd.framemaker">FRAMEMAKERoption>   
<option   value="application/vnd.lotus-1-2-3">LOTUS123option>

MIME映射策略就是在网页中使用哪个应用程序(即插件),打开哪种文件。另外还有使用权限问题。比如对PDF文档,用“application/pdf “策略。这在动态网页中很常见。出现这种现象,有两种情形:一是使用一个应用程序去打开它不能打开的文档,比如用在标签中定义“DWG”文档用 “application/pdf ”,就会出现无法打开的问题。二是文件扩展名符合要求,但文件内容(格式)不符合要求。你可以检查你浏览的网页源代码,获得出错信息。检查方法是:查看— 源文件。寻找类似于“application/pdf “的字符串,就可以看到,要打开的文件是否与应用程序匹配。 追问 如果不相匹配 如何解决回答 这通常是由网页编写人来更改。比如:你在源文件里面找到你要打开的文件的HTML标签,在里面加上应用程序即可。比如,你要在网页上打开一个PDF文档, 找到PDF文档那一行,在HTML标签里加上 type=“application/pdf “ 就可以了。比如以下HTML文件: 测试MIME 测试MIME

另外一个详细讲解:
http://guoying252166655.iteye.com/blog/2041373

具体实践的java代码:

    @RequestMapping("/inJsonOutUrl")
    @ResponseBody
    public void inJsonOutUrl(String json, String fileName, String fileType, HttpServletResponse response) {
        ResultForm result = null;
        byte[] contentInBytes = new byte[0];
        contentInBytes = json.getBytes();
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=UTF-8");
        String header = "attachment; filename=" + fileName + "." + fileType;
        response.setHeader("Content-disposition", header);
        try {
            response.getOutputStream().write(contentInBytes);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

你可能感兴趣的:(java技术总结)