Spring-VCフレームワークを使用した認証コードの生成

12291 ワード

  • 依存パッケージ-kaptcha-2.3を導入する.2-jdk14.jar
  • Spring-mvcプロファイルに次のコード
  • を追加します.
    
        <bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">
            <property name="config">
                <bean class="com.google.code.kaptcha.util.Config">
                    <constructor-arg>
                        <props>
                            <prop key="kaptcha.border">yesprop>
                            <prop key="kaptcha.border.color">105,179,90prop>
                            <prop key="kaptcha.textproducer.font.color">blueprop>
                            <prop key="kaptcha.image.width">100prop>
                            <prop key="kaptcha.image.height">60prop>
                            <prop key="kaptcha.textproducer.font.size">45prop>
                            <prop key="kaptcha.session.key">codeprop>
                            <prop key="kaptcha.textproducer.char.length">4prop>
                            <prop key="kaptcha.textproducer.font.names">  ,  ,    prop>
                        props>
                    constructor-arg>
                bean>
            property>
        bean>

    3.htmlコード
        
    class="checkcode"> type="text" id="codetext" placeholder=" " maxlength="4" class="login_txtbx">"vcode" type="image" alt=" " src="captcha-image.do" οnclick="changeCode()">

    4.jsスクリプト
    /**
     *      
     */
    function changeCode() {
        $("#vcode").attr('src',
                'captcha-image.do?' + Math.floor(Math.random() * 100));
    }

    5.コントロール層
    package com.xinrui.hospital.action;
    
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    
    import javax.annotation.Resource;
    import javax.imageio.ImageIO;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    import com.google.code.kaptcha.Producer;
    import com.xinrui.hospital.service.impl.AdminServiceImpl;
    import com.xinrui.hospital.util.Constants;
    import com.xinrui.hospital.util.PrintWriterUtil;
    
    /**
     * 
     * @ClassName: LoginController
     * @Description:      
     * @author    
     * @date 2016 3 17    11:08:51
     *
     */
    @Controller
    public class LoginController {
    
        /**
         *           
         */
        @Autowired
        private Producer captchaProducer = null;
    
        /**
         * 
         * @Title: getKaptchaImage
         * @Description:        
         * @param @param request
         * @param @param response
         * @param @throws Exception
         * @return void
         * @throws
         */
        @RequestMapping(value = "captcha-image")
        public void getKaptchaImage(HttpServletRequest request,
                HttpServletResponse response) throws Exception {
            HttpSession session = request.getSession();
    
            //       
            response.setDateHeader("Expires", 0);
            response.setHeader("Cache-Control",
                    "no-store, no-cache, must-revalidate");
            response.addHeader("Cache-Control", "post-check=0, pre-check=0");
            response.setHeader("Pragma", "no-cache");
            response.setContentType("image/jpeg");
    
            String capText = captchaProducer.createText();
            session.setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);
    
            BufferedImage bi = captchaProducer.createImage(capText);
            ServletOutputStream out = response.getOutputStream();
    
            //                    
            ImageIO.write(bi, "jpg", out);
            try {
                out.flush();
            } finally {
                out.close();
            }
        }
    }