這篇文章將為大家詳細(xì)講解有關(guān)springMVC中怎么實(shí)現(xiàn)一個(gè)圖形驗(yàn)證碼,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
孝義網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)從2013年開始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
一、引入架包,pom.xml
二、kaptchaProducer配置,需要在spring-mvc.xml中對(duì)kaptchaProducer的bean進(jìn)行配置,可以對(duì)驗(yàn)證碼圖形的屬性進(jìn)行配置,網(wǎng)上也有很多可以參考的,我這是放我項(xiàng)目中的相關(guān)代碼
三、kaptchaProducer配置完畢后,就只可以寫生成驗(yàn)證碼的方法了。
@Autowired private Producer captchaProducer = null;/** * 生成驗(yàn)證碼 * @param request * @param response * @throws IOException */ @RequestMapping("/yzmImg") public void yzmImg(HttpServletRequest request,HttpServletResponse response) throws IOException{ log.info("-----生成驗(yàn)證碼-----"); HttpSession session = request.getSession(); String preCode = (String)session.getAttribute(Constants.KAPTCHA_SESSION_KEY); log.info("-----生成驗(yàn)證碼-----前一個(gè)驗(yàn)證碼:"+preCode); System.out.println("-----生成驗(yàn)證碼-----前一個(gè)驗(yàn)證碼:"+preCode); //生成驗(yàn)證碼 response.setDateHeader("Expires", 0); // Set standard HTTP/1.1 no-cache headers. response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate"); // Set IE extended HTTP/1.1 no-cache headers (use addHeader). response.addHeader("Cache-Control", "post-check=0, pre-check=0"); // Set standard HTTP/1.0 no-cache header. response.setHeader("Pragma", "no-cache"); // return a jpeg response.setContentType("image/jpeg"); // create the text for the image String capText = captchaProducer.createText(); System.err.println(capText); // store the text in the session session.setAttribute(Constants.KAPTCHA_SESSION_KEY, capText); session.setAttribute(Constants.KAPTCHA_SESSION_DATE, new Date()); // 存放到緩存服務(wù)器上,并把key記錄到cookie //CodeUtils.creatCode(capText, response, request); // create the image with the text BufferedImage bi = captchaProducer.createImage(capText); ServletOutputStream out = response.getOutputStream(); // write the data out ImageIO.write(bi, "jpg", out); try { out.flush(); } finally { out.close(); } }
四、生成驗(yàn)證碼的方法寫完后,前端可以使用img標(biāo)簽作為圖形驗(yàn)證碼的容器
jsp代碼
javascript代碼
function getYZMImg(){ $("#yzmimg").attr("src","yzmImg.htm");}
img作為圖形的容器,src寫生成驗(yàn)證碼的映射,如果需要換一個(gè)驗(yàn)證碼,點(diǎn)擊圖片,onclick事件重新調(diào)用生成驗(yàn)證碼的方法,即可達(dá)到更換驗(yàn)證碼。
下面說(shuō)下我遇到的幾個(gè)問(wèn)題
一、異常,異常信息
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.google.code.kaptcha.Producer' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
我說(shuō)下具體的情況,代碼我寫完了之后,就啟動(dòng)服務(wù),可是報(bào)了上面的異常,可是我仔細(xì)檢查了,代碼都沒(méi)有問(wèn)題,但就是拋異常,最后在類的前面加了兩個(gè)注解
@Controller@Scope("prototype")@SuppressWarnings("all")public class IndexController {}
其中Scope和SuppressWarnings兩個(gè)注解加上之后,啟動(dòng)服務(wù)就不會(huì)拋這個(gè)異常了。
二、異常,上面的異常解決之后,又出現(xiàn)了下面這個(gè)異常
java.lang.NoClassDefFoundError: com/jhlabs/image/RippleFilter] with root causejava.lang.ClassNotFoundException: com.jhlabs.image.RippleFilter
關(guān)于springMVC中怎么實(shí)現(xiàn)一個(gè)圖形驗(yàn)證碼就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。