在诸如用户登陆时,经常要用到验证码,这里可以用Servlet来处理 1. 编写生成验证码的Servlet: CheckCode.java
package com.shopping.controller.util; import java.awt.Color; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; /** * * @author Administrator * ==========================产生验证码============================ */ public class CheckCode extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { private static final long serialVersionUID = -4545744597784634421L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应类型为图片 , (以前是text/html) response.setContentType("image/jpeg"); // 产生四位随机验证码 StringBuffer sb = new StringBuffer(4); for (int i = 0; i < 4; i++) { int n = (int) (Math.random() * 10); sb.append(n); } String validateCode = sb.toString(); // 将验证码记录在session中,便于用户输入之后的验证 request.getSession().setAttribute("checkcode", validateCode); // 创建缓存图片 BufferedImage image = new BufferedImage(80, 25, BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); g.setColor(Color.LIGHT_GRAY); g.fillRect(0, 0, 80, 25); g.setColor(Color.BLACK); g.drawString(validateCode, 10, 20); g.dispose(); ServletOutputStream outStream = response.getOutputStream(); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(outStream); encoder.encode(image); outStream.close(); } }2.配置web.xml文件
<!--------------------------------------------------------------------------------------------------------> <!-- 配置验证码 --> <servlet> <servlet-name>CheckCode</servlet-name> <servlet-class>com.shopping.controller.util.CheckCode</servlet-class> </servlet> <servlet-mapping> <servlet-name>CheckCode</servlet-name> <url-pattern>/checkcode</url-pattern> </servlet-mapping>3. 在jsp页面中使用验证码(访问该servlet)
<!--------------------------------------------------------------------------------------------------------> <tr> <td>验证码:</td> <td><input type="text" name="checkcode" id="checkcode" /></td> <td><img src="<%=request.getContextPath()%>/checkcode" border="0" /></td> </tr>