HttpServletResponse对象代表服务器的响应。

这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法。

几个方法:

  向客户端发送数据:

    getOutputStream()

    getWriter()

  

  两个流(getWriter()与getOutputStream())不能同时使用。
      字符流      字节流

  一个原则:在使用getWrite()之前,先调用setContentType("text/html;charset=utf-8")

  发送状态码

    setStatus()  发送成功状态等,也可以302

    当然,接口里定义了相关的相应的常量,无需直接写数字

常见的应用:

  1.生成图片验证码:

    主要用到的是封装好的生成类:VerifyCode 以及 BufferedImage (详细代码另一篇博客附上)

public class VerifyCodeServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/**
* 生成图片
* 保存图片上验证码文本到session域中
* 将图片响应给客户端
*/
VerifyCode vc = new VerifyCode();
BufferedImage image = vc.getImage();
request.getSession().setAttribute("vcode", vc.getText());
VerifyCode.output(image, response.getOutputStream()); } }

   2.设置相应头控制浏览器的行为:

      例如:

          response.setHeader("Cache-Control", "no-cache");//禁止缓存
       response.setHeader("refresh", "5");//设置refresh响应头控制浏览器每隔5秒钟刷新一次

         完成重定向,必须要带Location响应头!快捷重定向:sendRedirect(Location)
        完成定时刷新,使用Refresh(有点类似于过会儿再重定向),注意格式5;URL
        禁用浏览器缓存:(从index.jsp借着看)
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">

/**
* 是每个请求进来的话就发送给每个请求的客户端
**/
response.geWriter().print(msg);

   与write()方法的区别:

  • response.getWriter()返回的是PrintWriter,这是一个打印输出流。
  • response.getWriter().print(),不仅可以打印输出文本格式的(包括html标签),还可以将一个对象以默认的编码方式转换为二进制字节输出
  • response.getWriter().writer(),只能打印输出文本格式的(包括html标签),不可以打印对象。

  可参见:http://blog.csdn.net/sjl6666666666/article/details/53239820

  【更新】:实现文件下载:

     String path = this.getServletContext().getRealPath("/Download/定南中学.jpg");//获取文件的相对路径
String filename = path.substring(path.lastIndexOf("\\")+1);//获取文件名称,在转化为子串
//response.setHeader告诉浏览器以什么方式打开
//假如文件名称是中文则要使用 URLEncoder.encode()编码
//否则直接使用response.setHeader("content-disposition", "attachment;filename=" + filename);即可
response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));

    使用 输入流下载:

     InputStream in = null ;
OutputStream out = null ;
try
{
in = new FileInputStream(path); //获取文件的流
int len = 0;
byte buf[] = new byte[1024];//缓存作用
out = response.getOutputStream();//输出流
while( (len = in.read(buf)) > 0 ) //切忌这后面不能加 分号 ”;“
{
out.write(buf, 0, len);//向客户端输出,实际是把数据存放在response中,然后web服务器再去response中读取
}

    excel下载实例:

     response.setHeader("Content-Disposition", "attachment;filename="+new String(fileName.getBytes("utf-8"),"iso8859-1"));
response.setContentType("application/ynd.ms-excel;charset=UTF-8");
OutputStream out=response.getOutputStream();
wb.write(out);
out.flush();
out.close();

    下载实例:(基于jxls1.0)

    @RequestMapping("/export")
public String testExport(HttpServletResponse response) throws Exception{ String tplPath = "F:/tamp.xlsx";
String destPath = "F:/export.xlsx";
List<receiver> reclist = reSe.findall(); Map<String, List<receiver>> beanParams = new HashMap<String, List<receiver>>();
beanParams.put("reclist", reclist);
XLSTransformer former = new XLSTransformer();
former.transformXLS(tplPath, beanParams, destPath); InputStream in = null ;
OutputStream out = null ; in = new FileInputStream(destPath); //获取文件的流
int len = 0;
byte buf[] = new byte[1024];//缓存作用
response.setContentType("application/vnd..ms-excel");
response.setHeader("content-Disposition","attachment;filename="+URLEncoder.encode("export.xlsx","utf-8"));
out = response.getOutputStream();//输出流
while( (len = in.read(buf)) > 0 ) //切忌这后面不能加 分号 ”;“
{
out.write(buf, 0, len);//向客户端输出,实际是把数据存放在response中,然后web服务器再去response中读取
}
return null;
}
 

      

  

JavaWeb基础—HttpServletResponse的更多相关文章

  1. JavaWeb基础: ServletContext

    基本概念 Web容器在启动时,会为每个Web应用程序都创建一个对应的ServletContext对象,它代表当前Web应用. ServletContext(javax.servlet.http.Ser ...

  2. JavaWeb基础知识总结

    JavaWeb基础知识总结.   1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供 ...

  3. 超详细的Java面试题总结(四 )之JavaWeb基础知识总结

    系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java ...

  4. JavaWeb基础: 学习大纲

    JavaWeb基础: Web应用和Web服务器 JavaWeb基础: Tomcat JavaWeb基础:HTTP协议和基于Restful的架构 JavaWeb基础: Web工程配置文件 JavaWeb ...

  5. 关于java基础、多线程、JavaWeb基础、数据库、SSM、Springboot技术汇总

    作者 : Stanley 罗昊 本人自行总结,纯手打,有疑问请在评论区留言 [转载请注明出处和署名,谢谢!] 一.java基础 1.多态有哪些体现形式? 重写.重载 2. Overriding的是什么 ...

  6. [Java面试三]JavaWeb基础知识总结.

    1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供外界访问的Web资源分为: • 静 ...

  7. [JavaWeb基础] 002.JSP和SERVLET初级入门

    上一篇中,我介绍了javaweb项目的创建和Tomcat的搭建和部署,接下来我们要在上一篇的基础上去讲解一下简单的jsp和servlet交互,做出一个简单的登陆功能页面.该例子主要讲解了从页面请求道后 ...

  8. JavaWeb基础: 获取资源文件

    Web工程在编译构建完毕以后,需要部署到Tomcat上运行,资源的硬盘路径也会随着改变.要想对资源文件进行读写操作需要获取其硬盘地址,在Web工程中通常通过ServletContext/ClassLo ...

  9. JavaWeb基础:Servlet Response

    ServletResponse简介 ServletResponse代表浏览器输出,它提供所有HttpResponse的设置接口,可以设置HttpResponse的响应状态,响应头和响应内容. 生命周期 ...

随机推荐

  1. git常用命令简集

    基础操作: 初始化git仓库: git init 提交到暂存区: git add “filename” 提交到分支: git commit -m "注释" 工作区状态: git s ...

  2. 【转】SSL协议详解

    作者:朱祁林 出处:http://zhuqil.cnblogs.com 原文链接 背景介绍    最近在看<密码学与网络安全>相关的书籍,这篇文章主要详细介绍一下著名的网络安全协议SSL. ...

  3. Debian 版本历史

    Production Releases Version Code name Release date End of life date 8.0 jessie April 25th 2015   7.0 ...

  4. 机器学习数学知识中令人费解的notation符号注解

    $argmin_xf(x), min(f(x))$ $min(f(x))$的意思是函数$f(x)$的最小值 $argmin$的意思是返回使得表达式取得最小值时对应的输入变量值.例如$argmin_xf ...

  5. MYSQL 的rownum

    mysql> SELECT @rownum:=@rownum+1 AS rownum, FLIGHTS.FLTID FROM (SELECT @rownum:=0) r, FLIGHTS lim ...

  6. idea常用到的命令

    idea大小写转换:ctr+shift+u ctrl+alt+b,跳转到接口的方法实现处

  7. Office 365实现单点登录系列(5)—配置单点登录

    这是单点登录系列的最后一篇文章,前面4篇文章其实都是在为这篇文章的内容做准备,我把这四篇文章的链接放在下面,如果大家有需要,可以参考我以下的链接: Office 365实现单点登录系列(1)—域环境搭 ...

  8. 一、HTML概述 二、web相关的概念 三、HTML的常用标签

    一.HTML概述###<1>概念 HTML:Hypertext Markup Language,超文本 标记语言,用来描述网页的一种语言. 非编程语言,由浏览器直接解释运行. ###< ...

  9. jquery环形3D立体旋转特效

      jquery环形3D立体旋转特效 作者/代码整理:站长素材  (转载请附加本文地址,带有“懒人原生”字样的谢绝转载)发布日期:2013-07-20   立体效果比较强的jquery特效,周围小图组 ...

  10. Mysql索引详解及优化(key和index区别)

    MySQL索引的概念    索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库 ...