Response
一、下载文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| package com.saxon.servlet;
import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.FileInputStream; import java.io.IOException;
public class DownLoading extends HttpServlet { @Override protected void doGet (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String location = "..\\1.png" String filename = location.substring (location.lastIndexOf ("\\") + 1); resp.setHeader ("Content-Disposition", "attachment; filename=" + filename); int len = 0; byte[] buffer = new byte[1024]; FileInputStream in = new FileInputStream (location); ServletOutputStream out = resp.getOutputStream (); while (in.read (buffer) != - 1) { out.write (buffer, 0, len); } out.close (); in.close (); }
@Override protected void doPost (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet (req, resp); } }
|
二、验证码的实现
1.测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| package com.saxon.servlet;
import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random;
public class CheckCode extends HttpServlet { @Override protected void doGet (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setHeader ("refresh", "5"); BufferedImage image = new BufferedImage (80, 20, BufferedImage.TYPE_INT_RGB); Graphics2D pen = (Graphics2D) image.getGraphics (); pen.setColor (Color.black); pen.fillRect (0,0,80,20); pen.setColor (Color.white); pen.setFont (new Font (null,Font.BOLD,20)); pen.drawString (Num (),0,20); resp.setContentType ("image/jpeg"); resp.setDateHeader ("expires",-1); resp.setHeader ("Cache-Control","no-cache"); resp.setHeader ("pragma","no-cache"); ImageIO.write (image,"jpeg",resp.getOutputStream ());
}
private String Num(){ StringBuffer str=new StringBuffer (); for (int i = 0; i <7 ; i++) { int i1 = new Random ().nextInt (9); str.append (i1); } return str.toString (); } @Override
protected void doPost (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet (req, resp); } }
|
我们可以设置上面的相关的信息;
三、实现重定向
1.概念
重定向:当你想要小美的QQ号,但你不知道如何要她的QQ号,所以你去找认识小美QQ号的小札,小札叫你自己去,于是你就自己去;
转发:当你想要小美的QQ号,但是你不知道如何要她的QQ号,所以你就去找认识小美QQ号的小札,小札帮你去要,要到了再给你;
比较:重定向和转发
相同点:都是页面的跳转;
不同点:重定向的url地址发生了变化,但是转发没有。他们的状态码也不一样。重定向的是3开头的。转发是200;
1 2 3 4 5 6
| ServletContext context = this.getServletContext (); RequestDispatcher r = context.getRequestDispatcher ("/gp");
String contextPath = this.getServletContext ().getContextPath (); resp.sendRedirect (contextPath+"/hello.html");
|
2.测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package com.saxon.servlet;
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;
public class RedirectServlet extends HttpServlet { @Override protected void doGet (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String contextPath = this.getServletContext ().getContextPath (); resp.sendRedirect (contextPath+"/hello.html"); }
@Override protected void doPost (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet (req, resp); } }
|