kaptcha验证码的使用
一、xml方式
1.导入依赖
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
</dependency>
2.在web.xml中注册servlet
<servlet>
<servlet-name>Kaptcha</servlet-name>
<servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
<!-- 是否有边框 -->
<init-param>
<param-name>kaptcha.border</param-name>
<param-value>no</param-value>
</init-param>
<!-- 字体颜色 -->
<init-param>
<param-name>kaptcha.textproducer.font.color</param-name>
<param-value>red</param-value>
</init-param>
<!-- 图片宽度 -->
<init-param>
<param-name>kaptcha.image.width</param-name>
<param-value>135</param-value>
</init-param>
<!-- 使用哪些字符生成验证码 -->
<init-param>
<param-name>kaptcha.textproducer.char.string</param-name>
<param-value>ACDEFHKPRSTWX345679</param-value>
</init-param>
<!-- 图片高度 -->
<init-param>
<param-name>kaptcha.image.height</param-name>
<param-value>50</param-value>
</init-param>
<!-- 字体大小 -->
<init-param>
<param-name>kaptcha.textproducer.font.size</param-name>
<param-value>43</param-value>
</init-param>
<!-- 干扰线颜色 -->
<init-param>
<param-name>kaptcha.noise.color</param-name>
<param-value>black</param-value>
</init-param>
<!-- 验证码字符个数 -->
<init-param>
<param-name>kaptcha.textproducer.char.length</param-name>
<param-value>4</param-value>
</init-param>
<!-- 字体 -->
<init-param>
<param-name>kaptcha.textproducer.font.names</param-name>
<param-value>Arial</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Kaptcha</servlet-name>
<url-pattern>/Kaptcha</url-pattern>
</servlet-mapping>
3.在前端页面用src的属性引入
<img id="captcha_img" alt="点击更换" title="点击更换"
src="/Kaptcha" />
可以用js给这个图片添加一个点击事件,点击之后就更换一个图片
一、@Annoation方式
1.导入maven依赖
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
</dependency>
2.在webapp初始化的时候,将Kaptcha加到servletContext中,代码如下
public class WebAppInit implements WebApplicationInitializer { @Override public void onStartup(javax.servlet.ServletContext servletContext) throws ServletException { // Load Spring web application configuration AnnotationConfigWebApplicationContext ac = new AnnotationConfigWebApplicationContext(); ac.register(WebMvcConfig .class); // ac.refresh();此处应该注释,否则报错 // Create and register the DispatcherServlet DispatcherServlet servlet = new DispatcherServlet(ac); ServletRegistration.Dynamic registration = servletContext.addServlet("DispatcherServlet", servlet); registration.setLoadOnStartup(1); registration.addMapping("/"); //配置生成验证码的kaptchaServlet //第一步,创建一个kaptchaServlet KaptchaServlet kaptchaServlet = new KaptchaServlet(); //添加到servletContext ServletRegistration.Dynamic kaptchaServlet1 = servletContext.addServlet("KaptchaServlet", kaptchaServlet); //创建一个map用来存放kapchaServlet的初始化参数 HashMap<String, String> map = new HashMap<>(); // <!-- 是否有边框 --> yes or no map.put("kaptcha.border","no"); //<!-- 字体颜色 --> map.put("kaptcha.textproducer.font.color","red"); // <!-- 图片宽度 --> map.put("kaptcha.image.width","135"); // <!-- 使用哪些字符生成验证码 --> map.put("kaptcha.textproducer.char.string","ACDEFHKPRSTWX345679"); // <!-- 图片高度 --> map.put("kaptcha.image.height","50"); // <!-- 字体大小 --> map.put("kaptcha.textproducer.font.siz","43"); // <!-- 干扰线颜色 --> map.put("kaptcha.noise.color","black"); // <!-- 验证码字符个数 --> map.put("kaptcha.textproducer.char.length","4"); //<!-- 字体 --> map.put("kaptcha.textproducer.font.names","Arial"); //设置kapchaServlet的初始化参数 kaptchaServlet1.setInitParameters(map); //设置 kaptchaServlet1.addMapping("/Kaptcha"); } }
3.在前端页面用src的属性引入
<img id="captcha_img" alt="点击更换" title="点击更换"
src="/Kaptcha" />
可以用js给这个图片添加一个点击事件,点击之后就更换一个图片
com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY
(String)servletRequest.getSession().getAttribute("KAPTCHA_SESSION_KEY");
springboot中注册
@Bean public ServletRegistrationBean servletRegistrationBean(){ ServletRegistrationBean<Servlet> servletServletRegistrationBean = new ServletRegistrationBean<>(); //第一步,创建一个kaptchaServlet KaptchaServlet kaptchaServlet = new KaptchaServlet(); //创建一个map用来存放kapchaServlet的初始化参数 servletServletRegistrationBean.setServlet(kaptchaServlet); HashMap<String, String> map = new HashMap<>(); // <!-- 是否有边框 --> yes or no map.put("kaptcha.border","no"); //<!-- 字体颜色 --> map.put("kaptcha.textproducer.font.color","red"); // <!-- 图片宽度 --> map.put("kaptcha.image.width","135"); // <!-- 使用哪些字符生成验证码 --> map.put("kaptcha.textproducer.char.string","ACDEFHKPRSTWX345679"); // <!-- 图片高度 --> map.put("kaptcha.image.height","50"); // <!-- 字体大小 --> map.put("kaptcha.textproducer.font.siz","43"); // <!-- 干扰线颜色 --> map.put("kaptcha.noise.color","black"); // <!-- 验证码字符个数 --> map.put("kaptcha.textproducer.char.length","4"); //<!-- 字体 --> map.put("kaptcha.textproducer.font.names","Arial"); //设置kapchaServlet的初始化参数 servletServletRegistrationBean.setInitParameters(map); //设置 servletServletRegistrationBean.addUrlMappings("/Kaptcha"); return servletServletRegistrationBean; }

浙公网安备 33010602011771号