[关闭]
@duyao 2015-05-01T01:21:31.000000Z 字数 2425 阅读 1821

HttpServletResponse

servlet


1.向客户端输出数据:getWriter()和getOutpuStream()

getWriter()和getOutpuStream()的区别

a. getWriter()用于向客户端回送字符;getOutpuStream()返回的对象可以回送字节数据[getOutpuStream(string.getBytes())]和字符数据
b. 如何选择,如果回送字符数据,使用getWriter(),如果回送字节数据,使用getOutpuStream()
c. 注意:getOutpuStream()和getWriter()2种流不能同时使用,原因是不能同时又2个输出流

为什么response相关流没有关闭,不报错?

当response流返回给web服务器时,web服务器会将response拆解成http相应请求,并检查其相关流是否关闭,如果没有,则关闭。

2.sendRedirect()实现重定向

a. 将信息传送给下一个页面
response.sendRedirect("url?string1=s1&string2=s2");
response.sendRedirect("/userManager/MainFrame?nameString="+nameString);

优点:传送信息较快;缺点:只能传送字符串,不能传送对象
b.sendRedirect()不能传送对象,若传送对象要用session

3.发送http头,控制浏览器禁止缓存当前页面

  1. responce.setDataHeader("Expires",-1);
  2. response.setHeader("Cache-Control","no-cache");
  3. response.setHeader("Pragma","no-cache");
  4. //缓存一定时间,缓存一小时
  5. responce.setDataHeader("Expires",System.currentTimeMillis()+3600*1000);

4.文件下载

举个栗子:下载文件1.jpg
访问http://localhost:8080/myFirstWeb/Download完成下载图片
Downlaod.java

  1. package com.dy.http;
  2. import java.io.FileInputStream;
  3. import java.io.FileReader;
  4. import java.io.IOException;
  5. import java.io.OutputStream;
  6. import java.io.PrintWriter;
  7. import javax.servlet.ServletException;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. public class Download extends HttpServlet {
  12. /**
  13. * 演示页面下载功能,使用Content-Disposition关键字
  14. */
  15. public void doGet(HttpServletRequest request, HttpServletResponse response)
  16. throws ServletException, IOException {
  17. response.setContentType("text/html;charset=utf-8");
  18. //getWriter和getOutputStream不能同时出现
  19. //PrintWriter out = response.getWriter();
  20. //下载文件的报头
  21. response.setHeader("Content-Disposition", "attachment;filename=1.jpg");
  22. //1.获取全路径
  23. String path=this.getServletContext().getRealPath("/image/1.jpg");
  24. //System.out.println(path);
  25. //2.创建文件输入流,这样才可以下载
  26. FileInputStream fis=new FileInputStream(path);
  27. //创建缓冲
  28. byte [] buffer=new byte[1024];
  29. //每次实际读出多少比特
  30. int len=0;
  31. //二进制(字节)文件使用getOutpuStream()
  32. OutputStream os=response.getOutputStream();
  33. while((len=fis.read(buffer))>0){
  34. os.write(buffer, 0, len);
  35. }
  36. //关闭流
  37. os.close();
  38. fis.close();
  39. }
  40. public void doPost(HttpServletRequest request, HttpServletResponse response)
  41. throws ServletException, IOException {
  42. this.doGet(request, response);
  43. }
  44. }

5.生成随机验证码(undo)

小结

1.通过HttpServletResponse可以发送http头,来控制浏览器行为
2.通过HttpServletResponse提供的函数,完成相应的功能,如文件下载,生成随机验证码

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注