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; }