while (iter。hasNext()) {
FileItem item = (FileItem) iter。next(); // 忽略其他不是文件域
的所有表单信息
if (!item。isFormField()) {
String name = item。getName(); // 获取上传文件名;包括路径
name = name。substring(name。lastIndexOf(〃”) + 1); // 从全
路径中提取文件名
long size = item。getSize();
if (name != null && !name。equals(〃〃) && size != 0) {
String filePath = System。currentTimeMillis() + 〃_〃 +
name;
item。write(new File(uploadDir; filePath));
Upload upload = new Upload();
upload。setFileName(name);
upload。setFilePath(〃upload/〃 + filePath);
upload。setFileSize(size);
upload。setAddDate(new Date());
list。add(upload);
}
}
}
response。sendRedirect(〃index。jsp〃);
}
getServletPath()。getRealPath(〃/temp〃)将得到“tomcat 安装目录 + /webapps
+ /temp”,这是我们获得服务器下目录下唯一方法,得到了这个完整路径后才
可以决定将文件保存到什么地方。
处理文件上传的第一步是创建一个 DiskFileUpload,为它设置临时目录,文件
大小限制,内存缓存的大小。
105 / 148
…………………………………………………………Page 106……………………………………………………………
得到 DiskFileUpload 实例后,调用 parseRequest(request)解析请求,解析的
结果是一个列表,因为我们可能上传多个问题见。
现在可以循环得到的列表处理每一个FileItem,如果 isFormField()返回 false,
表示当前 FileItem 对应一个上传的文件,下面就能从 FileItem 中获得文件名和
文件大小,最后调用 write()方法写入 upload 目录下。
调用 write()之后,temp 目录下对应的临时文件自动会被删除,如果想保存文件
的具体信息,还需要进行另外的处理,这里我们使用的是一个自定义 javabean,
每次上传成功后会创建一个 Upload,将文件名,文件保存的路径,文件大小,
上传时间加入 UploadServlet 中定义的 list 变量中,下次执行
upload。do?method=list 请求的时候会将其中保存的数据显示到 list。jsp 中。
当然如果服务器重启后内存中的数据就会丢失,实际开发时我们需要将上传信息
保存到数据库中。
11。2。 浏览器部分的设置
文件上传需要客户端与服务器端配合工作,客户端的浏览器必须将文件内容附加
到 http 协议请求中,这样服务器才能处理。
浏览器端有几点需要注意的。
1。 使用 method=〃GET〃。
表单默认使用 method=〃GET〃提交请求,GET 方式的请求是没有请求体
(body)的,所有参数都将附加到url 后传递给服务器。
文件上传需要将二进制数据放到请求体(body)中,所以我们必须指定表
单使用 method=〃POST〃。
106 / 148
…………………………………………………………Page 107……………………………………………………………
2。 为表单设置 enctype=〃multipart/form…data〃。
不设置 enctype 的情况表单只会把文件名传递到服务器,enctype 的效果
是把本地文件以二进制的形式附加到请求的 body 中,供服务器接收解析。
107 / 148
…………………………………………………………Page 108……………………………………………………………
第 12 章 导出文件
注意
超越 contentType=〃text/html〃,servlet 不只可以生成 text/html 类型的 html
文本,也可以生成 image/jpeg 类型的图片,http 支持的所有文件格式都可以通
过 servlet 生成。
如果你不满足以下任一条件,请继续阅读,否则请跳过此后的部分,进入下一章:
第 13 章 剖析 el 表达式。
1。 了解如何使用 servlet 生成图片。
2。 了解设置 contentType 使 servlet 生成不同格式的文件。
12。1。 图片校验码
进入首页,会显示一个彩色图形验证码,用户根据图片上的文字输入文本框。
如果输入错误,会提示输入与图片文字不同,并更新验证码。
108 / 148
…………………………………………………………Page 109……………………………………………………………
输入正确会显示成功信息。
彩色验证码用来防止恶意程序自动发送垃圾消息,或者是恶意程序循环尝试登录
密码。人眼可以根据图片了解验证码的内容,但如果是程序就需要扫描图片分析
图片中的内容,为了加大程序分析破解的难度,我们还为图片准备了干扰用的背
景颜色,并随便修改文字的颜色。这些都是为了加大程序破解的难度。
现在所有的注意力都集中到如何动态生成校验用的图片,看一下 index。jsp 中的
代码。
大家可能感到奇怪了,这里 img 标签对应的是一个静态 jpg 图片,为什么每次刷
新显示的图片内容都不同呢?仔细检查 12…01 目录下我们也看不到captcha。jpg
这个图片,这个图片到底是从哪里得到的呢?
如我们之前所谈到的第 3。4。2 节 “forward 导致找不到图片”,在 html 里包
含的图片,css 样式表,js 脚本,视频等等外部资源,都需要浏览器再次向服务
器发起请求。现在我们进行的请求是一个名叫 captcha。jpg 的图片,而服务器上
并没有这个图片,从 web。xml 里的配置可以看到如下配置。
CaptchaServlet
anni。CaptchaServlet
CaptchaServlet
/captcha。jpg
在这里,名叫/captcha。jpg 的请求会交给CaptchaServlet 处理。虽然这个请求
看起来很像一个实际存在的文件,可服务器接收到这个请求之后并没有去磁盘上
找这个文件,而是根据 web。xml 中配置把request 发送给 CaptchaServlet 并等
待它做出响应。
小说推荐
- php程序设计简明教程(DOC格式)
- -Page 1-PHP 程序设计简明教程PHP 讲义 第 1 页 共 90 页-Page 2-目录序 4第一章 PHP 简介 6
- 最新章:第31章
- asp基础实用教程(DOC格式)
- 目 录一、关于ASP二、ASP的新功能三、创建ASP页四、使用脚本语言五、使用变量和常量六、使用集合七、ASP内建对象八、向浏览器发送内容九、包含文件十、访问数据库十一、调试ASP脚本十二、维护ASP应用程序的安全一、关于ASP Active Server Pages(ASP)是服务器端脚本编写环境
- 最新章:第17章
- asp基础入门篇(DOC格式)
- ASP入门与实例-IIS的安装与配置1、运行环境与软件要求Windows 2000 以上(不包括Windows XP Home版)IIS 4.0 以上Microsoft Access 2000Dreamweaver MX2、IIS的安装与配置a.安装IIS若操作系统中还未安装IIS服务器,可打开"控
- 最新章:第23章
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 最新章:第4章
- JMS简明教程(PDF格式)
- -Page 1-JMS1.1规范中文版卫建军2007‐11‐22-Page 2
- 最新章:第28章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 最新章:第143章
- Word2003使用技巧大全(DOC格式)
- Word使用技巧(二)表格使用大全更新时间:2009-11-16 19:32:15 本文共阅读了257次 作者:xushezheng 文章来源:电教组字体大小:大中小一、快速插入表格 拖动“插入表格”能插入的最大表格跟该图标位置、显示分辨率有关。如使用800×600分辨率时最大为18行×28列 二、
- 最新章:第1章
- Excel word ppt office使用技巧大全(DOC格式)
- -Page 1-Excel_word_ppt_使用技巧大全(完全版)Excelwordppt使用技巧大全(2011新版本)I-Page 2-Excel_word_ppt_使用技巧大全(完全版
- 最新章:第338章
- oracle从入门到精通(PDF格式)
- -Page 1-Oracle 从入门到精通-Page 2-资源来自网络,仅供学习 Oracle 从入门到精通一、SQL 8
- 最新章:第37章