Response生成注册验证码实现例子
1,Response 发送注册验证图片实现代码:ResponseDrawPic.java
import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @SuppressWarnings("serial") public class ResponseDrawPic extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设置头,控制浏览器不要缓存文件 response.setHeader("Expries", "-1"); response.setHeader("Cache-Control", "no-cache"); response.setHeader("progma", "no-cache"); //5,通知浏览器以图片方式打开 response.setHeader("Content-type", "image/jpeg"); //1,在内存中创建一副图片 BufferedImage image = new BufferedImage(80, 20, BufferedImage.TYPE_INT_RGB); //2,得到图片 Graphics g = image.getGraphics(); g.setColor(Color.WHITE); g.fillRect(0, 0, 80, 20); //3,向图片上写数据 g.setColor(Color.BLUE); g.setFont(new Font(null, Font.BOLD,20)); g.drawString(makeNum(), 0, 20); //4,将图片写给浏览器 ImageIO.write(image, "jpg", response.getOutputStream()); } private String makeNum() { Random r= new Random(); String num=r.nextInt(9999999)+""; StringBuffer sb =new StringBuffer(); for(int i=0;i<7-num.length();i++){//不足7位数的时候补足0 sb.append("0"); } num=sb.toString()+num; return num; } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
2,简单注册页面register.html
<form action=""> 用户名:<input type="text" name="username"></br> 密 码:<input type="password" name="password"></br> 认证码:<input type="text" name="checkcode"><img src="/MyWebStart/servlet/ResponseDrawPic"></br> <input type="submit" value="注册"> </form>