最近项目里要用到上传图片功能,本来这是很简单的功能,不消半天就能搞定,可是我却捣鼓了两天,全因为下边的错误:
ERROR [Engine] StandardWrapperValve[default]: Servlet.service() for servlet default threw exception
java.lang.IllegalStateException
......
在网上查原因,有人说是因为struts2.1.6版本包的问题,其中写文件要用到输入输出流,而struts跳转的return也是通过输出流写的,一前一后,会发生冲突;又有一种说法是说struts2.1.6版本的过滤器和servlet有冲突,导致程序中获取不到页面提交的file对象。
一般都会在web.xml里这样配置struts的过滤规则:
<!-- 定义Struts2的FilterDispathcer过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这样配置会将所有类型的请求都拦截,包括servlet。
经多方求证,今天找到解决方法,通过servlet来解决,当然web.xml配置文件里的struts的过滤规则也要改一下:
<!-- 定义Struts2的FilterDispathcer过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<!-- 定义struts2过滤规则:过滤后缀为.action和.jsp的请求 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
这样我们的servlet就可以访问了,我是这样配置的:
<!-- 我的文件上传servlet类 -->
<servlet>
<servlet-name>imgUpload</servlet-name>
<servlet-class>cn.com.ServletUpload</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>imgUpload</servlet-name>
<url-pattern>/imgUpload</url-pattern>
</servlet-mapping>
这样,只要在页面中修改form的action为"/imgUpload"就可以了。
至于servlet内部如何写,就依个人喜好了,我个人是用了jspSmartUpload工具操作的。
希望可以对遇到像我的问题一样的朋友有一定的帮助!
分享到:
相关推荐
Struts2.1.6-Lib: 深入理解Struts2框架核心与库文件 Struts2是一个流行的开源MVC(Model-View-Controller)框架,它为Java Web应用提供了一种强大的架构支持。Struts2.1.6是该框架的一个版本,其lib目录下的jar包...
在描述中提到,之前上传的"struts2.1.6jar all.zip"文件出现了错误,里面包含了Hibernate的内容,而实际上应该是与Struts2相关的文件。因此,这里我们需要关注的是正确的Struts2.1.6版本,确保它包含所有必要的组件...
Struts2.1.6是Apache Struts框架的一个特定版本,该框架是Java Web开发中的一个强大工具。Struts2以其MVC(Model-View-Controller)架构模式为核心,为开发者提供了一种组织应用程序结构、处理HTTP请求以及管理业务...
struts2.1.6 解决日历问题。区别struts2.0
Struts2.1.6是Apache Struts框架的一个版本,它是基于MVC(Model-View-Controller)设计模式的Java Web应用程序开发框架。这个版本的jar包包含了运行Struts2应用所需的所有核心类库和依赖组件。以下是关于Struts...
struts2.1.6api. 想学习struts2的朋友们。希望能喜欢这个api,我也希望能给你们一点帮助。
Struts2.1.6是Apache Struts框架的一个版本,这是一个流行且强大的Java Web应用程序开发框架,用于构建基于MVC(Model-View-Controller)模式的Web应用。它提供了简化HTTP请求处理、动作调度、视图渲染以及业务逻辑...
struts2.1.6 API chm文件格式的是本人自己创建的没有版权问题
Struts 2.1.6 是一个非常重要的版本,在Java Web开发中占据着核心地位,尤其是在基于MVC(Model-View-Controller)架构的应用程序设计中。Struts 2 是Apache软件基金会的一个开源项目,它是Struts 1的升级版,提供了...
标题 "Struts2.1.6 Spring2.5.6 Hibernate3.3.2" 描述的是一个基于Java的企业级应用程序开发的集成框架,其中包含了三个核心组件:Struts2、Spring和Hibernate。这些组件都是Java Web开发中的关键库,分别负责MVC...
Struts2.1.6是Apache Struts框架的一个版本,这是一个流行且强大的Java Web应用程序开发框架,用于构建和维护可扩展、易于维护的MVC(Model-View-Controller)架构的应用程序。Struts2的核心设计理念是提供一种组织...
在使用Struts2.1.6时,你需要将以下主要的jar包添加到项目的类路径中: - **struts2-core.jar**:Struts2的核心库,包含了框架的基础组件。 - **struts2-convention-plugin.jar**:提供了约定优于配置的特性,可以...
Struts2.1.6是Apache Struts框架的一个版本,它是基于MVC(Model-View-Controller)设计模式的Java Web应用程序开发框架。这个版本的lib目录包含了运行Struts2应用所需的所有核心类库,这些类库使得开发者能够构建...
在这个"struts2.1.6零配置DEMO"中,我们将深入探讨如何在不使用XML配置文件的情况下搭建一个简单的Struts2应用。 首先,Struts2的核心是Action类,它是处理用户请求的中心。在传统的Struts2应用中,我们通常会在...
以上就是使用Struts2.1.6将图片上传到MySQL数据库的简单项目实现过程。通过这个项目,我们可以学习到Struts2的文件上传、数据库操作以及在页面上显示二进制数据等核心概念。在实际应用中,你可能还需要考虑错误处理...
此外,Struts2.1.6的完整版还可能包含了安全更新和bug修复,对于使用该版本的开发者来说,了解并遵循最佳实践以防止安全漏洞(如著名的Struts2 CVE漏洞)至关重要。 总之,Struts2.1.6框架为Java Web开发提供了强大...
Struts2.1.6是Apache Struts框架的一个版本,它是Java EE(企业版)应用程序开发中的一个流行MVC(模型-视图-控制器)框架。这个版本的Struts提供了许多功能,帮助开发者构建可维护、可扩展且结构良好的Web应用。在...