配置文件上传的Action

简介:

配置Struts 2文件上传的Action与配置普通Action并没有太大的不同,一样是指定该Actionname,以及该Action的实现类。当然,还应该为该Action配置<result .../>元素。与之前的Action配置存在的一个小小区别是,该Action还配置了一个<param .../>元素,该元素用于为该Action的属性动态分配属性值。

下面是该应用的struts.xml配置文件代码。

程序清单:codes\04\4.3\simpleUpload\WEB-INF\src\struts.xml


 
 
  1. <?xml version="1.0" encoding="GBK"?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" 
  4.     "http://struts.apache.org/dtds/struts-2.1.7.dtd">     
  5. <struts>  
  6.     <constant name="struts.custom.i18n.resources" value="mess"/>  
  7.     <!-- 设置该应用使用的解码集 -->  
  8.     <constant name="struts.i18n.encoding" value="GBK"/>  
  9.     <package name="lee" extends="struts-default">  
  10.         <!-- 配置处理文件上传的Action -->  
  11.         <action name="uploadPro" class="org.crazyit.app.action.UploadAction">  
  12.             <!-- 动态设置Action的属性值 -->  
  13.             <param name="savePath">/upload</param>  
  14.             <!-- 配置Struts 2默认的视图页面 -->  
  15.             <result>/WEB-INF/content/succ.jsp</result>    
  16.         </action>  
  17.         <action name="*">  
  18.             <result>/WEB-INF/content/{1}.jsp</result>     
  19.         </action>  
  20.     </package>  
  21. </struts>  

上面的配置文件除了使用<param .../>元素设置了uploadActionsavePath属性值外,与前面的Action几乎完全一样——这再次体现了Struts 2的简单设计。

配置了该Web应用后,如果我们在如图4.32所示的页面中输入文件标题,并浏览到需要上传的文件,然后单击“上传”按钮,该上传请求将被UploadAction处理,处理结束后转入succ.jsp页面,该页面使用了简单的Struts 2标签来显示上传的图片。succ.jsp页面的代码如下。

程序清单:codes\04\4.3\simpleUpload\WEB-INF\content\succ.jsp


 
 
  1. <%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>  
  2. <%@taglib prefix="s" uri="/struts-tags"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  4.     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  5. <html xmlns="http://www.w3.org/1999/xhtml">  
  6. <head>  
  7.     <title>上传成功</title>  
  8. </head>  
  9. <body>  
  10.     上传成功!<br/>  
  11.     文件标题:<s:property value=" + title"/><br/>  
  12.     文件为:<img src="<s:property value="'uploadFiles/'   
  13.         + uploadFileName"/>"/><br/>  
  14. </body>  
  15. </html>  

如果上传成功,将看到如图4.23所示的页面。注意:

上面我们上传时把文件保存到服务器时该文件的文件名依然没有发生改变,这在实际项目中需要改进,因为多个用户并发上传时可能发生文件名相同的情形,因此建议使用java.util.UUID工具类来生成唯一的文件名。

 

         通过上面的开发过程,不难发现通过Struts 2实现文件上传确实是一件简单的事情。只要我们将文件域与Action中一个类型为File的属性关联,就可以轻松访问到上传文件的文件内容——至于Struts 2使用何种Multipart解析器,对开发者完全透明。

提示:Struts 2实现文件上传的编程关键,就是使用了三个属性来封装文件域,其中一个用于封装该文件的文件名,一个用于封装该文件的文件类型,一个用于封装该文件的文件内容。


 

本文转自fkJava李刚 51CTO博客,原文链接:http://blog.51cto.com/javaligang/889833 ,如需转载请自行联系原作者

相关文章
配置project.config.json文件报错 解析 project.config.json 文件失败,请检查其内容或删除此文件。
配置project.config.json文件报错 解析 project.config.json 文件失败,请检查其内容或删除此文件。
442 0
配置project.config.json文件报错 解析 project.config.json 文件失败,请检查其内容或删除此文件。
|
1月前
|
安全 内存技术
【文件上传-配置文件】crossdomain.xml跨域策略配置文件上传
【文件上传-配置文件】crossdomain.xml跨域策略配置文件上传
|
3月前
|
前端开发 API
【API管理 APIM】APIM中如何配置使用URL路径的方式传递参数(如由test.htm?name=xxx 变为test\xxx)
【API管理 APIM】APIM中如何配置使用URL路径的方式传递参数(如由test.htm?name=xxx 变为test\xxx)
|
6月前
|
前端开发 JavaScript 应用服务中间件
修改Jeecg-boot context-path(附加图片+Nginx配置)
修改Jeecg-boot context-path(附加图片+Nginx配置)
163 0
|
12月前
|
前端开发 Java 关系型数据库
SpringBoot本地上传文件到resources目录永久保存下载的最佳实践
Java后端项目上传文件是一个很常见的需求,一般正式项目中我们上传文件都是利用第三方阿里云OSS这类的,但是如果只是为了学习之用,那我们可能就会直接上传到电脑上某个本地文件夹
270 1
|
XML 测试技术 API
sprintboot文件上传XML文件并解析
sprintboot文件上传XML文件并解析
207 0
sprintboot文件上传XML文件并解析
syberh:未检测到已安装的target,请先安装target/找不到项目配置文件project.config.json,请确定当前目录是Syberh项目根目录!
syberh:未检测到已安装的target,请先安装target/找不到项目配置文件project.config.json,请确定当前目录是Syberh项目根目录!
202 0
|
XML 前端开发 Java
SpringMVC--常用的三种文件实现上传实现方式你知道么?
文件的上传与下载基本上是web项目中会用到的技术,在web学习中我们用到的是 Apache fileupload这个组件来实现上传,在springmvc中对它进行了封装,让我们使用起来比较方便,但是底层还是由Apache fileupload来实现的。springmvc中由MultipartFile接口来实现文件上传。
346 0
如何修改Kestrel上传文件的大小
如何修改Kestrel上传文件的大小
203 0