`
rancedxk
  • 浏览: 34110 次
  • 性别: Icon_minigender_1
  • 来自: 河南
文章分类
社区版块
存档分类
最新评论

用struts2.1.6作图片上传

阅读更多
最近项目里要用到上传图片功能,本来这是很简单的功能,不消半天就能搞定,可是我却捣鼓了两天,全因为下边的错误:
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工具操作的。

希望可以对遇到像我的问题一样的朋友有一定的帮助!
1
0
分享到:
评论
2 楼 nojave 2009-12-01  
Thanks very much, I have trapped in this problem for several days !
1 楼 vager 2009-11-11  
这样改了之后岂不是每次访问action都不能省略后面的.action了

相关推荐

    struts2.1.6-lib

    Struts2.1.6-Lib: 深入理解Struts2框架核心与库文件 Struts2是一个流行的开源MVC(Model-View-Controller)框架,它为Java Web应用提供了一种强大的架构支持。Struts2.1.6是该框架的一个版本,其lib目录下的jar包...

    struts2.1.6jar all.zip

    在描述中提到,之前上传的"struts2.1.6jar all.zip"文件出现了错误,里面包含了Hibernate的内容,而实际上应该是与Struts2相关的文件。因此,这里我们需要关注的是正确的Struts2.1.6版本,确保它包含所有必要的组件...

    struts2.1.6-apps.zip

    Struts2.1.6是Apache Struts框架的一个特定版本,该框架是Java Web开发中的一个强大工具。Struts2以其MVC(Model-View-Controller)架构模式为核心,为开发者提供了一种组织应用程序结构、处理HTTP请求以及管理业务...

    struts2.1.6 解决日历问题

    struts2.1.6 解决日历问题。区别struts2.0

    struts2.1.6jar包

    Struts2.1.6是Apache Struts框架的一个版本,它是基于MVC(Model-View-Controller)设计模式的Java Web应用程序开发框架。这个版本的jar包包含了运行Struts2应用所需的所有核心类库和依赖组件。以下是关于Struts...

    Struts2.1.6API

    struts2.1.6api. 想学习struts2的朋友们。希望能喜欢这个api,我也希望能给你们一点帮助。

    struts2.1.6 所有jar包和源码

    Struts2.1.6是Apache Struts框架的一个版本,这是一个流行且强大的Java Web应用程序开发框架,用于构建基于MVC(Model-View-Controller)模式的Web应用。它提供了简化HTTP请求处理、动作调度、视图渲染以及业务逻辑...

    struts2.1.6 API (.chm)

    struts2.1.6 API chm文件格式的是本人自己创建的没有版权问题

    struts-2.1.6-sources

    Struts 2.1.6 是一个非常重要的版本,在Java Web开发中占据着核心地位,尤其是在基于MVC(Model-View-Controller)架构的应用程序设计中。Struts 2 是Apache软件基金会的一个开源项目,它是Struts 1的升级版,提供了...

    Struts2.1.6 Spring2.5.6 Hibernate3.3.2

    标题 "Struts2.1.6 Spring2.5.6 Hibernate3.3.2" 描述的是一个基于Java的企业级应用程序开发的集成框架,其中包含了三个核心组件:Struts2、Spring和Hibernate。这些组件都是Java Web开发中的关键库,分别负责MVC...

    struts2.1.6

    Struts2.1.6是Apache Struts框架的一个版本,这是一个流行且强大的Java Web应用程序开发框架,用于构建和维护可扩展、易于维护的MVC(Model-View-Controller)架构的应用程序。Struts2的核心设计理念是提供一种组织...

    Struts2.1.6 jar包

    在使用Struts2.1.6时,你需要将以下主要的jar包添加到项目的类路径中: - **struts2-core.jar**:Struts2的核心库,包含了框架的基础组件。 - **struts2-convention-plugin.jar**:提供了约定优于配置的特性,可以...

    struts2.1.6lib

    Struts2.1.6是Apache Struts框架的一个版本,它是基于MVC(Model-View-Controller)设计模式的Java Web应用程序开发框架。这个版本的lib目录包含了运行Struts2应用所需的所有核心类库,这些类库使得开发者能够构建...

    struts2.1.6零配置DEMO

    在这个"struts2.1.6零配置DEMO"中,我们将深入探讨如何在不使用XML配置文件的情况下搭建一个简单的Struts2应用。 首先,Struts2的核心是Action类,它是处理用户请求的中心。在传统的Struts2应用中,我们通常会在...

    关于struts2.1.6上传图片到数据库的简单项目

    以上就是使用Struts2.1.6将图片上传到MySQL数据库的简单项目实现过程。通过这个项目,我们可以学习到Struts2的文件上传、数据库操作以及在页面上显示二进制数据等核心概念。在实际应用中,你可能还需要考虑错误处理...

    struts2.1.6架包

    此外,Struts2.1.6的完整版还可能包含了安全更新和bug修复,对于使用该版本的开发者来说,了解并遵循最佳实践以防止安全漏洞(如著名的Struts2 CVE漏洞)至关重要。 总之,Struts2.1.6框架为Java Web开发提供了强大...

    struts2.1.6全部jar包

    Struts2.1.6是Apache Struts框架的一个版本,它是Java EE(企业版)应用程序开发中的一个流行MVC(模型-视图-控制器)框架。这个版本的Struts提供了许多功能,帮助开发者构建可维护、可扩展且结构良好的Web应用。在...

Global site tag (gtag.js) - Google Analytics