Request和Response
1.Response重定向
(1).原始访问路径
(2)重定向后的路径
(3).效果图(url路径有所变化)
(4).截图效果
2.Response定时刷新
(1)写入html中的代码
(2)效果图
3.常见响应头
4.响应流输出一个表格
(1)代码
(2)效果图
(3)注意
☆两个流互斥(response.getWriter()和response.getOutputStream())
☆当响应完成之后,服务器会判断一下流是否已经关闭,若没有关闭,服务器会帮我们关闭.(底层使用的缓冲流)
5.文件下载之超链接下载(开发中一般不用)
(1)代码:
(2)效果图:
6.文件下载之编码下载
(1)代码
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取下载文件的名称
String filename = request.getParameter("name");
//注意中文乱码:
filename=new String(filename.getBytes("iso8859-1"),"utf-8");
ServletContext context = this.getServletContext();
//文件下载
//1.设置文件的mimeType
String mimeType = context.getMimeType(filename);
response.setContentType(mimeType);
//常见的浏览器将文件名称使用utf-8 不推荐 不兼容火狐
//response.setHeader("content-disposition", "attchment;filename="+URLEncoder.encode(filename, "utf-8"));
//方式1:通过的方式 通过工具类编码
//String _filename=DownLoadUtils.getName(request.getHeader("user-agent"), filename);
//response.setHeader("content-disposition", "attachment;filename="+_filename);
//方式2:网络上的方式 (8成好使)
response.setHeader("content-disposition", "attachment;filename="+new String(filename.getBytes("gbk"),"iso8859-1"));
//3.对拷流
//获取输入流
InputStream is = context.getResourceAsStream("/download/"+filename);
//获取输出流
ServletOutputStream os = response.getOutputStream();
/*int len=-1;
byte[] b=new byte[1024];
while((len=is.read(b))!=-1){
os.write(b, 0, len);
}*/
IOUtils.copy(is, os);
os.close();
is.close();
}
(3).下载工具类
* 因为常见浏览器下载如果有中文需要把下载文件名进行utf-8编码
* 而火狐浏览器不仅要进行utf-8编码还需要进行Base64编码
* IE浏览器需要进行utf-8编码后还需要把其中的空格替换成+
(4). 下载文件名转换工具类
public class DownLoadUtils {
public static String getName(String agent, String filename) throws UnsupportedEncodingException {
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");
}
return filename;
}
}
(5).流的对拷贝这里推荐appache组织的commons-io工具类
方法:IOUtils.copy(is, os);
7.验证码:
(1).思路
(2).验证码servlet可以网上搜索,一大堆
8.请求行
(1) 常见的方法
9.请求头
(1)常见方法:
10.请求参数
(1)示例
11.请求乱码问题
(1).原因
(2).post方式
12.域对象之Request
(1)定义
(2).示例
(3).目的servlet
(4).效果图
13.注册Demo
(1).概括
(2).
图 1
图 2
14.重定向和请求转发的区别