jsp生成验证码

来源:互联网 发布:windows 确认证书 编辑:程序博客网 时间:2024/05/23 00:01

使用的框架是springMVC+spring+Mybatis

生成的验证码的jsp是一张图片:可以以图片的方式加载到所需要的页面上,
生成验证码的jsp文件代码(image.jsp):

<%@ page contentType="image/JPEG"      import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"      pageEncoding="utf-8"%>  <%!Color getRandColor(int fc, int bc) {//给定范围获得随机颜色           Random random = new Random();           if (fc > 255)               fc = 255;           if (bc > 255)               bc = 255;           int r = fc + random.nextInt(bc - fc);           int g = fc + random.nextInt(bc - fc);           int b = fc + random.nextInt(bc - fc);           return new Color(r, g, b);       }%>  <%       //设置页面不缓存       response.setHeader("Pragma", "No-cache");       response.setHeader("Cache-Control", "no-cache");       response.setDateHeader("Expires", 0);       // 在内存中创建图象       int width = 60, height = 20;       BufferedImage image = new BufferedImage(width, height,               BufferedImage.TYPE_INT_RGB);       // 获取图形上下文       Graphics g = image.getGraphics();       //生成随机类       Random random = new Random();       // 设定背景色       g.setColor(getRandColor(200, 250));       g.fillRect(0, 0, width, height);       //设定字体       g.setFont(new Font("Times New Roman", Font.PLAIN, 18));       //画边框       //g.setColor(new Color());       //g.drawRect(0,0,width-1,height-1);       // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到       g.setColor(getRandColor(160, 200));       for (int i = 0; i < 100; i++) {           int x = random.nextInt(width);           int y = random.nextInt(height);           int xl = random.nextInt(12);           int yl = random.nextInt(12);           g.drawLine(x, y, x + xl, y + yl);       }       // 取随机产生的认证码(4位数字)       String sRand = "";       for (int i = 0; i < 4; i++) {           String rand = String.valueOf(random.nextInt(10));           sRand += rand;           // 将认证码显示到图象中           g.setColor(new Color(20 + random.nextInt(110), 20 + random           .nextInt(110), 20 + random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成           g.drawString(rand, 13 * i + 6, 16);       }       // 将认证码存入SESSION       session.setAttribute("code", sRand);       // 图象生效       g.dispose();       // 输出图象到页面       ImageIO.write(image, "JPEG", response.getOutputStream());      out.clear();      out = pageContext.pushBody();   %>

同于加载验证码的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"><meta http-equiv="pragma" content="No-cache"><title>登陆</title></head><body><form action="/eshop/user/login" method="post">    <!-- 只需要以图片的形式加载就可以了 -->    验证码:<img  src="/eshop/image.jsp"><input type="text" name="code">    </form></body></html>

验证码生成的随机字符串保存到了session里面,可以从session里面获得使用controller获得,

@RequestMapping("login")    public String login(String code,HttpServletRequest request){        System.out.println("输入的验证码:"+code);        String sessioncode = (String) request.getSession().getAttribute("code");        System.out.println("图片中的验证码:"+sessioncode);        return "login";    }
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 买了双鞋子想退怎么办 鞋子大了一码怎么办 nba篮球大师身体素质满了怎么办 钉鞋大了一码怎么办 篮球鞋鞋垫会向里面跑怎么办 穿高跟鞋脚肿了怎么办 衣服弄到单车油怎么办 高低床孩子摔下来怎么办 量血压时老紧张怎么办 牛仔外套的扣子掉了怎么办 裤子的裤筒大了怎么办 衣服拉链驰坏了怎么办 小脚裤裤腿紧了怎么办 地垫粘地板了怎么办 棉麻衬衣皱了怎么办 麻料衣服烫皱了怎么办 在京东买一双奥康鞋没有防伪怎么办 足球鞋丁掉了一颗怎么办 鼻子有点大想变小该怎么办 阿勒泰小东沟风景区边防证怎么办 孩子上一年级了学习很差怎么办 孩子作息时间不规律怎么办 冬天冻脸怎么办小妙招 冬天冻脚怎么办小妙招 冬天脚冷怎么办小妙招 初中生不爱学习父母该怎么办 早孕办公室买新办公桌怎么办 一年级学生专注度差怎么办 pscs6界面字体太小怎么办 psd文件打不开程序错误怎么办 经常熬夜皮肤暗黄怎么办 炎症引起的经期不来怎么办 父母沉迷于炒股该怎么办 宝宝嘴周边红了怎么办 后背被嘴吸出牙印怎么办 宝宝嘴巴周围长湿疹怎么办 宝宝脸蛋都是红红的湿疹怎么办 药流药第一天晚上的忘吃怎么办 我有口臭不想出门怎么办 入职10天想辞职怎么办 提完辞职报告不想上班了怎么办