100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > java图形验证码如何生成_Java 图形验证码的生成和验证

java图形验证码如何生成_Java 图形验证码的生成和验证

时间:2024-05-08 20:17:02

相关推荐

java图形验证码如何生成_Java 图形验证码的生成和验证

1. 导入第三方包,主要用来生成图形验证码

cn.hutool

hutool-all

4.6.8

2. 获取生成的图形验证码图片流,验证图片验证码

package com.JXWorkApi.controller;

import cn.hutool.captcha.CaptchaUtil;

import cn.hutool.captcha.ShearCaptcha;

import com.JXWork.result.Result;

import mons.logging.Log;

import mons.logging.LogFactory;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

import java.io.OutputStream;

/**

* 图形验证码生成

*

* 使用HuTool的captcha在内存中生成的验证码图片,并将绘制在图片上的验证码存放到session中用于后续验证

最后通过OutputStream将生成的图片进行输出

将页面提交的验证码和存放在session中的验证码对比来进行校验

*

* @author TF12778 /10/6 15:46

*/

@Controller

@RequestMapping(value = "/captcha")

public class HuToolController {

private static Log logger = LogFactory.getLog(HuToolController.class);

/**

* 获取图形验证码

* http://localhost:9999/JXWorkApi/captcha/getShearCaptcha

* @param request

* @param response

* @return

*/

@ResponseBody

@RequestMapping(value = "/getShearCaptcha", method = RequestMethod.GET)

public ResultgetShearCaptcha(HttpServletRequest request, HttpServletResponse response) {

OutputStream out = null;

try {

out = response.getOutputStream();// 取得输出流

//定义图形验证码的长、宽、验证码字符数、干扰线宽度

ShearCaptcha captcha = CaptchaUtil.createShearCaptcha(200, 100, 4, 4);

//ShearCaptcha captcha = new ShearCaptcha(200, 100, 4, 4);

//图形验证码写出,可以写出到文件,也可以写出到流

// captcha.write("/Users/sunww/Desktop/shear.png");

captcha.write(out);

//验证图形验证码的有效性,返回boolean值

boolean checkPass = captcha.verify(captcha.getCode());

logger.info(checkPass);

// 将生成的验证码code放入sessoin中

request.getSession().setAttribute("code", captcha.getCode());

out.flush(); // 将缓存中的数据立即强制刷新, 将缓冲区的数据输出到客户端浏览器

out.close(); // 关闭输出流

return null;

} catch (IOException e) {

e.printStackTrace();

} finally {

if (out != null) {

try {

out.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

return new Result("error", "图片获取失败", "", null, "500" );

}

/**

* 验证图形码(这一步其实可以放到登录拦截器中去做)

* http://localhost:9999/JXWorkApi/captcha/verifyCode?code=e2xr

* @param inCode 前端输入的图形验证码code

* @param req

* @return

*/

@ResponseBody

@RequestMapping(value = "/verifyCode", method = RequestMethod.GET)

public ResultverifyCode(String inCode, HttpServletRequest req) {

// 获取存放在session中的验证码

String code = (String) req.getSession().getAttribute("code");

// 获取页面提交的验证码

// String inputCode = req.getParameter("code");

String inputCode = inCode;

if(code.toLowerCase().equals(inputCode.toLowerCase())) { // 验证码不区分大小写

return new Result("success", "验证成功", "", null, "200" );

}

return new Result("error", "验证失败", "", null, "500" );

}

}

3. 测试结果:

获取的图片如下所示:

图形验证码验证:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。