jcaptcha设置装备摆设验证码详解编程语言
public abstract class Constants {
/** 用户 session 的 cookie 名称*/
public static final String SESSION_ID = JSESSIONID
}
第一步:建立SessionProvider接口
cn.itcast.common.web.session.SessionProvider
public interface SessionProvider {
public void setAttribute(HttpServletRequest request,String name ,Serializable value);
//获取Session中的值
public Serializable getAttribute(HttpServletRequest request,String name);
//退出上岸
public void logout(HttpServletRequest request,HttpServletResponse response);
//获取Session Id
public String getSessionId(HttpServletRequest request);
}
第二步:建立HttpSessionProvider实现类cn.itcast.common.web.session.HttpSessionProvider
/**
* Session供应类
* @author lx
*
*/
public class HttpSessionProvider implements SessionProvider{
//往Session中设置值
public void setAttribute(HttpServletRequest request,String name ,Serializable value){
HttpSession session = request.getSession();
if(session != null){
session.setAttribute(name, value);
}
}
//获取Session中的值
public Serializable getAttribute(HttpServletRequest request,String name){
HttpSession session = request.getSession(false);
if(session != null){
return (Serializable) session.getAttribute(name);
}else{
return null;
}
}
//退出上岸
public void logout(HttpServletRequest request,HttpServletResponse response){
HttpSession session = request.getSession(false);
if(session != null){
session.invalidate();
}
Cookie c = new Cookie(Constants.SESSION_ID,null);
c.setMaxAge(0);
response.addCookie(c);
}
//获取Session Id
public String getSessionId(HttpServletRequest request){
return request.getRequestedSessionId();
}
}
第三步:建立classpath:config/utils.xml! session 供应类
bean id= sessionProvider > 第四步:建立JcaptchaServlet
?xml version= 1.0 encoding= UTF-8 ?
beans xmlns= http://www.springframework.org/schema/beans xmlns:xsi= http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation= http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
default-lazy-init= true
bean id= captchaService >
constructor-arg index= 0 ref= imageEngine /
constructor-arg type= int index= 1 value= 180 /
constructor-arg type= int index= 2 value= 100000 /
constructor-arg type= int index= 3 value= 75000 /
/bean
bean id= imageEngine >
constructor-arg index= 0
list
ref bean= captchaFactory /
/list
/constructor-arg
/bean
bean id= captchaFactory >
constructor-arg
ref bean= wordgen /
/constructor-arg
constructor-arg
ref bean= wordtoimage /
/constructor-arg
/bean
bean id= wordgen >
! 可选字符
constructor-arg
value aabbccddeefgghhkkmnnooppqqsstuuvvwxxyyzz /value
/constructor-arg
/bean
bean id= wordtoimage >
constructor-arg index= 0
ref bean= fontGenRandom /
/constructor-arg
constructor-arg index= 1
ref bean= backGenUni /
/constructor-arg
constructor-arg index= 2
ref bean= decoratedPaster /
/constructor-arg
/bean
bean id= fontGenRandom >
! 最小字体
constructor-arg index= 0
value 26 /value
/constructor-arg
! 最年夜字体
constructor-arg index= 1
value 34 /value
/constructor-arg
constructor-arg index= 2
list
bean >
constructor-arg index= 0 value Arial /value /constructor-arg
constructor-arg index= 1 value 0 /value /constructor-arg
constructor-arg index= 2 value 32 /value /constructor-arg
/bean
/list
/constructor-arg
/bean
bean id= backGenUni >
! 配景宽度
constructor-arg index= 0
value 110 /value
/constructor-arg
! 配景高度
constructor-arg index= 1
value 50 /value
/constructor-arg
/bean
bean id= decoratedPaster >
! 最年夜字符长度
constructor-arg type= java.lang.Integer index= 0
value 4 /value
/constructor-arg
! 最小字符长度
constructor-arg type= java.lang.Integer index= 1
value 4 /value
/constructor-arg
! 文本颜色
constructor-arg index= 2
ref bean= colorGen /
/constructor-arg
! 文本搅浑
constructor-arg index= 3
list
! ref bean= baffleDecorator /
/list
/constructor-arg
/bean
bean id= baffleDecorator >
constructor-arg type= java.lang.Integer index= 0 value 1 /value /constructor-arg
constructor-arg type= java.awt.Color index= 1 ref bean= colorWrite / /constructor-arg
/bean
bean id= colorGen >
constructor-arg type= java.awt.Color index= 0
ref bean= colorBlack /
/constructor-arg
/bean
bean id= colorWrite >
constructor-arg type= int index= 0
value 255 /value
/constructor-arg
constructor-arg type= int index= 1
value 255 /value
/constructor-arg
constructor-arg type= int index= 2
value 255 /value
/constructor-arg
/bean
bean id= colorBlack >
constructor-arg type= int index= 0
value 50 /value
/constructor-arg
constructor-arg type= int index= 1
value 50 /value
/constructor-arg
constructor-arg type= int index= 2
value 50 /value
/constructor-arg
/bean
/beans
第六步:编写JcaptchaServlet/**
* 供应验证码图片的Servlet
*/
@SuppressWarnings( serial )
public class JcaptchaServlet extends HttpServlet {
public static final String CAPTCHA_IMAGE_FORMAT = jpeg
private ImageCaptchaService captchaService;
private SessionProvider session;
@Override
public void init() throws ServletException {
WebApplicationContext appCtx = WebApplicationContextUtils
.getWebApplicationContext(getServletContext());
captchaService = (ImageCaptchaService) BeanFactoryUtils
.beanOfTypeIncludingAncestors(appCtx, ImageCaptchaService.class);
session = (SessionProvider) BeanFactoryUtils
.beanOfTypeIncludingAncestors(appCtx, SessionProvider.class);
}
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
byte[] captchaChallengeAsJpeg = null;
// the output stream to render the captcha image as jpeg into
ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();
try {
// get the session id that will identify the generated captcha.
// the same id must be used to validate the response, the session id
// is a good candidate!
String captchaId = session.getSessionId(request);
BufferedImage challenge = captchaService.getImageChallengeForID(
captchaId, request.getLocale());
// Jimi.putImage( image/jpeg , challenge, jpegOutputStream);
ImageIO.write(challenge, CAPTCHA_IMAGE_FORMAT, jpegOutputStream);
} catch (IllegalArgumentException e) {
response.sendError(HttpServletResponse.SC_NOT_FOUND);
return;
} catch (CaptchaServiceException e) {
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return;
}
// catch (JimiException e) {
// response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
// return;
// }
captchaChallengeAsJpeg = jpegOutputStream.toByteArray();
// flush it in the response
response.setHeader( Cache-Control , no-store );
response.setHeader( Pragma , no-cache );
response.setDateHeader( Expires , 0);
response.setContentType( image/ + CAPTCHA_IMAGE_FORMAT);
ServletOutputStream responseOutputStream = response.getOutputStream();
responseOutputStream.write(captchaChallengeAsJpeg);
responseOutputStream.flush();
responseOutputStream.close();
}
}
第七步:设置装备摆设web.xml! 设置装备摆设Jcaptcha 验证码
servlet
servlet-name jcaptcha /servlet-name
servlet-class cn.itcast.common.captcha.JcaptchaServlet /servlet-class
/servlet
servlet-mapping
servlet-name jcaptcha /servlet-name
url-pattern /captcha.svl /url-pattern
/servlet-mapping
第八步:编写上岸页面front_page/buyer/login.jspli
label for= captcha 验证码: /label
span >
input type= text id= captcha name= captcha maxLength= 7 /
img src= /captcha.svl #8221;this.src= /captcha.svl?d= +new Date() >
/li
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/11696.html
cgojavaxml相关文章
- JSON.parse 和 JSON.stringify详解编程语言
- 实现回到顶部按纽的jQuery代码详解编程语言
- 简单的JsTree 树形视图 checkbox demo详解编程语言
- JQuery其他常用函数详解编程语言
- java实现选择排序算法详解编程语言
- 单独使用 commons-dbcp 连接池详解编程语言
- webstorm 10 设置文件的默认编码详解编程语言
- Hibernate实体类注解的问题详解编程语言
- Go语言圣经-可变参数习题详解编程语言
- JavaScript正则表达式练习详解编程语言
- JS 日期实用方法详解编程语言
- 移动端meta设置详解编程语言
- JDBC公共操作类详解编程语言
- jquery.post用法补充(type设置问题)详解编程语言
- EasyUI DataGrid 多级表头设置详解编程语言
- 如何正确实现Java中的hashCode方法详解编程语言
- 关于字符串比较时候出现的空指针问题的坑详解编程语言
- POI 设置单元格背景色,背景色编码与实际颜色对照表详解编程语言
- 关于 django 的时区设置与MySQL 时间相差8小时详解编程语言
- 给file_get_contents函数设置超时时间详解编程语言
- SSH本地端口映射到公网IP的相关设置详解编程语言
- BAPI_PO_CHANGE设置PO行项目状态:删除、冻结时,TABLES参数POITEM设置详解编程语言
- REUSE_ALV_GRID_DISPLAY显示ALV,设置可编辑时,与内表数据同步问题详解编程语言
- 自开发程序动态权限设置按钮详解编程语言
- css滚动条占空间的解决方法详解编程语言
- lnmp一键安装包 成功运行thinkphp的方法详解编程语言
- PHP curl下载图片的方法详解编程语言
- [问题解决]创建预制发票(BAPI_INCOMINGINVOICE_PARK)时报错”采购凭证的帐户设置00不存在”详解编程语言
- SAP 技术设置(technical setting)详解编程语言
- abap编辑器设置:关键字大写,函数名及变量小写的设置详解编程语言
- Java NIO:NIO概述详解编程语言