struts2AndUploadify集成

preview
共36个文件
jar:13个
xml:4个
swf:2个
需积分: 0 0 下载量 198 浏览量 更新于2016-01-20 收藏 4.25MB ZIP 举报
Struts2是一个流行的Java Web应用程序框架,用于构建和维护可扩展、模块化和灵活的Web应用。它基于Model-View-Controller(MVC)架构模式,帮助开发者将业务逻辑、数据展示和用户界面分离,提高了开发效率和代码的可维护性。而Uploadify是一款JavaScript插件,它使用Flash技术实现异步文件上传,可以处理多文件同时上传,提供良好的用户体验。 在Struts2中集成Uploadify,主要是为了解决传统HTML表单提交时可能导致页面刷新的问题,以及实现文件批量上传的需求。传统的表单提交会发送所有表单字段到服务器,这可能导致不必要的数据传输和页面重载,尤其当上传大文件或多个文件时。Uploadify通过AJAX方式上传文件,可以在不刷新整个页面的情况下完成文件上传,提高了用户体验。 集成步骤通常包括以下几个关键环节: 1. **配置Struts2**: 首先确保你的项目已经正确配置了Struts2框架,包括添加struts2-core库、配置struts2的主配置文件(如struts.xml),并设置Action来处理请求。 2. **引入Uploadify**: 在HTML页面中引入Uploadify的JavaScript和CSS文件。这些文件可以从Uploadify的官方网站或者其他可靠的源下载,然后部署到你的Web应用的静态资源目录下。 3. **创建上传表单**: 创建一个HTML或JSP页面,定义一个`<input>`元素,设置其类型为"file",并添加Uploadify的属性,如`id`、`swf`、`uploader`等,这些属性指定了Flash对象的位置和处理文件上传的服务器端Action。 ```html <input type="file" id="fileInput" name="file" multiple /> <script> $(function() { $("#fileInput").uploadify({ 'swf' : 'js/uploadify.swf', 'uploader' : 'action/uploadFile.action', 'multi' : true, 'auto' : true, 'queueID' : 'fileQueueDiv', 'onUploadSuccess' : function(file, data, response) { // 处理上传成功后的回调 } }); }); </script> ``` 4. **编写Struts2 Action**: 在服务器端,你需要创建一个Struts2 Action来接收和处理上传的文件。这个Action通常需要实现`org.apache.struts2.interceptor.FileUploadInterceptor`拦截器,以便处理多部分HTTP请求(即包含文件的数据)。Action中的方法会接收到上传的文件,并进行保存或进一步处理。 ```java public class UploadFileAction extends ActionSupport implements Preparable { private File file; private String fileName; // getters and setters... @Override public String execute() throws Exception { // 保存文件到服务器,或者执行其他业务逻辑 File saveLocation = new File("path/to/save/files"); file.transferTo(saveLocation); return SUCCESS; } @Override public void prepare() throws Exception { // 初始化file和fileName属性,以便FileUploadInterceptor能正确处理 } } ``` 5. **配置Struts2 Action**: 在struts.xml配置文件中,为UploadFileAction添加配置,指定Action的类名和结果。 ```xml <package name="default" namespace="/" extends="struts-default"> <action name="uploadFile" class="com.example.UploadFileAction"> <interceptor-ref name="fileUpload"> <param name="maximumSize">1048576</param> <!-- 1MB --> <param name="allowedTypes">image/jpeg,image/png,application/pdf</param> </interceptor-ref> <result name="success">/success.jsp</result> </action> </package> ``` 6. **处理上传结果**: 当文件上传成功后,你可以在JavaScript的`onUploadSuccess`回调函数中处理返回的数据,比如更新UI,显示上传成功的消息,或者处理返回的服务器响应。 集成Struts2与Uploadify,能够使你的Web应用具备高效、便捷的多文件上传功能,同时避免了传统表单提交带来的页面刷新问题。不过,需要注意的是,由于Uploadify依赖Flash,因此在某些不支持Flash的设备(如iOS设备)上可能无法正常工作。为了解决这个问题,可以考虑使用HTML5的File API,或者寻找其他的无Flash的上传插件,如Plupload或Dropzone.js。