1.以maven作为依赖,在pom.xml文件中加入kaptcha的依赖
<dependency> <groupId>com.google.code.kaptcha</groupId> <artifactId>kaptcha</artifactId> <version>2.3</version> </dependency>
2.在web项目下找到web.xml文件加入(以kaptcha自带Servlet为例)
<!-- 实现验证码图片的Servlet --> <servlet> <servlet-name>Kaptcha</servlet-name> <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class> <init-param> <param-name>kaptcha.producer.impl</param-name> <param-value>com.google.code.kaptcha.impl.DefaultKaptcha </param-value> </init-param> <init-param> <param-name>kaptcha.border</param-name> <param-value>no</param-value> </init-param> <init-param> <param-name>kaptcha.textproducer.font.names</param-name> <param-value>Arial, Courier</param-value> </init-param> <init-param> <param-name>kaptcha.textproducer.font.size</param-name> <param-value>35</param-value> </init-param> <init-param> <param-name>kaptcha.textproducer.font.color</param-name> <param-value>0,0,0</param-value> </init-param> <init-param> <param-name>kaptcha.image.width</param-name> <param-value>176</param-value> </init-param> <init-param> <param-name>kaptcha.obscurificator.impl</param-name> <param-value>com.google.code.kaptcha.impl.WaterRipple</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.char.string</param-name> <param-value>zxcvbnmasdfghjkqwertyupZXCVBNMASDFGHJKLQWERTYUP23456789</param-value> </init-param> <init-param> <param-name>kaptcha.textproducer.impl</param-name> <param-value>com.google.code.kaptcha.text.impl.DefaultTextCreator</param-value> </init-param> <init-param> <param-name>kaptcha.word.impl</param-name> <param-value>com.google.code.kaptcha.text.impl.DefaultWordRenderer</param-value> </init-param> <init-param> <param-name>kaptcha.background.clear.from</param-name> <param-value>228,226,226</param-value> </init-param> <init-param> <param-name>kaptcha.background.clear.to</param-name> <param-value>228,226,226</param-value> </init-param> <init-param> <param-name>kaptcha.noise.impl</param-name> <param-value>com.google.code.kaptcha.impl.DefaultNoise</param-value> </init-param> <init-param> <param-name>kaptcha.noise.color</param-name> <param-value>153,153,153</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>Kaptcha</servlet-name> <url-pattern>/verifyCode.do</url-pattern> </servlet-mapping>
3.可以自定义servlet
配置在<servlet-class>xxx.xxx.xxxServlet</servlet-class>
import java.io.IOException; import java.util.Enumeration; import java.util.Properties; import javax.imageio.ImageIO; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import sun.misc.BASE64Decoder; import com.google.code.kaptcha.Producer; import com.google.code.kaptcha.util.Config; public class VerifyCodeServlet extends HttpServlet { private static final long serialVersionUID = 488468607632591662L; private static final Logger logger = LoggerFactory.getLogger(VerifyCodeServlet.class); private ConsoleSession consoleSession = DefaultConsoleSession.getInstance(); private Properties props; private Producer kaptchaProducer; private OneAccountService oneAccountService; public VerifyCodeServlet() { props = new Properties(); kaptchaProducer = null; } public void init(ServletConfig conf) throws ServletException { super.init(conf); ImageIO.setUseCache(false); String key; String value; for (Enumeration initParams = conf.getInitParameterNames(); initParams .hasMoreElements(); props.put(key, value)) { key = (String) initParams.nextElement(); value = conf.getInitParameter(key); } Config config = new Config(props); kaptchaProducer = config.getProducerImpl(); ServletContext servletContext = this.getServletContext(); WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext); } public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletOutputStream out = resp.getOutputStream(); resp.setDateHeader("Expires", 0L); resp.setHeader("Cache-Control", "no-store, no-cache, must-revalidate"); resp.addHeader("Cache-Control", "post-check=0, pre-check=0"); resp.setHeader("Pragma", "no-cache"); resp.setContentType("image/jpeg"); try { writeKaptchaValidCodeToResponse(req, out); } } finally { try { out.flush(); } finally { out.close(); } } } private void writeKaptchaValidCodeToResponse(HttpServletRequest req, ServletOutputStream out) throws IOException { String capText = kaptchaProducer.createText(); consoleSession.setAttribute(req, com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY, capText); java.awt.image.BufferedImage bi = kaptchaProducer.createImage(capText); ImageIO.write(bi, "jpg", out); } }
web.xml中换成
<servlet-name>Kaptcha</servlet-name> <servlet-class>com.phzc.wxconsole.web.servlet.VerifyCodeServlet</servlet-class>
一般简单使用,用自带即可
