Response对象
2015-11-11 00:00
351 查看
摘要: java servlet Response对象
###什么是Response
HttpServletResponse对象服务器的响应,这个对象封装了向客户端发送数据,发送响应头,发送响应状态码的方法.
####发送数据的两个方法,注意区别:
getOutputStream 字节流
getWriter 字符流
###向浏览器输出中文
####使用OutPutStream输出中文
####使用PrintWriter实现中文输出
###文件下载
###用refresh控制浏览器刷新
####message.jsp页面增加以下代码
####servlet增加以下代码
####新建index.jsp中增加以下代码
###用expires控制浏览器缓存
###response开发的一些细节
1.getOutputStream和getWrite方法分别用于得到输出二进制数据,输出文本数据的servletOutPutStream和PrintWriter对象
2.getOutPutStream和getWriter这两个方法互相排斥,调用其中的任何一个方法后,就不能再调用另一方法,Java.lange.IllegalStateException: getOutStream() has already been called for this response
3.Servlet的OutPutStream和PrintWriter对象中写入的数据将被servlet引擎从response中取出,servlt引擎将这些数据作为消息响应的正文,然后再与响应状态行和鸽子响应头组合后输出到客户端。
4.servlet的service方法结束后,servlet引擎将检查getWrite或getOutputStream方法返回的输出流对象是否已经调用过close方法,如果没有,servlet引擎将调用close方法关闭该输出流对象。
###response实现请求重定向
请求重定向是指,一个web资源受到客户端请求后,通知客户端去访问另外一个资源。
###什么是Response
HttpServletResponse对象服务器的响应,这个对象封装了向客户端发送数据,发送响应头,发送响应状态码的方法.
####发送数据的两个方法,注意区别:
getOutputStream 字节流
getWriter 字符流
###向浏览器输出中文
####使用OutPutStream输出中文
response.setHeader("content-type","text/html;charset=UTF-8"); String data = "中文"; OutputStream out = response.getOutputStream(); out.write(data.getBytes("UTF-8"); //程序以什么码表输出,程序就一定要控制浏览器以什么码表打开 out.write("<meta http-equiv='content-type';content='text/html;charset=UTF-8'>".getBytes()); //模拟http响应头 控制显示行为
####使用PrintWriter实现中文输出
response.setCharacterEncoding("UTF-8"); response.setHeader("content-type","text/html;charset=UTF-8"); //response.setContentType("text/html;charset=UTF-8"); String data="中文" PrintWriter out = response.getWriter(); out.write(data);
###文件下载
String path = this.getServletContext().getRealPath("/WEB-INF/classes/download/中文图片.jpg"); String fileName = path.substring(path.lastIndexOf("/") + 1); // 如果下载文件时中文名称,则文件名需经过URL编码 fileName = URLEncoder.encode(fileName, "UTF-8"); response.setHeader("content-disposition", "attachment;fileName=" + fileName); InputStream in = null; OutputStream out = null; try { in = new FileInputStream(path); int len = 0; byte buffer[] = new byte[1024]; out = response.getOutputStream(); while ((len = in.read(buffer)) > 0) { out.write(buffer, 0, len); } } catch (Exception e) { e.printStackTrace(); } finally { in.close(); }
###用refresh控制浏览器刷新
####message.jsp页面增加以下代码
页面将在三秒后实现跳转 <% String message = (String) request.getAttribute("message"); out.write(message); %>
####servlet增加以下代码
String message = "<meta http-equiv='refresh' content='3;url=/test-web/index.jsp'>"; response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); request.setAttribute("message", message); request.getRequestDispatcher("message.jsp").forward(request, response);
####新建index.jsp中增加以下代码
<h2> 这是跳转后的界面 </h2>
###用expires控制浏览器缓存
response.setDateHeader("expires",System.currentTimeMillis()+1000*3600); String data = "aaa"; response.getWriter().write(data);
###response开发的一些细节
1.getOutputStream和getWrite方法分别用于得到输出二进制数据,输出文本数据的servletOutPutStream和PrintWriter对象
2.getOutPutStream和getWriter这两个方法互相排斥,调用其中的任何一个方法后,就不能再调用另一方法,Java.lange.IllegalStateException: getOutStream() has already been called for this response
3.Servlet的OutPutStream和PrintWriter对象中写入的数据将被servlet引擎从response中取出,servlt引擎将这些数据作为消息响应的正文,然后再与响应状态行和鸽子响应头组合后输出到客户端。
4.servlet的service方法结束后,servlet引擎将检查getWrite或getOutputStream方法返回的输出流对象是否已经调用过close方法,如果没有,servlet引擎将调用close方法关闭该输出流对象。
###response实现请求重定向
请求重定向是指,一个web资源受到客户端请求后,通知客户端去访问另外一个资源。
应用场景:用户登录(地址栏变化提示用户) 实现方式:response.setRedirect() 实现原理:response.setStatus("302"); response.setHeader("location","/day06/index.jsp"); response.sendRedirect("/day06/index.jsp"); 重定向的特点: 1.浏览器会向服务器发送两次,意味着就有两对request\response 2.用重定向技术,地址栏会发生变化,用户登录和显示购物车时,通常会用重定向技术
相关文章推荐
- Request对象
- 会话技术介绍-cookie
- 属性化字符串问题集
- Android Studio Gradle 导出JavaDocJar提示编码GBK的字符无法映射解决
- 排序算法
- 微信 invalid signature 处理
- git push fatal: The remote end hung up unexpectedl
- 无参构造方法 ? 反射
- Android数据库小记
- MAC下SVN的常用命令
- IOS开发--循环引用问题,普通控件为什么用weak,代理为什么用weak,block内用到外面的东
- HTTP Status 500 - Unable to compile class for JSP
- Javascript 面向对象编程
- centos防火墙开发新端口
- Hadoop2.7.1配置NameNode+ResourceManager高可用原理分析
- SELinux下安装MariaDB/MySQL,并自定义数据库目录
- asp.net web 自定义控件
- 搭建CAS单点登录服务器
- Java课程设计笔记-Android系统获取所有存储器路径
- txt文件导入数据库的utf-8问题