zl程序教程

您现在的位置是:首页 >  其他

当前栏目

jcaptcha设置装备摆设验证码详解编程语言

编程语言 详解 设置 验证码 装备
2023-06-13 09:20:35 时间

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

 jcaptcha设置装备摆设验证码详解编程语言

第五步:建立classpth:config/captcha.xml

?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.jsp

li

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