您的位置:首页 > Web前端 > JavaScript

JSP中验证码的使用

2008-12-25 21:20 260 查看
引用:http://242877.blog.chinajavaworld.com/entry/4836/0

在诸如用户登陆时,经常要用到验证码,这里可以用Servlet来处理
1. 编写生成验证码的Servlet: CheckCode.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//////////////////////////////////////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文件

1
2
3
4
5
6
7
8
9
10
<!-------------------------------------------------------------------------------------------------------->
<!-- 配置验证码 -->
<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)

1
2
3
4
5
6
<!-------------------------------------------------------------------------------------------------------->
<tr>
<td>验证码:</td>
<td><input type="text" name="checkcode" id="checkcode" /></td>
<td><img src="<%=request.getContextPath()%>/checkcode" border="0" /></td>
</tr>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: