Servlet的response学习笔记
先附上Response的常用方法
1、响应行 HTTP/1.1 200 OK
setStatus(int sc) 设置响应状态码
2、响应头
sendRedirect(String location) 请求重定向
setHeader(String name, String value) 设置响应头信息
response.setHeader("content-type", "text/html;charset=UTF-8");//告知浏览器使用什么码表
//告知客户端不缓存
response.setHeader("pragma", "no-cache");
response.setHeader("cache-control", "no-cache");
response.setDateHeader("expires", 0);
Referesh刷新
3、响应正文(主体)
getWrite(); 字符输出流
getOutputStream(); 字节输出流
setCharacterEncoding(String charset) 告知服务器使用什么编码
setContentType(String type)
实例1.字符流和字节流向客户端写出中文
注意点就是 如果输出单一数字记得要把数字变为字符串
实例2下载文件
注意点就是记得设置头部信息,设置下载文件的名字为中文记得要用URLEncoder进行转码
response.setHeader("content-disposition", "attachment;filename="+URLEncoder.encode(fileName, "UTF-8"));
实例三验证码
下面是网页中的内容,注意点是每次点击让他刷新,所以写了一个js更新了请求。
如果想要刷新变化,那么需要服务端写头部指定不使用缓存
这样验证功能就完成了.
总结一些response比较实用的东西
1.转码头部信息
response.setContentType("text/html; charset = UTF-8"); //既告诉了浏览器,也告诉了服务器以何种方式解析
2.字节流如何传递中文(字符串如何转换为指定格式的字节数组)
outputStream.write("你好".getBytes("UTF-8"));
3.文件下载的几个重点,获取文件路径,解析中文文件名,设置下载文件的头部信息
String path = this.getServletContext().getRealPath("/WEB-INF/img/反射的三个阶段.png");
filename = URLEncoder.encode(filename, "UTF-8");
response.setHeader("content-disposition", "attachment;filename="+filename);
response.setHeader("content-type", "img/jpeg");
3.告诉客户端不使用缓存
response.setHeader("pragma", "no-cache");
response.setHeader("cache-control", "no-cache");
response.setHeader("expires", "0");
4.设置客户端多久刷新一次,或者设置客户端多久之后跳转
response.setIntHeader("refresh", 2); //2s刷新一次
response.getWriter().write("3s跳转"); //3s之后跳转demo6
response.setHeader("refresh", "3;/day_09_00_HttpServletService/servlet/HttpServletResponseDemo6");
5.设置重定向
response.setStatus(302); // 上面这两句,等于最下面那一句
response.setHeader("location", "/day_09_00_HttpServletService/servlet/HttpServletResponseDemo6");
response.sendRedirect("/day_09_00_HttpServletService/servlet/HttpServletResponseDemo6");