画验证码
jsp中验证码的更新:
way:<img src="/login_zhuce/CheckCode" onclick="this.src=this.src+'?'+new Date().getTime()" title="换一张" style="cursor:pointer">
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
BufferedImage b=new BufferedImage(WIDTH, HEIGHT,BufferedImage.TYPE_INT_RGB);
Graphics g=b.getGraphics(); //1.设置背景色 drawBackGound(g); //画边框 drawBorder(g); //画干干扰线 drawLine(g); //画产生随机数 String checkCode=drawRandomNumber((Graphics2D)g); request.getSession().setAttribute("checkCode", checkCode); //图像写给浏览器 response.setContentType("image/jpeg"); //静止缓存这张图片,不是再进这个网站是无法获得新的图片 //图片动态变化不要缓存 response.setDateHeader("expires",-1); response.setHeader("Pragma","no-cache"); response.setHeader("Cache-control","no-cache"); ImageIO.write(b,"jpg",response.getOutputStream()); } private String drawRandomNumber(Graphics2D g){ String str=""; g.setColor(Color.RED); g.setFont(new Font("宋体",Font.BOLD,15)); Random random=new Random(); int x=10; for(int i=0;i<4;i++){ String number=random.nextInt(10)+""; str+=number; int degree=random.nextInt()%60; g.rotate(degree*Math.PI/180,x,HEIGHT-5); //g.(degree/180 * Math.PI); g.drawString(number,x,20); g.rotate(-degree*Math.PI/180,x,HEIGHT-5); x+=30; } return str; } private void drawLine(Graphics g) { g.setColor(Color.BLUE); String []color={"RED","GREEN","YELLOW","BLUE"}; Random random=new Random(); for(int i=0;i<4;i++){ int x1=random.nextInt(WIDTH); int y1=random.nextInt(HEIGHT); int x2=random.nextInt(WIDTH); int y2=random.nextInt(HEIGHT); g.drawLine(x1, y1, x2, y2); } } private void drawBorder(Graphics g) { g.setColor(Color.BLACK); g.drawRect(1, 1,WIDTH-2, HEIGHT-2); } private void drawBackGound(Graphics g) { g.setColor(Color.WHITE); g.fillRect(0,0 , WIDTH, HEIGHT); }
现在的几乎什么都不懂,但是不代表以后的我也是这样。