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 标签及小结
java学习笔记-JavaWeb篇四的更多相关文章
- java学习笔记-JavaWeb篇一
JavaWEB篇一 1 Tomcat的安装和配置 2 JavaWeb开发的目录结构 3 使用Eclipse开发JavaWeb项目 4 第一个Servlet程序 5 Servlet 的配置及生命周期方法 ...
- java学习笔记-JavaWeb篇二
JavaWEB篇二 45 HttpSession概述46 HttpSession的生命周期 47 HttpSession常用方法示例48 HttpSessionURL重写 49 HttpSession ...
- java学习笔记-JavaWeb篇三
63 JSTL_表达式操作64 JSTL_流程控制操作 65 JSTL_迭代操作 66 JSTL_URL操作67 JSTL_改写MVC案例68 Filter概述 69 创建HttpFilter 70 ...
- Java学习笔记——基础篇
Tips1:eclipse中会经常用到System.out.println方法,可以先输入syso,然后eclipse就会自动联想出这个语句了!! 学习笔记: *包.权限控制 1.包(package) ...
- 【Java学习笔记之三十四】超详解Java多线程基础
前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 正文 线程与进程 1 线程:进程中负责程序执行的 ...
- Java 学习笔记提高篇
Java笔记(提高篇)整理 主要内容: 面向对象 异常 数组 常用类 集合 IO流 线程 反射 Socket编程 1. 面向对象 1.1包 用来管理Java中的类, 类似文件夹管理文件一样. 因 ...
- Java学习笔记(十四)——Java静态工厂
[前面的话] 每天过的还行,对我来说,只要让自己充实,生活就会是好的. 学习Java工场方法的原因是最近在使用Spring框架做一个系统,其中有一个注入的方法是使用静态工场方法注入,所以学习一下,基础 ...
- java学习笔记-基础篇
Java基础篇 1—12 常识 13 this关键字 14参数传递 16 继承 17 访问权限 28—31异常 1—12 常识 1.文件夹以列表展示,显示扩展名,在地址栏显示全路径 2.javac编译 ...
- Redis 学习笔记(篇四):整数集合和压缩列表
整数集合 Redis 中当一个集合(set)中只包含整数,并且元素不多时,底层使用整数集合实现,否则使用字典实现. 那么: 为什么会出现整数集合呢?都使用字典存储不行吗? 整数集合在 Redis 中的 ...
随机推荐
- Android 使用全局变量的问题
现在每天都在忙,而且一忙起来,就把写笔记的事情放在了后面,最近在写程序的时候,突然要使用全局变量,就按照以前的方式,写了一个类,然后把变量都声明为静态变量,然后做为全局变量使用,但是在进行Activi ...
- springboot中使用自定义的properties属性
在application.properties中添加属性ai.name=明ai.age=22ai.sex=男定义配置类如下,前缀(prefix)可自定义修改,本文为 ai.@Configuration ...
- 线上Bug修复流程
- 【转】用JS完成手机短信验证按键点击事件
原地址:https://gitee.com/RainVanilla/codes/i7jske4wdogvnb0apmfx571 试了一下,效果还可以,留着备用! <!DOCTYPE html&g ...
- maven 编译打包时,明明类文件没有问题,却提示错误:未结束的字符串字面值,maven-compiler-plugin:2.3.2
maven错误提示如下: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (de ...
- 用JS实现的常见几种排序算法
1.快速排序法 function quickSort(a) { if (a.length <= 1) { return a; } var midLength = Math.floor(a.len ...
- javaweb 读取properties配置文件参数
场景1:在servlet中读取properties配置文件参数 protected void doGet(HttpServletRequest request, HttpServletResponse ...
- Oracle EBS 报错 您不具有分配给您的清除MDS的权限
- Oracle EBS 导入日记账报错
EM29/EM01 ED01
- sql server单个字段列转行由,隔开
SELECT STUFF((SELECT ','+字段名 FROM 表名 for xml path('')),1,1,'')