目录

  • 1 阶段1模块一Java Web编程准备
    • 1.1 学习导航
    • 1.2 任务一进行系统需求分析与总体设计
    • 1.3 任务二搭建开发环境
    • 1.4 任务三制作静态页面
    • 1.5 任务四部署并运行第一个JSP文件
    • 1.6 模块一课件
    • 1.7 模块一习题
  • 2 阶段1模块二Java Web编程入门
    • 2.1 学习导航
    • 2.2 任务一认识JSP页面组成元素
    • 2.3 任务二认识JSP的内置对象
    • 2.4 任务三使用out对象输出信息
    • 2.5 任务四获取客户端请求数据
    • 2.6 任务五实现页面跳转
    • 2.7 任务六实现访问控制
    • 2.8 任务七制作网页计数器
    • 2.9 模块二 课件
    • 2.10 模块二习题
  • 3 阶段1模块三JavaWeb数据库编程
    • 3.1 学习导航
    • 3.2 任务一使用MySQL
    • 3.3 任务二使用SQL操作数据
    • 3.4 任务三认识连接数据库的步骤
    • 3.5 任务四使用Statement处理数据
    • 3.6 任务五使用PreparedStatement处理数据
    • 3.7 模块三课件
    • 3.8 模块三习题
  • 4 阶段1模块四JavaWeb基础阶段实训
    • 4.1 课件
    • 4.2 IT新闻资讯系统
  • 5 阶段2模块五Java Web应用优化
    • 5.1 学习导航
    • 5.2 任务一认识软件设计分层架构
    • 5.3 任务二使用分层架构实现管理员登录
    • 5.4 模块五课件
    • 5.5 模块五习题
  • 6 阶段2模块六Java Web开发业务应用
    • 6.1 学习导航
    • 6.2 任务一实现页面的分页显示
    • 6.3 任务二使用SmartUpload组件实现文件上传下载
    • 6.4 任务三使用图表组件显示动态数据图表
    • 6.5 模块六课件
    • 6.6 模块六习题
  • 7 阶段2模块七Servlet技术基础
    • 7.1 学习导航
    • 7.2 任务一认识Servlet
    • 7.3 任务二创建并运行一个简单的Servlet
    • 7.4 任务三使用Filter解决中文乱码问题
    • 7.5 模块七课件
    • 7.6 模块七习题
  • 8 阶段2模块八MVC开发模式
    • 8.1 学习导航
    • 8.2 任务一认识MVC模式
    • 8.3 任务二使用MVC模式实现用户登录
    • 8.4 模块八课件
    • 8.5 模块八习题
  • 9 阶段2模块九  Java Web进阶阶段实训
    • 9.1 模块九课件
    • 9.2 在线收藏夹
  • 10 阶段3模块十学生会网站项目开发
    • 10.1 模块十课件
  • 11 实训题库
    • 11.1 网络留言板系统1
    • 11.2 网络留言板系统2
    • 11.3 猜数游戏
    • 11.4 学生成绩查询系统
    • 11.5 场馆管理系统
    • 11.6 物资管理系统
    • 11.7 网络书签
    • 11.8 商品库存系统
    • 11.9 火车车次管理系统
    • 11.10 会议室预定系统
    • 11.11 人员档案管理系统
    • 11.12 新闻资讯系统
任务二使用SmartUpload组件实现文件上传下载
  • 1 知识链接
  • 2 任务实现
  • 3 同步实训

【问题引入】

Web应用系统中常会使用到文件的上传及下载,比如发送或查看带有附件的邮件、QQ群中群文件的上传与下载等,文件的上传下载功能从技术上是如何实现的呢?

【实现思路】

目前网络中有很多实用的文件上传组件,可以帮助我们实现文件上传的功能,应用较多的是SmartUpload组件,该组件使用简单,下面就来重点学习该组件的使用。

【知识链接】

1SmartUpload简介

SmartUpload组件是一个实现文件上传的免费组件,因为使用简单方便而被广泛使用。使SmartUpload组件具有以下几个特点:

  • 使用简单:SmartUpload组件可以方便地嵌入到JSP文件中,在JSP文件中仅编写少量代码即可完成文件的上传和下载功能,十分方便。

  • 能够全程控制上传内容:使用SmartUpload组件提供的对象及操作方法,可以获得全部上传文件的信息,包括文件名称、类型、大小等,方便操作。

  • 能够对上传文件的大小、类型进行控制:为了避免在上传过程中出现异常数据,在SmartUpload组件中,专门提供了相应的方法用于限制不符合要求的文件数据。

2.获取和部署SmartUpload组件

SmartUpload组件可以在网络上自由下载,解压下载的.zip文件,查找到smartupload.jar文件,将这个.jar文件放在Web项目的\WEB-INF\lib文件夹下。

3.设置表单属性

一般的输入类型(如textpasswordradiocheckboxselect)传送表单数据到服务器时,所使用的编码方式为application/x-www-form-urlencoded,这也是表单采用post方式时的默认编码方式。在接受表单数据时,可以直接使用request.getParameter()来取得。

但是文件通常都是一些大容量的二进制数据,要将它们传送到服务器时,必须将表单的编码方式设置为multipart/form-data,这样浏览器会以二进制流的形式上传数据。因此需要在表单属性中添加属性enctype,该属性的设置方法如下:

<form enctype="multipart/form-data"method="post">

其中method属性必须是post。可使用SmartUpload对象的getRequest()方法获取com.jspsmart.upload.Request对象,通过该对象获取表单中的信息。

4SmartUpload组件常用类

1File

File类的作用是封装了单个上传文件所包含的所有信息。通过调用File类的方法,我们可以方便地获取到有关上传文件的信息。

6-1  File类的常用方法

                                       

 

方法名称

 
 

方法描述

 
 

public void  saveAs(String destFilePathName)

 
 

将文件保存,参数destFilePathName是保存的文件名

 
 

public void  saveAs(String destFilePathName,int optionSaveAs)

 
 

将文件保存,参数destFilePathName是保存的文件名,参数optionSaveAs表示保存的选项

 
 

public boolean  isMissing()

 
 

用于判断用户是否选择了文件,也即对应的表单项是否有值。选择了文件时,它返回false。未选文件时,它返回true

 
 

public String getFieldName()

 
 

HTML表单中对应于此上传文件的表单项的名字

 
 

public String getFileName()

 
 

取上传文件的文件名(不含目录信息)

 
 

public String getFilePathName()

 
 

取上传文件的文件全名(带目录)

 
 

public String getFileExt()

 
 

取文件扩展名(后缀)

 
 

public int getSize()

 
 

取文件长度(以字节计)

 
 

public String getContentString()

 
 

获取文件的内容,返回值为字符串类型

 

2Files

Files类与File类的区别在于,File类包含了单个上传文件的信息,而Files类表示所有上传文件的集合,通过它可以得到上传文件的数量、大小等信息。Files类提供的常用方法如表6-2所示。

6-2  Files类的常用方法

                   

 

方法名称

 
 

方法描述

 
 

public int getCount()

 
 

取得上传文件的数目

 
 

public File getFile(int index)

 
 

取得指定位移处的文件对象File

 
 

public long getSize()

 
 

取得上传文件的总长度,可用于限制一次性上传的数据量大小

 
 

public Collection getCollection()

 
 

将所有上传文件对象以Collection的形式返回,以便其它应用程序引用,浏览上传文件信息

 

(3)SmartUpload

SmartUpload类用于实现文件的上传与下载操作,SmartUpload类提供的常用方法如表6-3所示。

6-3  SmartUpload类的常用方法

                                                                               

 

方法名称

 
 

方法描述

 
 

public final void   initialize(javax.servlet.jsp.PageContext pageContext)

 
 

执行上传下载的初始化工作,必须第一个执行

 
 

public void upload()

 
 

上传文件数据。在initialize方法后执行这个方法。

 
 

public int save(String destPathName)

 
 

将全部上传文件保存到指定目录下,并返回保存的文件个数

 
 

public void setAllowedFilesList(String   allowedFilesList)

 
 

设定允许上传带有指定扩展名的文件,当上传过程中有文件名不允许时,组件将抛出异常。其中,allowedFilesList为允许上传的文件扩展名列表,各个扩展名之间以逗号分隔。如果想允许上传那些没有扩展名的文件,可以用两个逗号表示。例如:setAllowedFilesList("doc,txt,,")

 
 

public void setDeniedFilesList( String   fileList)

 
 

指定了禁止上传的文件扩展名列表,每个扩展名之间以逗号分隔

 
 

public void setMaxFileSize(long filesize)

 
 

设定每个文件允许上传的最大长度

 
 

public void setTotalMaxFileSIze(long totalfilesize)

 
 

设定允许上传文件的总长度