前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kaptcha验证码插件的使用

kaptcha验证码插件的使用

作者头像
CBeann
发布2023-12-25 16:24:34
1230
发布2023-12-25 16:24:34
举报
文章被收录于专栏:CBeann的博客CBeann的博客

在SpringMVC的HelloWorld基础下,加入jar

修改web.xml,添加一个servlet

代码语言:javascript
复制
		<!-- kaptcha -->
	<servlet>
		<servlet-name>Kaptcha</servlet-name>
		<servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>Kaptcha</servlet-name>
		<url-pattern>/kaptcha.jpg</url-pattern>
	</servlet-mapping>kaptcha.jpg</url-pattern>
	</servlet-mapping>

在ioc容器中加入验证码的Bean

代码语言:javascript
复制
   <!-- 验证码的Bean -->
	<bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">
		<property name="config">
			<bean class="com.google.code.kaptcha.util.Config">
				<constructor-arg type="java.util.Properties">
					<props>
						<prop key="kaptcha.image.width">100</prop>
						<prop key="kaptcha.image.height">50</prop>
						<prop key="kaptcha.noise.impl">com.google.code.kaptcha.impl.NoNoise</prop>
						<prop key="kaptcha.textproducer.char.string">0123456789abcdefghijklmnopqrstuvwxyz</prop>
						<prop key="kaptcha.textproducer.char.length">4</prop>
					</props>
				</constructor-arg>
			</bean>
		</property>
	</bean>

编写Controller,注意:把上面加入的Bean注入到controller中

代码语言:javascript
复制
package controller;

import org.springframework.stereotype.Controller;
import java.awt.image.BufferedImage;  
import javax.imageio.ImageIO;  
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.stereotype.Controller;  
import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.servlet.ModelAndView;  
import com.google.code.kaptcha.Constants;  
import com.google.code.kaptcha.Producer;
@Controller
public class YanZhengMaController {
	
	
	@Autowired  
	private Producer captchaProducer;
	
	//提交表单后验证的逻辑过程
	@RequestMapping("/kaptcha.action")
	public String kaptchaSuccess(String checkCode,HttpServletRequest request){
		//从前台获得验证码框中的数据
		String username=checkCode;
		//从session中获得正确的验证码的值
		String str = (String) request.getSession().getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
		//比较是否相同(相同怎么样,不相同怎么样,我这只是简单的输出,相不相同都跳转的succees.jsp中)
		System.out.println(username+"---------"+str);
		return "success";
	}
	
	
	
	
	
	
	
	 //生成验证码的handler
	 @RequestMapping("/kaptcha.jpg")  
	 //这个requestMapping中的值应该和web.xml中servlet中拦截的url相同,和jsp中表单中显示验证码图片的src相同
	    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {  
	  
	        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();  
	        // store the text in the session ,把验证码的值存在session中
	        request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);  
	        // 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();  
	        }  
	        return null;  
	    }  
	
	
	
	
	

	/**
	 * @return the captchaProducer
	 */
	public Producer getCaptchaProducer() {
		return captchaProducer;
	}

	/**
	 * @param captchaProducer the captchaProducer to set
	 */
	public void setCaptchaProducer(Producer captchaProducer) {
		this.captchaProducer = captchaProducer;
	}
	
	
	

}

编写index.jsp

代码语言:javascript
复制
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<!-- 引入JQuery -->
<script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
$(function(){//页面一加载后执行的函数
	
 
	//给刷新按钮绑定事件,url后面加个参数防止缓存
    $('#kaptchaImage').click(function () {
        $("#kaptcha").attr('src', 'kaptcha.jpg?' + Math.floor(Math.random()*100) );
    })
	
	
	
});
</script>
</head>
<body>

	<form action="kaptcha.action" method="post">
    <input type="text" name="checkCode">
    <img src="kaptcha.jpg" id="kaptcha">
    <input type="button"  id="kaptchaImage"  value="刷新">
    <input type="submit" value="提交">
</form>




</body>
</html>

结果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在SpringMVC的HelloWorld基础下,加入jar
  • 修改web.xml,添加一个servlet
  • 在ioc容器中加入验证码的Bean
  • 编写Controller,注意:把上面加入的Bean注入到controller中
  • 编写index.jsp
  • 结果
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档