提交代码
This commit is contained in:
@@ -1,24 +1,146 @@
|
||||
package com.wf.captcha.utils;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.servlet.ServletContext;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.wf.captcha.Captcha;
|
||||
import com.wf.captcha.GifCaptcha;
|
||||
|
||||
/**
|
||||
* 图形验证码工具类
|
||||
*
|
||||
* @author wangfan
|
||||
* @date 2018-5-14 上午9:41:06
|
||||
*/
|
||||
public class CaptchaUtil {
|
||||
private String codeName = "captcha";
|
||||
private int width = 130;
|
||||
private int height = 38;
|
||||
private int len = 5;
|
||||
|
||||
public CaptchaUtil() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证码的宽、高、位数
|
||||
*/
|
||||
public CaptchaUtil(int width, int height, int len) {
|
||||
set(width, height, len);
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证验证码
|
||||
*
|
||||
* @param verKey
|
||||
* @param verCode
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
public static boolean isVerified(String verKey, String verCode,
|
||||
HttpServletRequest request) {
|
||||
ServletContext servletContext = request.getSession()
|
||||
.getServletContext();
|
||||
String cacheVerCode = (String) servletContext.getAttribute("code_"
|
||||
+ verKey);
|
||||
return verCode.equals(cacheVerCode);
|
||||
public boolean ver(String code, HttpServletRequest request) {
|
||||
String captcha = (String) request.getSession().getAttribute(codeName);
|
||||
return code.equals(captcha);
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证验证码,用于分离的项目
|
||||
*/
|
||||
public boolean ver(String key, String code, HttpServletRequest rq) {
|
||||
ServletContext sc = rq.getServletContext();
|
||||
String keyName = codeName + "-" + key;
|
||||
String captcha = (String) sc.getAttribute(keyName);
|
||||
return code.equals(captcha);
|
||||
}
|
||||
|
||||
/**
|
||||
* 输出验证码
|
||||
*/
|
||||
public void out(HttpServletRequest rq, HttpServletResponse rp)
|
||||
throws IOException {
|
||||
|
||||
setHeader(rp);
|
||||
|
||||
// 验证码的宽、高、位数
|
||||
Captcha captcha = new GifCaptcha(width, height, len);
|
||||
// 存入缓存
|
||||
rq.getSession().setAttribute(codeName, captcha.text().toLowerCase());
|
||||
|
||||
// 输入图片
|
||||
captcha.out(rp.getOutputStream());
|
||||
}
|
||||
|
||||
/**
|
||||
* 输出验证码,用于分离项目
|
||||
*/
|
||||
public void out(String key, HttpServletRequest rq, HttpServletResponse rp)
|
||||
throws IOException {
|
||||
|
||||
setHeader(rp);
|
||||
|
||||
// 验证码的宽、高、位数
|
||||
Captcha captcha = new GifCaptcha(width, height, len);
|
||||
// 存入缓存
|
||||
ServletContext sc = rq.getServletContext();
|
||||
sc.setAttribute(codeName, captcha.text().toLowerCase());
|
||||
|
||||
// 输入图片
|
||||
captcha.out(rp.getOutputStream());
|
||||
}
|
||||
|
||||
private void setHeader(HttpServletResponse rp) {
|
||||
rp.setContentType("image/gif");
|
||||
rp.setHeader("Pragma", "No-cache");
|
||||
rp.setHeader("Cache-Control", "no-cache");
|
||||
rp.setDateHeader("Expires", 0);
|
||||
}
|
||||
|
||||
public String getCodeName() {
|
||||
return codeName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置保存code的key
|
||||
*/
|
||||
public void setCodeName(String codeName) {
|
||||
this.codeName = codeName;
|
||||
}
|
||||
|
||||
public int getWidth() {
|
||||
return width;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置验证码的宽度
|
||||
*/
|
||||
public void setWidth(int width) {
|
||||
this.width = width;
|
||||
}
|
||||
|
||||
public int getHeight() {
|
||||
return height;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置验证码的高度
|
||||
*/
|
||||
public void setHeight(int height) {
|
||||
this.height = height;
|
||||
}
|
||||
|
||||
public int getLen() {
|
||||
return len;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置验证码的位数
|
||||
*/
|
||||
public void setLen(int len) {
|
||||
this.len = len;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置验证码的宽、高、位数
|
||||
*/
|
||||
public void set(int width, int height, int len) {
|
||||
setWidth(width);
|
||||
setHeight(height);
|
||||
setLen(len);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user