读书人

转 Struts2实现单文件的下传功能实例详

发布时间: 2012-12-25 16:18:28 作者: rapoo

转 Struts2实现单文件的上传功能实例详解及源代码
Struts2完成文件的上传功能实例

10级学员 志课堂笔记

在这里通过一个实例简单写一下struts2实现文件上传的流程。

首先通过手写的方式写一个上传的流程

第一步:创建相应的jsp页面

注意:

Form表单的Enctype属性有以下三个值:

1) application/x-www-form-urlencoded:这是默认编码方式,它只处理表单域里的value属性值,采用这种编码方式的表单会将表单域的值处理成URL编码方式。

2) multipart/form-data:这种编码方式的表单会以二进制流的方式来处理表单数据,这种编码方式会把文件域指定文件的内容也封装到请求参数里。(经常用)

3) text/plain:这种方式主要适用于直接通过表单发送邮件的方式。

文件上传是web应用经常用到的一个知识。原理是,通过为表单元素设置enctype=”multipart/form-data”属性,让表单提交的数据以二进制编码的方式提交,在接收此请求的Servlet中用二进制流来获取内容,就可以取得上传文件的内容,从而实现文件的上传。

页面效果:

转 Struts2实现单文件的下传功能实例详解及源代码

第二步:编写对应的action文件

  • 显示文件上传成功。

    上面是为了让大家更加了解文件上传的内部处理过程,其实struts2已经通过拦截器封装好了文件上传的功能,我认为封装的还是非常完整的。

    上面实现的功能完全可以用以下拦截器去实现:

  • "http://struts.apache.org/dtds/struts-2.3.dtd">
  • <struts>
  • <!--
  • 因为在struts.properties文件中指明了struts文件上传的默认大小为2M <constant
  • name="struts.multipart.maxSize" value="1024*1024*2"></constant>
  • -->
  • <package name="upload" extends="struts-default">
  • <!-- 通过全局定义当上传出错时返回到update.jsp页面 -->
  • <global-results>
  • <result name="input">/update.jsp</result>
  • </global-results>
  • <action name="upload" class="cn.csdn.upload.action.UploadAction">
  • <interceptor-ref name="fileUpload">
  • <!-- 限制上传文件的格式 -->
  • <param name="allowedTypes">image/JPEG,image/bmp,image/pjpeg,image/gif</param>
  • <!--
  • 添加一个拦截器的时候虽然在这里设置了文件上传大小的限制,但是由于
  • 在struts.properties文件中有struts文件的设置所以在上面必须添加常量设置
  • -->
  • <param name="maximumSize">10485760</param>
  • </interceptor-ref>
  • <!-- 当添加一个拦截器的时候,那么默认的拦截器必须手动添加 -->
  • <interceptor-ref name="defaultStack"></interceptor-ref>
  • <!-- 依赖注入属性 -->
  • <!-- 设置上传文件的路径 -->
  • <param name="savePath">/upload</param>
  • <!-- 文件上传成功后跳转到success.jsp页面 -->
  • <result name="success">/test.jsp</result>
  • </action>
  • </package>
  • </struts>

  • 读书人网 >编程

    热点推荐