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学习笔记
移动开发的小白树懒,此文档写的是servlet的request/response的笔记...阐述了一些request和response常用的api.
1. HTTP协议:响应消息 2. Response对象 3. ServletContext对象 1. 请求消息:客户端发送给服务器端的数据 1. 请求行 2.
【ASP.NET编程知识】ASP.NET笔记之 Request 、Response 与Server的使用.docx
黑马程序员javaweb servlet笔记,覆盖课程http、servlet、request、response
httpservlet response
Response(Javax.servlet.ServletResponse)作为JSP页面处理结果返回给用户的响应存储在该对象中。并提供了设置响应内容、响应头以及重定向的方法(如cookies,头信息等) Out(Javax.servlet.jsp.JspWriter)用于将内容...
此文档为传智播客老师JavaWeb入门视频的笔记,其中包含...3.笔记内容包括:HTML、CSS、JavaScript、XML、Java基础加强、Servlet、Request和Response、Cookie和Session、JSP、JSTL、MySQL、JDBC、ajax、综合案例网上书城
Request&Response编程 Cookie&Session XML语言 JSP技术入门 EL表达式语言 JSTL标签库: JSP标准标签库 MVC程序架构思想&案例 [总结]Path路径问题 [总结]JavaWeb乱码问题 [转自IBM]中文编码问题 JDBC入门 Jdbc事务...
本篇文章小编为大家介绍,ASP.NET笔记之 Request 、Response 与Server的使用。需要的朋友参考下
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建议Slave HREADY信号低电平等待时间不超过16个时钟周期,该值寄存器可配Slave RESPONSE中如果该值为SPLIT或RETRY时,本
Filter 技术使用户可以改变一个request和修改一个response。 Filter 不是一个servlet,它能够在一个request到达servlet之前预处理request,也可以在离开servlet时处理response。换种说法,filter其实是一个”servlet...
urllib2学习笔记,用于平时学习时的笔记使用: #返回读取网页全部内容,字符串 html = response.read() #返回访问的问页响应码 print response. getcode() #返回实际数据的URL print response.geturl() #返回访问...
第四讲 内置对象--response 19 第五讲 Cookie 22 第六讲 内置对象--out、pageContext 25 第七讲 JSP四种属性范围 27 第八讲 application 31 第九讲 session内置对象 38 第十讲 config内置对象 50 第十一讲 page对象/...
GitBook地址: ://bypass007.github.io/Emergency-Response-Notes/ 项目介绍 面对各种各样的安全事件,我们该怎么处理? 这是一个关于安全事件应急响应的项目,从系统入侵到事件处理,收集和整理了一些案例进行...
九、 Servlet & request & response 十、 JSP & EL 十一、 Cookie & Session 十二、 Listener 十三、 Filter 十四、 文件的上传和下载 十五、 Jquery 十六、 Redis 十七、 nginx & svn 十八、 框架基础加强...
主要是一些关于Servlet编程,如监听器、过滤器、表达式语言、request对象和response对象之类的讲解笔记;
Javaweb是Web开发的基础,学习整理的笔记,十分详细,包括下面的部分 JDBC HTTP协议 Web服务器 Servlet Request Response JSP MVC模式和三层架构 会话技术 Filter Listener