`
akunamotata
  • 浏览: 373622 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JSP中验证码

阅读更多

在诸如用户登陆时,经常要用到验证码,这里可以用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>

 

 

分享到:
评论
1 楼 qiandongbo 2009-03-15  
我试试改用标签写。。。

相关推荐

Global site tag (gtag.js) - Google Analytics