response对象(响应)
响应行
状态码 :setStatus(int a) 设置状态码 302重定向 304控制缓存
响应头
setHeader() 一个key对应一个value
addHeader() 一个key对应多个value
响应体
getOutputStream() 字节输出流
getWriter() 字符输出流
* 实现重定向
1.设置状态码(302) 设置头location
2.重定向的方法:sendRedirect("客户端绝对路径"); (/项目名/文件名)
* 页面的定时刷新
使用refresh头完成页面的定时刷新 setHeader("refresh","5;url=/项目名/xxx");
使用HTML的标签<meta>
* 禁用浏览器的缓存(设置三个头信息 CEP)
* 向页面输出中文乱码的问题
* 字节流
设置浏览器打开文件时的编码
response.setHeader("Content-Type","text/html;charset=UTF-8");
获取字符串的字节数组
"中文".getBytes("UTF-8");
* 字符流
设置浏览器打开文件时的编码
response.setHeader("Content-Type","text/html;charset=UTF-8");
设置response缓冲区的编码(默认是ISO-8859-1)
response.setCharacterEncoding("UTF-8");
* 简单方式
response.setContentType("text/html;charset=UTF-8");
* 文件下载
* 通过IO流进行读取
* 设置头信息 setHeader("Content-Disposition","attachment;filename="+文件名称); 以附件的形式打开
* 验证码的实现
* 在内存中生成图片 BufferedImage
* 获取画笔的对象
* 画图片背景色
* 设置旋转和颜色
* 画验证码的字符或数字
* 设置干扰线颜色和坐标
* 画干扰线
* 输出图片到浏览器 ImageIO.write(BufferedImage,"jpg",response.getOutputStream());
* 通过img标签的src的属性 设置验证码图片
* request对象(请求)
* 获取客户机的信息
request.getRemoteAddr() 获取访问者ip
request.getMethod() 获取请求方式
request.getContextPath() 获取虚拟路径
* 获取请求参数
request.getParameter("表单中name属性的值");
request.getParameterValues(); 获取复选框的内容
request.getParameterMap() 获取键值对的形式
* request获取中文乱码的问题
* post
* 设置request缓冲区的编码
request.setCharacterEncoding("UTF-8");
* get
* 通过String的构造方式
username = new String(username.getBytes("ISO-8859-1"),"UTF-8");
* request域对象
* ServletContext域对象:作用空间为整个WEB应用。
* request域:作用空间为一次request请求。
* 重定向和转发区别
* 重定向中浏览器发送两次请求,收到两次响应,转发只有一次请求和一次响应。
* 重定向地址栏发生了变化(指向重定向后的地址),转发地址栏不变(为原始访问地址)。
* 重定向不能使用request传值(因为实际上发送了2次request请求),转发可以(只有一次request请求)。
* 重定向可以定向到任何资源(包括网络上的任何资源)。转发只能是当前web应用内部资源。