配置Struts 2文件上传的Action与配置普通Action并没有太大的不同,一样是指定该Action的name,以及该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 .../>元素设置了uploadAction的savePath属性值外,与前面的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实现文件上传的编程关键,就是使用了三个属性来封装文件域,其中一个用于封装该文件的文件名,一个用于封装该文件的文件类型,一个用于封装该文件的文件内容。

配置文件上传的Action相关推荐

  1. SpringMVC 处理multipart形式数据:java方式配置文件上传

    为什么80%的码农都做不了架构师?>>>    首先利用Maven引入jar包: <dependency> <groupId>commons-io</g ...

  2. Nagios配置文件上传

    目    录 Nagios配置文件上传文件手册... 1 V1.1. 1 一.概述... 3 二.具体步骤... 3 一.概述 本手册是根据目前我们已掌握客户监控平台的相关技术撰写,撰写环境并非是客户 ...

  3. 将 s1 和 r1 上的启动配置文件上传到服务器进行备份,packettracer综合技能练习261...

    <packettracer综合技能练习261>由会员分享,可在线阅读,更多相关<packettracer综合技能练习261(7页珍藏版)>请在技术文库上搜索. 1.CCNAEX ...

  4. springcloud配置文件上传大小_SpringCloud实战二-Nacos

    引入 在微服务中,可能有很多服务消费者和服务提供者,我们需要维护这一部分的数据或者内容(服务地址.端口.状态),此时我们引入服务发现(Service Discovery)的概念. 简易服务发现: 我们 ...

  5. nginx 配置文件上传大小

    1. nginx文件上传默认是1MB,所以需要对nginx进行配置,主配置文件nginx.conf下的http{},添加 client_max_body_size 1024m; 2.重新加载配置 ng ...

  6. Drupal笔记之富文本输入框配置文件上传功能

    现在Drupal中的富文本输入框用的是默认的CKEditor,默认是没有文件上传功能的,只有上传图片.我现在需要用到这个功能,来额外配置下. 我这里用的是Editor File Upload模块. 先 ...

  7. sprintboot 配置文件上传大小(默认是1MB)

    application.yaml: spring:profiles:active: @activated@jackson:date-format: yyyy/MM/dd HH:mm:sstime-zo ...

  8. nfine框架 上传文件_MVC之Struts2框架--你并不了解的高级应用

    <"爱读书"--给你讲技术>,我来看书,你来进步,让我们开始吧! 本书简介 书名为<轻量级JavaEE企业应用实战>,是本人在学习JavaEE框架的时候阅读 ...

  9. java action 上传文件_JavaWeb框架_Struts2_(七)-----文件的上传和下载

    1.  前言 这个章节是Struts2框架应用最广泛的三个版块(上传下载.国际化.校验输入)之一,所以这一版块的学习还蛮重要的. 2.  具体内容 2.1Struts2文件上传 2.1.1单文件上传 ...

最新文章

  1. 30+程序员,平时都忙些什么事情?平时都想些什么?以后有啥计划?
  2. linux+Oracle集群课程全面升级
  3. 前端学习 -- Css -- 伪元素
  4. Selenium IDE使用
  5. BB陆逊高达(3Dmax)
  6. n皇后问题,使用位运算解决
  7. tar打包和解压命令
  8. 【学习笔记】吴恩达机器学习 WEEK1
  9. python数组类型_一文搞懂Python中的所有数组数据类型
  10. python匹配字符串_字符串匹配算法之Kmp算法(Python实现)
  11. Python----常用模块1
  12. python顺序结构的关键字_Python相关数据结构的排序
  13. 暑假集训单切赛第一场 CF 191A Dynasty Puzzles
  14. C/C++[codeup 1933,1993]图形输出
  15. Java面试题视频讲解汇总,持续更新中...
  16. NCM格式如何转换为Mp3-音乐格式ncm转换mp3工具
  17. svn和git 常用的命令
  18. 蛋白胶条质谱鉴定实验
  19. 欢迎使JMKAJL KAJLKFJD
  20. 一年303个漏洞,Chrome被评为“最脆弱”浏览器,Opera 最安全!网友:Opera 还有人用?...

热门文章

  1. 有头结点单链表的逆置
  2. c语言最短延时程序,linux下写个C语言程序,要求有0.5微秒以下的延时,要怎样写...
  3. pip install win32api报错解决方法
  4. 个推基于Consul的配置管理
  5. 值得收藏的8个Web端组件库
  6. yii2 刷新缓存(刷新模型缓存)
  7. Unity导入3D模型的过程与方法
  8. bzoj_2064 分裂
  9. HTML中添加meta http-equiv=X-UA-Compatible content=IE=edge,chrome=1
  10. [译]时间自动机:语义,算法和工具