chap3 验证码和文件上传下载.pptx
文本预览下载声明
第13章 验证码和文件上传、下载
1
本章教学内容
使用JSP验证码
验证码开发
认识文件上传
实现文件上传
文件下载
2
13.1 使用JSP验证码
我们可以利用验证码来防止恶意用户反复尝试用户名密码匹配
保护正常用户的账户安全
保护数据库的性能
验证码形态
数字、文字、字符组成的图片
干扰信息(但不会干扰肉眼识别的能力)
字符扭曲
3
13.1使用JSP验证码
验证码必须满足以下几个性质:
不同的请求,得到的验证码应该是随机的,或者是无法预知的,必须由服务器端产生
验证码必须通过人眼识别,而通过图像编程的方法编写的机器人程序在客户端运行,几乎无法识别。这就是验证码都比较歪斜或者模糊的原因,否则就很容易通过图像处理算法来识别
除了人眼观察之外,客户端无法通过其他手段获取验证码信息。这就是验证码为什么用图片,而不是直接用一个数字文本在页面上显示的原因,因为客户端可能通过访问网页源代码的方式获取验证码的内容
4
13.1使用JSP验证码
验证码的工作流程如下:
服务器端随机生成验证码字符串,保存在session 中,并写入图片,将图片连同表单发给客户端
客户端输入验证码,并提交,服务器端获取客户提交的验证码,和前面产生的的随机验证码字符串相比较;如果相同,则继续进行表单所描述的操作(如登录、注册等);如果不同,直接将错误信息返回给客户端。避免程序的继续运行以及访问数据库
5
13.2 验证码开发——实现验证码
在 JSP 上开发验证码步骤如下:
1、实例化 java.awt.image.BufferedImage 类。它的作用是访问图像数据缓冲区,或者说对所要绘的图片对象进行访问
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
width、height:图片尺寸大小
BufferedImage.TYPE_INT_RGB:用RGB颜色显示
6
13.2 验证码开发——实现验证码
2、从 BufferedImange 中获取 Graphics 类对象(画笔),并设定相关属性。Graphics 提供了对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制。
Graphics g = image.getGraphics();
g.setColor(Color color);//设置颜色
g.fillRect(int,int,int,int);//设置生成的图片为长方形
7
13.2 验证码开发——实现验证码
8
3、产生 4 位数随机数,并将其存入 session 中。
//产生随机数
Random rnd = new Random();
int randNum = rnd.nextInt(8999) + 1000; //产生一个4位随机数在1000到9999之间。
String randStr = String.valueOf(randNum);
session.setAttribute(randStr, randStr);
13.2 验证码开发——实现验证码
9
4、用画笔画出随机数和干扰点。
g.setColor(Color.black);
g.setFont(new Font(, Font.PLAIN, 20));
g.drawString(randStr, 10, 17);
//随机产生 100 个干扰点,使图象中的验证码不易被其他程序探测到
for (int i = 0; i 100; i++){
int x = rnd.nextInt(width);
int y = rnd.nextInt(height);
g.drawOval(x, y, 1, 1);
}
13.2 验证码开发——实现验证码
10
5、输出图像
// 输出图象到页面
ImageIO.write(Image image, JPEG, response.getOutputStream());
6、清除缓冲区
out.clear();
out = pageContext.pushBody();
13.2 验证码开发——验证码刷新
11
当用户看不清楚的时候可以通过刷新实现重新生成验证码。验证码的刷新技术有很多种,一般使用 JavaScript 刷新验证码,最方便的方法是,点击验证码图片,获得新的验证码
用验证码验证
13.3 认识文件上传
12
在 JavaWeb 应用开发中,文件的上传是必不可少的功能,例如上传简历、上传图片、又或者是上传源代码等
文件上传的本质,其实就是把客户端本地计算机的文件保存到网站服务器中
显示全部