HttpServletResponse的常见应用
1.下载文件
- 获取下载文件的路径
- 下载的文件名是啥
- 设置想办法让浏览器能够支持下载我们需要的东西
- 获取下载文件的输入流
- 创建缓冲区
- 获取OutputStream流写入到buffer缓冲区
- 使用OutputStream将缓冲区中的数据输出到客户端!
// * 获取下载文件的路径
String realPath = "C:\\Users\\wait\\.idlerc\\com.qiao\\response\\target\\classes\\1.jpg";
System.out.println("下载文件路径:"+realPath);
// * 下载的文件名是啥
String fileName = realPath.substring(realPath.lastIndexOf("\\") + 1);
// * 设置想办法让浏览器能够支持下载我们需要的东西
resp.setHeader("Content-Disposition","attachment;fileName"+fileName);
// * 获取下载文件的输入流
FileInputStream in = new FileInputStream(realPath);
// * 创建缓冲区
int len = 0;
byte[] buffer = new byte[1024];
// *获取outputstream对象
ServletOutputStream out = resp.getOutputStream();
// * 获取OutputStream流写入到buffer缓冲区,使用OutputStream将缓冲区中的数据输出到客户端!
while((len=in.read(buffer))>0){
out.write(buffer, 0,len);
}
in.close();
2.验证码实现
//如何让浏览器3秒钟刷新一次
resp.setHeader("refresh","3");
//在内存中创建一个图片
BufferedImage image = new BufferedImage(80,20,BufferedImage.TYPE_INT_BGR);
//得到图片
Graphics2D g = (Graphics2D)image.getGraphics();//笔
//设置图片的背景颜色
g.setColor(Color.white);
g.fillRect(0,0,80,20);
//给图片写数据
g.setColor(Color.BLUE);
g.setFont(new Font(null,Font.BOLD,20));
g.drawString(makeNum(),0,20);
//告诉浏览器,这个请求用图片的形式打开
resp.setContentType("image/jpeg");
//网站存在缓存,不让浏览器缓存
resp.setDateHeader("expires",-1);
resp.setHeader("Cache-Control","no-cache");
resp.setHeader("Pragma","no-cache");
//把图片写给浏览器
ImageIO.write(image,"jpg",resp.getOutputStream());
}
//生成随机数
private String makeNum(){
Random random = new Random();
String num = random.nextInt(9999999) + "";
StringBuffer sb = new StringBuffer();
for(int i=0; i<7-num.length(); i++){
sb.append("0");
}
num = sb.toString() + num;
return num;
}
3.重定向
resp.sendRedirect("/r/img"); //重定向
引用重定向
<html>
<body>
<h2>Hello World!</h2>
<meta charset="utf-8">
<%--${pageContext.request.contextPath}代表当前项目--%>
<from action="${pageContext.request.contextPath}/login" method="get">
用户名:<input type="text" name="username"> <br>
密码:<input type="password" name="password"> <br>
<input type="submit">
</from>
</body>
</html>
//处理请求
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println(username+":"+password);
//重定向
resp.sendRedirect("/r/success.jsp");