我是搬砖的码农 2017-08-23 06:27 采纳率: 0%
浏览 817

SSH项目验证码校验刷新

1-servlet验证码
protected void doGet(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

response.setContentType("image/jpeg");

response.setHeader("Pragma", "No-cache");

response.setHeader("Cache-Control", "no-cache");

response.setDateHeader("Expires", 0);

HttpSession session = request.getSession();

// 在内存中创建图象

int width = 75, height = 25;

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, 24));

// 画边框

g.setColor(getRandColor(160, 200));

g.drawRect(0, 0, width - 1, height - 1);

// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到

g.setColor(getRandColor(160, 200));

for (int i = 0; i < 155; 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 + 14, 20);

}

    // 将认证码存入SESSION  
    session.setAttribute("vcode", sRand);  
    // 图象生效  
    g.dispose();  
    // 输出图象到页面  
    ImageIO.write(image, "JPEG", response.getOutputStream());  
}  

2-后台校验验证码
String checkCode = StaticMethod.null2String(request.getParameter("checkCode"));
if(!vcode.equals(checkCode)) {

            loginErrorReturn(request, response, "CheckCodeErrorException");
            return mapping.findForward("relogin");
        }

3-前台页面
String checkCode = StaticMethod.null2String(request.getParameter("checkCode"));
if(!vcode.equals(checkCode)) {

            loginErrorReturn(request, response, "CheckCodeErrorException");
            return mapping.findForward("relogin");
        }

如何在后台判断验证码错误后刷新验证码

  • 写回答

1条回答 默认 最新

  • wangyafeiwyf 2017-08-23 06:40
    关注

    前台用ajax判断一下,然后在调用一下验证码的controller就行了吧

    评论

报告相同问题?

悬赏问题

  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计