86 文件上传基础

87 使用 fileupload 组件

88 文件上传案例_需求

89 文件上传案例_JS代码

90 文件上传案例_约束的可配置性

91 文件上传案例_总体步骤分析

92 文件上传案例_构建 FileUploadBean 集合

93 文件上传案例_完成文件的上传

94 文件上传案例_复习

95 文件上传案例_校验及小结

96 文件下载

97 国际化之Locale

98 国际化之DateFormat

99 国际化之NumberFormat

100 国际化之MessageFormat

101 国际化之ResourceBundle

102 国际化之 fmt 标签及小结

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篇四的更多相关文章

  1. java学习笔记-JavaWeb篇一

    JavaWEB篇一 1 Tomcat的安装和配置 2 JavaWeb开发的目录结构 3 使用Eclipse开发JavaWeb项目 4 第一个Servlet程序 5 Servlet 的配置及生命周期方法 ...

  2. java学习笔记-JavaWeb篇二

    JavaWEB篇二 45 HttpSession概述46 HttpSession的生命周期 47 HttpSession常用方法示例48 HttpSessionURL重写 49 HttpSession ...

  3. java学习笔记-JavaWeb篇三

    63 JSTL_表达式操作64 JSTL_流程控制操作 65 JSTL_迭代操作 66 JSTL_URL操作67 JSTL_改写MVC案例68 Filter概述 69 创建HttpFilter 70 ...

  4. Java学习笔记——基础篇

    Tips1:eclipse中会经常用到System.out.println方法,可以先输入syso,然后eclipse就会自动联想出这个语句了!! 学习笔记: *包.权限控制 1.包(package) ...

  5. 【Java学习笔记之三十四】超详解Java多线程基础

    前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 正文 线程与进程 1 线程:进程中负责程序执行的 ...

  6. Java 学习笔记提高篇

    Java笔记(提高篇)整理   主要内容: 面向对象 异常 数组 常用类 集合 IO流 线程 反射 Socket编程 1.  面向对象 1.1包 用来管理Java中的类, 类似文件夹管理文件一样. 因 ...

  7. Java学习笔记(十四)——Java静态工厂

    [前面的话] 每天过的还行,对我来说,只要让自己充实,生活就会是好的. 学习Java工场方法的原因是最近在使用Spring框架做一个系统,其中有一个注入的方法是使用静态工场方法注入,所以学习一下,基础 ...

  8. java学习笔记-基础篇

    Java基础篇 1—12 常识 13 this关键字 14参数传递 16 继承 17 访问权限 28—31异常 1—12 常识 1.文件夹以列表展示,显示扩展名,在地址栏显示全路径 2.javac编译 ...

  9. Redis 学习笔记(篇四):整数集合和压缩列表

    整数集合 Redis 中当一个集合(set)中只包含整数,并且元素不多时,底层使用整数集合实现,否则使用字典实现. 那么: 为什么会出现整数集合呢?都使用字典存储不行吗? 整数集合在 Redis 中的 ...

随机推荐

  1. 【PyQt5 学习记录】008:改变窗口样式之二

    super(MainWindow, self).__init__(parent, flags=Qt.Widget) 首先需要关闭窗口的默认样式,以方便定时想要的样式: self.setWindowFl ...

  2. 64位版本的Windows不兼容,masm无法运行解决方法

    问题: 在Window64位运行不了的masm 解决方法: 1.下载DosBox0.74(当前最新): 2.安装后运行,运行后出现控制台: 3.在DosBox的控制台下运行 Mount x: x:/m ...

  3. c++之stringstream类的用法

    简介: 今天利用opecv提取每一帧图片并保存到本地指定目录下的时,对于保存的每一帧的图片希望第几帧体现在图片名中, 这里便用到了stringstream类的将数字转化为字符串这一功能 C++ Str ...

  4. C#防止WebBrowser在新窗口中打开链接页面

    在日常的开发中,大家有时需要用WebBrowser加载URL,来实现某些功能.而这时,我们就不希望所打开的页面中的链接,在新窗口中打开,因为这样的话,实际上是用系统默认的浏览器打开了,从而脱离了你的W ...

  5. Object.defineProperty 与数据绑定的简单实现

    对象是一个属性集合,对象的基本特征是属性名(name)和属性值(value).ES5 增加了属性描述符,包括数据属性描述符(configurable enumerable writable value ...

  6. Java XML SAX 解析注意

    版权声明: 欢迎转载,但请保留文章原始出处 作者:GavinCT 出处:http://www.cnblogs.com/ct2011/p/4002738.html 什么时候可以把解析值赋给对象 一般从网 ...

  7. Android通过Intent传递对象

    1.传递Serializable方式类对象 首先创建一个序列化类:User import java.io.Serializable; public class User implements Seri ...

  8. maven属性、profile、资源过滤、不同环境构建项目

    maven针对不同环境构建项目 maven使用属性.profile及资源过滤支持针对不同环境构建项目 maven属性 maven共有六类属性 1.最常见的是自定义属性,即在pom文件里通过<pr ...

  9. zabbix系列之五——安装后配置一

    https://www.zabbix.com/documentation/3.4/manual/appliance Configuration 1Hosts and host groups Overv ...

  10. 单独配置 Ehcache

    package com.shy.ehcache; import net.sf.ehcache.Cache; import net.sf.ehcache.CacheManager; import net ...