response入门
来源:互联网 发布:康佳网络电视售后电话 编辑:程序博客网 时间:2024/04/29 20:14
通过response设置响应行
设置响应行的状态码
setStatus(int sc)
通过response设置响应头
addHeader(String name , String value)
addIntHeader(String name , int value)
addDateHeader(String name , long date)
setHeader(String name , String value)
setDateHeader(String name , long date)
setIntHeader(String name , int value)
重定向:(1)状态码302 (2)响应头location 代表重定向的地址。
通过response设置响应体
(1)响应体设置文本
PrintWriter getWriter()获得字符流,通过字符流的write方法可以将字符串设置到response缓冲区中,随后Tomcat会将response缓冲区中的内容组装成http响应返回给浏览器端。
response缓冲区的默认编码是iso-8859-1,此码表没有中文。解决方法为:response.setContentType(“text/html;charset=UTF-8”);
(2)响应体设置字节(可以设置图片等等)
ServletOutputStream getOutputStream()获得字节流,通过该字节流的write方法可以向缓冲区中写入字节,再由Tomcat将response缓冲区中的内容组装成http响应返回给浏览器端。
以下为浏览器从服务器1.按照字节流读取文件 2.按字节流下载文件
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 使用response获得字节输出 ServletOutputStream out = response.getOutputStream(); //获得服务器上的图片 String repath = this.getServletContext().getRealPath("/javaweb流程.jpg"); InputStream in= new FileInputStream(repath); int len=0; byte[] buffer=new byte[1024]; while ((len=in.read(buffer))>0) { out.write(buffer, 0, len); } in.close(); out.close(); }
通过上图可以将图片从服务器端传输到浏览器,但浏览器直接解析图片显示在页面上,而不是提供下载。如果需要设置所有的文件都以下载的方式传输,我们需要设置两个响应头来告知浏览器文件的类型和打开方式:
(1)告知浏览器文件的类型:response.setContentType(文件的mime类型);
(2)告知浏览器文件的打开方式是下载:response.setHeader(“Content-Disposition”,”attachment;filename=文件名称”);
下面为代码:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获得要下载的文件的名称 String filename=request.getParameter("filename"); //获取文件的绝对路径 String realPath = this.getServletContext().getRealPath("download/"+filename); //要下载的文件的类型——客户端通过MIME区分类型 response.setContentType(this.getServletContext().getMimeType(filename)); //告诉客户端该文件不是直接解析而是以附件形式打开 response.setHeader("Content-Disposition","attachment;filename="+filename); //获得该文件的输入流 InputStream in = new FileInputStream(realPath); //获得输出流——通过response获得的输出流,用于向客户端写内容 ServletOutputStream out=response.getOutputStream(); //文件拷贝 int len=0; byte[] buffer=new byte[1024]; while((len=in.read(buffer))>0) { out.write(buffer, 0, len); } in.close(); out.close(); }
response细节点:
1)response获得的流不需要手动关闭,tomcat会帮我们关掉
2)getWriter和getOutputStream不能同时调用
- response入门
- javaweb开发入门-response对象
- Serlet Request和Response入门
- request和response快速入门
- 爬虫学习01 requests入门 response的常用方法 response.text 和response.content的区别
- ASP入门(五):内置对象Response
- ZeroMQ(java)入门之Requerst/Response模式
- JavaWeb入门实战—Request&Response
- javaweb入门笔记(4)-request和response
- servlet入门(四)--response对象
- 8 servlet的入门request和response
- ZeroMQ(java)入门之Requerst/Response模式
- Response
- response
- response
- response
- Response
- response
- Iframe 和父页面交互+Iframe 的onclick()事件
- 关于将build 后发布到hololens时,“error MSB3073..已退出,代码为1“
- leetcode 007 Reverse Integer
- 关于持续集成,质量管理,工具等
- 封装函数轮播图多页面使用
- response入门
- TensorFlow 实现一元线性回归模型
- CodeForces
- UI游戏框架(三)
- JAVA 内部类创建及使用
- linux c 运算符 表达式
- Vue2.0 爬坑问题集锦
- 数字货币使用区块链开发技术由浅入深指南
- 爬虫技术