14_Response

2017-06-09  本文已影响0人  AndroidCat
回顾
大纲
  1. 完成文件下载
    • 实质是文件的拷贝
  2. 生成验证码(了解)
    • 了解验证码的原理
    • 到企业中,每个企业都有自己封装好的验证码代码,直接调用
    • 还有第三方机构提供的代码
HttpServletResponse
概述
Response设置响应行的信息
Response设置响应头
addHeader(String name, String value) 
addIntHeader(String name, int value) 
addDateHeader(String name, long date)
setHeader(String name, String value) 
setDateHeader(String name, long date) 
setIntHeader(String name, int value)
重定向
httpServletResponse.setStatus(302);
httpServletResponse.setHeader("Location","/webProjectName/ServletName");
httpServletResponse.sendRedirect("/url");
定时刷新
//设置定时刷新头
httpServletResponse.setHeader("refresh","5;url=http://www.xxx.com");//时间是秒
使用js完成页面定时跳转
设置响应体
PrintWriter writer = response.getWriter();
writer.write("hello world");
response.setCharacterEncoding("utf-8");
responst.setHeader("Content-Type","text/html;charset=UTF-8");//character也可以

PrintWriter writer = response.getWriter();
writer.write("你好,世界");
responst.setHeader("Content-Type","text/html;charset=UTF-8");//character也可以,但是服务端还是要定义编码,用charset就不用

PrintWriter writer = response.getWriter();
writer.write("你好,世界");
responst.setContentType("text/html;charset=UTF-8");//character也可以,但是服务端还是要定义编码,用charset就不用

PrintWriter writer = response.getWriter();
writer.write("你好,世界");
response的outputStream
ServletOutputStrean getOutputStream()
//InputStream is = this.getClass().getClassLoader().getResourceAsStream(path);//类加载器只能加载src下的资源,我们的资源放在WEB-INF中,只能用FileInputStream手动创建输入流
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String path = getServletContext().getRealPath("WEB-INF/img/timg.jpg");
    //InputStream is = this.getClass().getClassLoader().getResourceAsStream(path);
    FileInputStream fis = new FileInputStream(path);
    ServletOutputStream os = response.getOutputStream();
    byte[] arr = new byte[1024];
    int length = 0;
    while((length=fis.read(arr))>0) {
        os.write(arr,0,length);
    }
    fis.close();
}
文件下载基本代码
if (agent.contains("MSIE")) {
    // IE浏览器
    filename = URLEncoder.encode(filename, "utf-8");
    filename = filename.replace("+", " ");
} else if (agent.contains("Firefox")) {
    // 火狐浏览器
    BASE64Encoder base64Encoder = new BASE64Encoder();
    filename = "=?utf-8?B?" + base64Encoder.encode(filename.getBytes("utf-8")) + "?=";
} else {
    // 其它浏览器
    filename = URLEncoder.encode(filename, "utf-8");                
}
repsonse细节点
  1. response获得的流对象不需要手动关闭,tomcat容器会帮我们关闭
  2. getWriter和getOutputStream不能同时调用
  3. 重定向后就不要往下写代码了
实现验证码功能
上一篇 下一篇

猜你喜欢

热点阅读