`

WebWork中使用execAndWait的使用总结

    博客分类:
  • Java
阅读更多

在项目中使用excel将用户数据导入系统,由于导入的数据量不断增多,逻辑的判断和处理也越来越复杂,为了提高导入的速度和用户体验,决定采用多线程处理导入数据,并在页面给用户提示进度。

WebWork用的是2.2.7。

原来上传使用的是WebWork默认的上传拦截器fileUpload,加上execAndWait以后,偶尔会提示文件不存在。

 

[com.opensymphony.webwork.interceptor.FileUploadInterceptor] - <Removing file upload D:\SoftTool\tomcat55\work\Catalina\localhost\imanager\upload__2b4efc5d_12773f9bb52__7fac_00000002.tmp>
<java.io.FileNotFoundException: D:\SoftTool\tomcat55\work\Catalina\localhost\imanager\upload__2b4efc5d_12773f9bb52__7fac_00000002.tmp (系统找不到指定的文件。)
 

在网上搜了一下,有前贝说fileUpload在拦截之后就会把上传的文件删掉,exeAndWait是启用另一个线程去执行,所以有时候会出现文件不存在的情况。

为了保险起见,我新建了一个Interceptor,将临时文件拷贝一份赋给action。在Action执行之后将文件手动上传。

 

public String intercept(ActionInvocation invocation) throws Exception {
		Object action = invocation.getAction();
		if (action != null && action instanceof ImportSetWorkTurnAction) {
			ImportSetWorkTurnAction setWorkTurnAction = (ImportSetWorkTurnAction) action;
			File srcFile = setWorkTurnAction.getFile();
			if (srcFile != null) {
				File destFile = new File(srcFile.getPath() + ".bak");
				FileUtils.copyFile(srcFile, destFile);
				setWorkTurnAction.setFile(destFile);
			}
		}
		return invocation.invoke();
	}

 运行之后发现还是有问题,setWorkTurnAction.getFile()拿到的文件为null,而action中的文件判空却显示文件不为空,检查一下,发现原来是我拦截器的

顺序有问题,我将新的拦截器直接放到了fileUpload之后,之后是defaultStack,而在defaultStack没执行之前上传的文件还没有为action的属性file赋值,所以在我的拦截器里就拿不到文件。将defaultStack放到新拦截器之后问题解决。

未完待续 。。。

分享到:
评论

相关推荐

    webwork2.17中文使用手册

    webwork2.17中文使用手册

    webwork中文 webwork中文参考 webwork中文资料 webwork学习资料

    尽管随着时间的发展,新的框架如Spring MVC和Play Framework等逐渐崭露头角,但WebWork依然在许多现有项目中发挥着重要作用,特别是在那些重视代码质量和开发效率的企业中。对于希望深入理解MVC架构和Java Web开发的...

    webwork中文参考手册

    这个“WebWork中文参考手册”显然是针对想要学习和使用WebWork框架的初学者准备的资源。手册可能包含了框架的基本概念、核心组件、配置、控制器、模型、视图、动作、拦截器以及与Spring等其他框架的集成等内容。 在...

    webwork中上传文件

    在本例中,我们关注的是使用WebWork框架在Java环境中实现文件上传。WebWork是一个轻量级的MVC(Model-View-Controller)框架,它提供了处理HTTP请求和响应的强大工具,包括文件上传。 首先,我们需要了解WebWork的...

    webwork标签的使用和介绍

    WebWork 是一款基于 Java 的 MVC(Model-View-Controller)框架,它提供了强大的标签库来简化JSP页面的开发。这些标签使得开发者能够更高效地处理业务...使用WebWork,开发者可以创建出结构清晰、易于维护的Web应用。

    webwork中使用datepicker标签来选择日期

    本文将深入探讨如何在WebWork中使用`datepicker`标签来实现用户友好的日期选择功能。 `datepicker`标签通常与JavaScript库如jQuery UI的Datepicker组件结合使用,它允许用户通过一个交互式的日历来选择日期,而不是...

    webwork中文帮助文档

    本中文帮助文档旨在为使用WebWork框架的开发者提供详尽的指导和支持。 在WebWork框架中,模型(Model)负责处理业务逻辑,视图(View)负责展示数据,控制器(Controller)则协调模型和视图,处理用户的请求。这种...

    webwork2个人学习总结

    - `taglib`标签用于加载Webwork2的标签库,以便在JSP页面中使用。 3. **Xwork.xml配置**: - `xwork.xml`是Webwork2的主要配置文件,它定义了Action、拦截器等关键组件。 - 使用`&lt;!DOCTYPE&gt;`声明引用XWork 1.0的...

    webwork中文文档

    1. **配置WebWork**:首先,需要在项目的web.xml中配置WebWork的监听器,并在WebWork的配置文件中定义Action和拦截器。 2. **编写Action类**:创建Action类并实现相应的业务逻辑。 3. **配置拦截器**:根据需要选择...

    webwork+spring整合例子 内带使用说明 以及webwork文档(中文)

    WebWork和Spring是两个在Java Web开发中广泛使用的框架,它们各自有着独特的优点。WebWork以其强大的动作映射和强大的表单验证而著名,而Spring则以其依赖注入和全面的企业级服务支持闻名。将这两个框架整合在一起,...

    webwork2中文教程

    通过阅读这份"webwork2中文教程",你可以快速上手并熟练掌握WebWork2的使用技巧,从而在开发过程中提高效率,降低出错率。 总的来说,WebWork2是一个强大的Web应用框架,它的设计思想和特性在后来的Struts2中得到了...

    webwork的使用教程

    在WebWork中,我们通常会看到`xwork.xml`配置文件,它是WebWork应用的主要配置中心,用来定义Action、拦截器、数据绑定规则等关键组件。 **WebWork介绍** WebWork 是一种灵活且高效的Web开发框架,旨在简化Java Web...

    使用webwork上传excel并导入数据库

    在IT行业中,WebWork是一个基于Java的MVC(模型-视图-控制器)框架,它提供了灵活的事件驱动模型和强大的Action支持,用于构建企业级Web应用。本话题聚焦于如何利用WebWork来处理Excel文件的上传,并将其数据导入到...

    webwork 中文API

    WebWork 是一个基于Java的MVC(模型-视图-控制器)框架,它在Web应用程序开发中被广泛使用。这个“WebWork 中文API”显然是一份由专家翻译的文档,目的是帮助中国开发者更好地理解和使用WebWork框架。下面将详细阐述...

    WebWork标签使用说明

    chm格式的webwork标签帮助文档,英文的

    WebWork中文文档

    - **Configuration**:WebWork框架的配置信息存储在XML配置文件中,包括Action的映射、拦截器的定义等。 ### 学习WebWork框架的步骤 想要熟练掌握WebWork框架,以下步骤可能会有所帮助: 1. **理解MVC架构**:...

    WebWork入门教程[创建你第一个WebWork action]

    在WebWork的学习过程中,了解它的设计理念、掌握Action的创建和配置,以及熟练使用拦截器和值栈,将有助于提升你构建高效、可维护的Java Web应用的能力。同时,WebWork与Struts2的紧密联系,也意味着学习WebWork对...

    WEBWORK

    这允许在 JSP 页面中使用 WebWork 的标签,如 `&lt;s:form&gt;`、`&lt;s:textfield&gt;` 等。 3. **welcome-file-list**:定义了当用户访问目录而不是具体文件时,服务器应该显示的默认欢迎页面。在这个例子中,如果用户访问...

    WebWork入门例子 HelloWorld

    在JSP页面`hello.jsp`中,我们可以使用WebWork的OGNL(Object-Graph Navigation Language)表达式来获取Action中的属性值: ```jsp &lt;h1&gt;&lt;s:property value="message"/&gt; ``` `&lt;s:property&gt;`标签会输出`...

    webwork2中文参考

    webwork2中文参考

Global site tag (gtag.js) - Google Analytics