Java实现验证码验证功能在JSP中

Java实现验证码验证功能在JSP中

效果图

 

在JAVA项目中验证码肯定是不可缺少的,首先给展示的是最简单的直接写在JSP中的验证码,可以通过session验证,也可以通过这段直接改写在controller中。

code.jsp

  1. <%@ page language="java" pageEncoding="UTF-8"%>
  2. <%@ page contentType="image/jpeg"  import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %>
  3. <%!
  4. /** 
  5.     * 生成随机着色 
  6.     */
  7. public Color getColor(){
  8.         Random random = new Random();
  9. int r = random.nextInt(256);//0-255  
  10. int g = random.nextInt(256);
  11. int b = random.nextInt(256);
  12. return new Color(r,g,b);
  13.     }
  14. //定义验证码的随机字符串  
  15.     String randomStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
  16. /** 
  17.     * 生成随机字符 
  18.     */
  19. public String getStr(){
  20.         StringBuffer sb = new StringBuffer();
  21.         Random random = new Random();
  22. for(int i=0;i<6;i++){
  23.             sb.append(randomStr.charAt(random.nextInt(randomStr.length())));//每次提取一个随机字符  
  24.         }
  25. return sb.toString();
  26.     }
  27. %>
  28. <%
  29. //设置响应头部信息告诉浏览器不缓存图片  
  30.     response.setHeader("pragma""mo-cache");
  31.     response.setHeader("cache-control""no-cache");
  32.     response.setDateHeader("expires"0);
  33.     BufferedImage image = new BufferedImage(100,30,BufferedImage.TYPE_INT_RGB);
  34.     Graphics g = image.getGraphics();
  35.     g.setColor(new Color(200,200,200));
  36.     g.fillRect(0,0,100,30);
  37.     Random random = new Random();
  38. //绘制40条干扰线   
  39. for (int i = 0; i < 40; i++) {
  40. int x = random.nextInt(100);
  41. int y = random.nextInt(30);
  42. int xl = random.nextInt(x+10);
  43. int yl = random.nextInt(y+10);
  44.         g.setColor(getColor());
  45.         g.drawLine(x, y, x + xl, y + yl);
  46.     }
  47.     g.setFont(new Font("宋体", Font.ROMAN_BASELINE,24));
  48.     g.setColor(Color.BLACK);
  49.     String randomCode = getStr();
  50.     StringBuffer sb = new StringBuffer();
  51. for(int i=0;i<randomCode.length();i++){
  52.         g.drawString(randomCode.charAt(i)+"",random.nextInt(10),20+random.nextInt(8));//sb.append(randomCode.charAt(i));  
  53.         g.translate(15,0);
  54.     }
  55. //将验证码放入Session中  
  56.     session.setAttribute("RANDOMCODE",randomCode);
  57. //通过流将验证码图片输出   
  58.     ImageIO.write(image,"jpeg",response.getOutputStream());
  59.     out.clear();
  60.     out = pageContext.pushBody();
  61. %>

 

前端显示

  1. <img src="code.jsp" width="48" height="15">

 

下面还有个例子。

腾讯云服务器安全可靠高性能,多种配置供您选择
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: