一:验证码的定义及作用
定义:是一种区分用户是计算机还是人的公共全自动程序。
作用:可以防止恶意破解密码,刷票、论坛灌水,有效防止某个黑客对某一个注册用户用特定程序暴力破解方式进行不断的登录尝试。
使用:登录注册、论坛发表、百度社区等。
二:常见的登录流程及网页制作
三:网页界面显示的验证码界面代码(即LoginServlet类)
LoginServlet类
1、获取页面验证码
2、获取session保存的验证码
3、比较验证码
4、返回验证码结果
<script type="text/javascript">
function reLodeCode(){
var t = new Date().getTime();
document.getElementById("imagecode").src =
"Imageservlet?t="+t;
}
</script>
<span style="font-family: Arial, Helvetica, sans-serif;">< form action="LoginServlet" method="post"></span>
验证码:<input type="text" name="checkcode"/>
<img src="ImageServlet" id="imageCode" alt="验证码" title="验证码">
<a href="javaScript:reLoadCode()">看不清</a><br/>
<input type="submit" value="提交">
</form>
四:使用Servlet实现验证码
生成验证码用到的类:
1、BufferedImage图像数据缓冲区2、Graphics绘制图片
3、Color获取颜色
4、Random生成随机数
5、ImageIo输出图片
ImageServlet类
1、定义BufferedImage对象
2、获得Graphics对象
3、获得Random产生随机验证码信息
4、使用Graphics绘制图片
5、记录验证码信息到session中
6、使用ImageIo输出图片
示例代码如下:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//BufferedImage图像数据缓冲区
BufferedImage bi= new BufferedImage(80, 40, BufferedImage.TYPE_INT_RGB);
//Graphics绘制图片
Graphics g = bi.getGraphics();
//Color获取颜色
Color c= new Color(80, 10, 40);
g.fillRect(0, 0, 60, 30);
char ch[]= "ABCDEFG1234567890".toCharArray();
StringBuffer sb = new StringBuffer();
//Random生成随机数
Random r= new Random();
for(int i=0; i<4;i++){
int index =r.nextInt(ch.length);
g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
g.drawString(ch[index]+"", i*15+3, 20);
sb.append(ch[index]);
}
request.getSession().setAttribute("piccode", sb.toString());
ImageIO.write(bi, "JPG", response.getOutputStream());
}
}
以上总结就结束啦,最后即可简单的实现