• jsp生成好看的验证码


    这是一个Servlet,名字是ImageServlet

    package a;
    
    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;
    import javax.servlet.http.HttpSession;
    public class ImageServlet extends HttpServlet {
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		request.setCharacterEncoding("utf-8");
    		
    		BufferedImage bfi = new BufferedImage(80,25,BufferedImage.TYPE_INT_RGB);
    		Graphics g = bfi.getGraphics();
    		g.fillRect(0, 0, 80, 25);
    
    		//验证码字符范围
    		char[] ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".toCharArray();
    		Random r = new Random(); 
    		int index;  
    		StringBuffer sb = new StringBuffer(); //保存字符串
    		for(int i=0; i<4; i++){
    			index = r.nextInt(ch.length);
    			g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
    			Font font = new Font("宋体", 30, 20);
    			g.setFont(font);
    			g.drawString(ch[index]+"", (i*20)+2, 23);
    			sb.append(ch[index]);
    		}
    		
    		// 添加噪点
    	    int area = (int) (0.02 * 80 * 25);
    	    for(int i=0; i<area; ++i){
    	        int x = (int)(Math.random() * 80);
    	        int y = (int)(Math.random() * 25);
    	        bfi.setRGB(x, y, (int)(Math.random() * 255));
    	    }
    		
    	  //设置验证码中的干扰线
    	    for (int i = 0; i < 6; i++) {  
    		      //随机获取干扰线的起点和终点
    		      int xstart = (int)(Math.random() * 80);
    		      int ystart = (int)(Math.random() * 25);
    		      int xend = (int)(Math.random() * 80);
    		      int yend = (int)(Math.random() * 25);
    		      g.setColor(interLine(1, 255));
    		      g.drawLine(xstart, ystart, xend, yend);
    		    }
    	    HttpSession session = request.getSession();  //保存到session
    		session.setAttribute("verificationCode", sb.toString());
    		ImageIO.write(bfi, "JPG", response.getOutputStream());  //写到输出流
    	}
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doGet(request, response);
    	}
    
    	private static Color interLine(int Low, int High){
            if(Low > 255)
                Low = 255;
            if(High > 255)
                High = 255;
            if(Low < 0)
                Low = 0;
            if(High < 0)
                High = 0;
            int interval = High - Low;
            int r = Low + (int)(Math.random() * interval);
            int g = Low + (int)(Math.random() * interval);
            int b = Low + (int)(Math.random() * interval);
            return new Color(r, g, b);
          }
    }
    

      

    接下来是一个jsp文件,先访问jsp文件。

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <script type="text/javascript">
    	 function reload(){
    		document.getElementById("image").src="<%=request.getContextPath() %>/imageServlet?date="+new Date().getTime();
    		$("#checkcode").val("");   // 将验证码清空
    	} 
    	 
    	 function verificationcode(){
    		 var text=$.trim($("#checkcode").val());
    		 $.post("${pageContext.request.contextPath}/verificationServlet",{op:text},function(data){
    			 data=parseInt($.trim(data));
    			 if(data>0){
    				 $("#span").text("验证成功!").css("color","green");
    			 }else{
    				 $("#span").text("验证失败!").css("color","red");
    				 reload();  //验证失败后需要更换验证码
    			 }
    		 });
    		 $("#checkcode").val(""); // 将验证码清空
    	 }
    </script>
    
    <body>
    	 验证码:<input type="text" name="checkcode"  id="checkcode"/>
      	<img  src="<%=request.getContextPath() %>/ImageServlet" alt="验证码" id="image" />
    	<a href="reload();"><label>换一张</label></a><br>
    	<input  type="button" value="提交"  onclick="verificationcode();">
    	<span id="span"></span>
    </body>
    </html>
    

      

  • 相关阅读:
    ResellerClub的域名接口
    爱上英语题库系统,郭雄飞
    多操作系统的服务器虚拟化详解 蓝色梦想网
    mylove温纯,给我的最爱
    LinkedIn 646万用户密码网上泄露及下载地址
    JavaScript对象系统的使用
    asp.net 中提交按钮的click事件
    js中this的使用
    js keycode 事件响应
    js form中的onsubmit和action
  • 原文地址:https://www.cnblogs.com/zzlback/p/8743154.html
Copyright © 2020-2023  润新知