java学习笔记-JavaWeb篇四
92 文件上传案例_构建 FileUploadBean 集合
86 文件上传基础
1. 进行文件上传时,表单需要做的准备:
1) 请求方式为post:<form action="uploadServlet" method="post" ...>
2) 使用file的表单域:<input type="file" name="file">
3) 使用multipart/form-data的请求编码方式:<form action="uploadServlet" method="post" enctype="multipart/form-data">
<form action="uploadServlet" method="post" enctype="multipart/form-data">
上传文件:<input type="file" name="file">
<input type="submit" value="submit">
</form>
4) 关于enctype:
> application/x-www-form-urlencoded:表单enctype 属性的默认值。这种编码方案使用有限的字符集,当使用了非字母和数字时,必须用“%HH”(H代表十六进制数字)。对于大容量的二进制数据或包含非ASCII字符的文本来说,这种编码不能满足要求
> multipart/form-data:form设定了enctype="multipart/form-data"属性后,表示表单以二进制传输数据
2. 服务端:
1)不能再使用request.getParameter()等方式获取请求信息。获取不到,因为请求的编码方式已经改为multipart/form-data,以二进制的方式来提交请求信息
2)可以使用输入流的方式来获取,但不建议这样做
@WebServlet("/uploadServlet") public class UploadServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { InputStream in = request.getInputStream(); Reader reader = new InputStreamReader(in); BufferedReader bufferedReader = new BufferedReader(reader); String str = null; while((str = bufferedReader.readLine()) != null){ System.out.println(str); } } }
3)具体使用commons-fileupload组件来完成文件的上传操作
87 使用 fileupload 组件
I. 搭建环境:加入
commons-io-2.0.jar
commons-fileupload-1.2.2.jar
II. 基本思想:
> commons-fileupload 可以解析请求,得到1个FileItem对象组成的list
> commons-fileupload 把所有的请求信息都解析为FileItem对象,无论是一个一般的文本域还是一个文件于
> 可以调用FileItem 的isFormField() 方法来判断是一个表单域 或不是表单域(则是一个文件域)
> 再来进一步获取信息
// Process a regular form field
if (item.isFormField()) {
String name = item.getFieldName();
String value = item.getString();
...
}
// Process a file upload
if (!item.isFormField()) {
String fieldName = item.getFieldName();
String fileName = item.getName();
String contentType = item.getContentType();
boolean isInMemory = item.isInMemory();
long sizeInBytes = item.getSize();
...
}
InputStream uploadedStream = item.getInputStream();
...
uploadedStream.close();
88 文件上传案例_需求
89 文件上传案例_JS代码
90 文件上传案例_约束的可配置性
91 文件上传案例_总体步骤分析
92 文件上传案例_构建 FileUploadBean 集合
93 文件上传案例_完成文件的上传
94 文件上传案例_复习
95 文件上传案例_校验及小结
96 文件下载
97 国际化之Locale
98 国际化之DateFormat
99 国际化之NumberFormat
100 国际化之MessageFormat
101 国际化之ResourceBundle
102 国际化之 ft 标签及小结