`
剑晨java
  • 浏览: 23550 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

response的一些笔记

阅读更多
   web服务器针对客户端的每次Http请求,会创建一个代表请求的request和代表响应的response,如此我们如果想得到客户端提交的数据,只要找request对象,而想要向客户端输出数据,只要找response对象。response的一些方法看一看API就知道,一直听着这样的话,学java,要有面向对象的思想,并要联系生活,不需要记各个方法,只需要记一个个对象,并理解这些对象,那么在联想什么样的对象应该具有什么方法就行。另外,学习新的知识,就是学习它的API,所以要经常翻API,如果搞清楚了API,也就理解了这个技术。
    下面是一些response的常见应用。   
    (1)向客户端输出数据。
     response得到输出流有两种,一种字节流OutputStream,一种字符流PrintWriter。字节流什么数据都能输出,而字符流只能输出字符串。
     数据输出最需要注意的问题就是乱码问题,因为各个编码表编码方式不一样,如果服务器和客户机采取的编码表不一致,就很容易出现乱码。所以要在数据输出前告诉客户机打开数据应该采用的编码表。
	  //设置response编码码表
	response.setCharacterEncoding("UTF-8");
		//设置浏览器打开编码码表方法一
		response.setHeader("content-type", "text/html;charset=UTF-8");
		//设置浏览器打开编码码表方法二
		response.setContentType("text/html;charset=UTF-8");
		//设置浏览器打开编码码表方法三
		response.getWriter().write("<meta http-equiv='content-type' content='text/html;charset=UTF-8'>");

    (2)文件下载。
     
   //得到资源在硬盘的绝对地址
		String path=this.getServletContext().getRealPath("/download/qq.jpg");
		//得到文件的名称
		String name=path.substring(path.lastIndexOf("\\")+1);
		//设置浏览器以下载方式打开
		response.setHeader("content-disposition", "attachment;filename="+name);
		InputStream ins=null;
		OutputStream ous=null;
		try{
			ins=new FileInputStream(path);
			int len=0;
			byte[] buffer=new byte[1024];
			ous=response.getOutputStream();
			while((len=ins.read(buffer))>0){
				ous.write(buffer,0,len);
			}
		}finally{
			if(ins!=null){
				try{
					ins.close();
				}catch(Exception e){
					e.printStackTrace();
				}
			}
		}

     此处,如果文件名为中文,也会出现问题,下载文件名将会消失。需要在文件名使用前加上一行代码,将文件名进行URL编码。
	String name1=URLEncoder.encode(name, "UTF-8");

     (3)发送http头控制定时刷新页面。
       这也是web开发中经常使用的,比如注册或登陆成功后会出现一个消息提示页面,并在3秒后自动跳转。
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter writer=response.getWriter();
response.setHeader("refresh", "3;url='/Test/index.jsp'");
writer.write("恭喜您登陆成功,页面将于3秒后自动跳转到首页,如果没有跳转,<a href='/Test/index.jsp'>请点击这里</a>");

     (4)发送http头控制浏览器禁止缓存当前文档内容。
        有时要让浏览器不缓存文档内容,比如随机图片(验证码)。
//控制所有浏览器不要缓存
response.setDateHeader("expires",-1);
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");

      当然也可以控制缓存时间。
//注意此处时间单位毫秒,并要加上当前时间
response.setDateHeader("expires", System.currentTimeMillis()+1000*3600);

      (5)请求重定向。
       web资源受到客户机的请求后,通知客户机去访问另一个文web资源,即为请求重定向。此处初学时容易和request的请求转发混淆,并且不能很清楚什么时候用什么方式。请求重定向一个特点就是浏览器的地址栏地址会发生变化,也就是浏览器实际发出了两次访问请求,以此,比如在用户登陆后,显示登陆成功消息后,就要用请求重定向,这样用户体验感更好。实现代码。
 response.sendRedirect("/Test/index.jsp");


    另外还有一些细节:(1)getOutputStream()和getWriter()方法互斥,调用其中之一后就不能再使用另一个,开发中要注意。(2)servlet向ServletOutputStream或PrintWriter对象中写入的数据将会被servlet引擎从response中获取,并将其作为响应消息的正文,与响应状态码和个响应头组合后输出给客户端。(3)servlet调用完service方法后会检查ServletOutputStream或PrintWriter对象是否已经调用close方法,如果没有,servlet引擎将调用close方法。
分享到:
评论

相关推荐

    request+response学习笔记

    request+response学习笔记

    树懒_day07_request_response笔记

    移动开发的小白树懒,此文档写的是servlet的request/response的笔记...阐述了一些request和response常用的api.

    Response笔记1

    1. HTTP协议:响应消息 2. Response对象 3. ServletContext对象 1. 请求消息:客户端发送给服务器端的数据 1. 请求行 2.

    【ASP.NET编程知识】ASP.NET笔记之 Request 、Response 与Server的使用.docx

    【ASP.NET编程知识】ASP.NET笔记之 Request 、Response 与Server的使用.docx

    黑马程序员servlet笔记代码

    黑马程序员javaweb servlet笔记,覆盖课程http、servlet、request、response

    Java web servlet笔记

    httpservlet response

    html笔记.txt

    Response(Javax.servlet.ServletResponse)作为JSP页面处理结果返回给用户的响应存储在该对象中。并提供了设置响应内容、响应头以及重定向的方法(如cookies,头信息等) Out(Javax.servlet.jsp.JspWriter)用于将内容...

    JavaWeb入门学习笔记.chm

    此文档为传智播客老师JavaWeb入门视频的笔记,其中包含...3.笔记内容包括:HTML、CSS、JavaScript、XML、Java基础加强、Servlet、Request和Response、Cookie和Session、JSP、JSTL、MySQL、JDBC、ajax、综合案例网上书城

    JAVAWeb全课程笔记( html版)

    Request&Response编程 Cookie&Session XML语言 JSP技术入门 EL表达式语言 JSTL标签库: JSP标准标签库 MVC程序架构思想&案例 [总结]Path路径问题 [总结]JavaWeb乱码问题 [转自IBM]中文编码问题 JDBC入门 Jdbc事务...

    ASP.NET笔记之 Request 、Response 与Server的使用

    本篇文章小编为大家介绍,ASP.NET笔记之 Request 、Response 与Server的使用。需要的朋友参考下

    python爬虫学习笔记 4.7 (Request/Response)

    python爬虫学习笔记 4.7 (Request/Response) Request Request 部分源码: # 部分代码 class Request(object_ref): def __init__(self, url, callback=None, method='GET', headers=None, body=None, cookies=...

    AMBA2 AHB学习笔记1

    AMBA2建议Slave HREADY信号低电平等待时间不超过16个时钟周期,该值寄存器可配Slave RESPONSE中如果该值为SPLIT或RETRY时,本

    过滤器笔记整理

    Filter 技术使用户可以改变一个request和修改一个response。 Filter 不是一个servlet,它能够在一个request到达servlet之前预处理request,也可以在离开servlet时处理response。换种说法,filter其实是一个”servlet...

    urllib2学习笔记

    urllib2学习笔记,用于平时学习时的笔记使用: #返回读取网页全部内容,字符串 html = response.read() #返回访问的问页响应码 print response. getcode() #返回实际数据的URL print response.geturl() #返回访问...

    JSP基础札记笔记

    第四讲 内置对象--response 19 第五讲 Cookie 22 第六讲 内置对象--out、pageContext 25 第七讲 JSP四种属性范围 27 第八讲 application 31 第九讲 session内置对象 38 第十讲 config内置对象 50 第十一讲 page对象/...

    Emergency-Response-Notes:应急响应实战笔记,一个安全工程师的自我修养

    GitBook地址: ://bypass007.github.io/Emergency-Response-Notes/ 项目介绍 面对各种各样的安全事件,我们该怎么处理? 这是一个关于安全事件应急响应的项目​​,从系统入侵到事件处理,收集和整理了一些案例进行...

    JAVA WEB 新手入门笔记

    九、 Servlet & request & response 十、 JSP & EL 十一、 Cookie & Session 十二、 Listener 十三、 Filter 十四、 文件的上传和下载 十五、 Jquery 十六、 Redis 十七、 nginx & svn 十八、 框架基础加强...

    关于编程Servlet之类的笔记

    主要是一些关于Servlet编程,如监听器、过滤器、表达式语言、request对象和response对象之类的讲解笔记;

    Java学习资料 JavaWeb详细笔记 Javaweb是Web开发的基础,学习整理的笔记,十分详细,包括下面的部分

    Javaweb是Web开发的基础,学习整理的笔记,十分详细,包括下面的部分 JDBC HTTP协议 Web服务器 Servlet Request Response JSP MVC模式和三层架构 会话技术 Filter Listener

Global site tag (gtag.js) - Google Analytics