`

运行struts2时又出现问题了,本来是用通配符的,却出现了如下错误:

阅读更多
运行struts2时又出现问题了,本来是用通配符的,却出现了如下错误:
Struts Problem Report
Struts has detected an unhandled exception:

Messages: com.bjsxt.struts2.action.TeacherAction
Unable to instantiate Action, com.bjsxt.struts2.action.TeacherAction, defined for 'Teacher_add' in namespace '/actions'com.bjsxt.struts2.action.TeacherAction

File: org/apache/catalina/loader/WebappClassLoader.java
Line number: 1,387

--------------------------------------------------------------------------------

Stacktraces
Unable to instantiate Action, com.bjsxt.struts2.action.TeacherAction, defined for 'Teacher_add' in namespace '/actions'com.bjsxt.struts2.action.TeacherAction com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:306)
    com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:387)
    com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:186)
    org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
    org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
    com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:458)
    org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:76)
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:857)
    org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
    org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
    java.lang.Thread.run(Thread.java:619)
java.lang.ClassNotFoundException: com.bjsxt.struts2.action.TeacherAction org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
    com.opensymphony.xwork2.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:146)
    com.opensymphony.xwork2.ObjectFactory.getClassInstance(ObjectFactory.java:96)
    com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:149)
    com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:139)
    com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:109)
    com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:287)
    com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:387)
    com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:186)
    org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
    org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
    com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:458)
    org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:76)
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:857)
    org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
    org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
    java.lang.Thread.run(Thread.java:619)

--------------------------------------------------------------------------------

You are seeing this page because development mode is enabled. Development mode, or devMode, enables extra debugging behaviors and reports to assist developers. To disable this mode, set:

struts.devMode=false
in your WEB-INF/classes/struts.properties file.
   呵呵,仔细检查后发现:我的struts.xml配置如下:

    <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <constant name="struts.devMode" value="true" />
    <package name="actions" namespace="/actions" extends="struts-default">
        <action name="Student*" class="com.bjsxt.struts2.action.StudentAction" method="{1}">
            <result>/Student{1}_success.jsp</result>
        </action>
       
        <action name="*_*" class="com.bjsxt.struts2.action.{1}Action" method="{2}">
            <result>/{1}_{2}success.jsp</result>
        </action>
    </package>

    <!-- Add packages here -->

</struts>

    但是我的jsp的页面的名字确实Teacher_add_success.jsp

     Teacher_delete_success.jsp之类的

    呵呵,错误很明显了:

l.第一个错误:

Unable to instantiate Action, com.bjsxt.struts2.action.TeacherAction, defined for 'Teacher_add' in namespace '/actions'com.bjsxt.struts2.action.TeacherAction

   就是说你的struts.xml中result返回的Action的名字与jsp的名字不一致的原因!!

2.第二个错误:

java.lang.ClassNotFoundException: com.bjsxt.struts2.action.TeacherAction

这是什么意思呢,呵呵仔细看自己的项目,终于发现了,这是报的com.bjsxt.struts2.action.TeacherAction 空指针异常,原来是我的这个类的名字写错了,呵呵,找不到自然的报空指针异常了!!

 
分享到:
评论

相关推荐

    struts2通配符示例代码

    在Struts2的配置中,通配符(Wildcard)的使用是一个非常实用的功能,它使得URL映射更加灵活,减少了重复配置。下面将详细解释Struts2通配符的用法,并结合示例代码进行解析。 1. **Struts2通配符概述** Struts2的...

    Struts2通配符

    ### Struts2通配符详解 #### 一、引言 Struts2是基于MVC设计模式的一个开源框架,它提供了强大的功能来帮助开发者构建健壮的企业级应用。本文主要介绍Struts2中的通配符配置,这是一种非常实用且灵活的方式来处理...

    Struts2_Action学习笔记、通配符{1},{2}

    3. **执行Struts2过滤器**:Struts2的过滤器被触发,开始处理请求。 4. **读取struts.xml配置文件**:根据配置文件中的信息确定请求的处理方式。 5. **解析namespace**:确定请求所属的namespace。 6. **定位action*...

    struts2 通配符配置

    这篇博客可能详细解释了如何在Struts2框架中使用通配符配置来简化Action配置。 通配符配置的核心思想是通过使用特殊字符(如*)来匹配多个Action名称。例如,如果你有一个处理所有用户操作的通用Action,你可以使用...

    Struts2中使用通配符优化配置

    在Struts2中,使用通配符优化配置是实现这一目标的有效手段。通配符允许开发者以一种更加灵活的方式定义Action,避免了为每一个Action单独编写配置项的繁琐工作。 首先,我们来理解一下什么是通配符。在Struts2的...

    Struts2 配置通配符和错误页面

    通过分析和运行这些示例,你可以更好地掌握Struts2的通配符配置和错误处理机制。 总之,熟练掌握Struts2的通配符配置和错误处理能够使你的应用更加健壮,代码更加简洁。这不仅能提高开发效率,还能为用户提供更友好...

    struts2通配符示例

    压缩包中的`CrudText`文件可能是一个用于演示CRUD操作的例子,可能是用文本形式展示了如何使用Struts2的通配符进行创建、读取、更新和删除数据的操作。具体的内容可能包括Action的配置、Action类的编写以及对应的...

    struts2的复习

    9. 通配符匹配:Struts2允许使用通配符进行Action和结果的匹配,例如,`*.{action}`可以匹配所有以action结尾的动作。 七、Struts2与Spring集成 10. 集成Spring:Struts2可以通过Struts2-Spring-plugin插件与Spring...

    struts2动态调用之通配符

    Struts2作为一款流行的Java Web框架,其动态调用功能为开发者提供了极大的便利。在处理多样化的用户请求时,能够灵活地映射不同的操作(methods)到同一个Action,从而简化配置,提高代码的可维护性。本文将深入探讨...

    struts2 路径问题

    4. **通配符映射**:Struts2支持使用通配符来映射Action,例如 `*` 和 `{1}`。通配符可以用于动态生成Action名,但不当使用可能会引起路径匹配混乱。 5. **插件和拦截器**:Struts2的插件和拦截器也会影响路径处理...

    struts2通配符的使用详解

    当客户端发送请求时,Struts2会根据配置文件中的通配符规则来匹配相应的Action。匹配过程中遵循以下规则: - 如果存在一个精确匹配的Action名称,则优先使用精确匹配。 - 如果不存在精确匹配,则按照通配符规则进行...

    struts2利用通配符调用同一个Action里面不同的方法

    Struts2是一个强大的Java web应用...在使用通配符时,一定要注意方法名的命名规则,确保它们与URL路径中的通配符部分匹配,避免出现找不到方法的错误。同时,合理利用通配符和拦截器,可以提升应用的健壮性和用户体验。

    Struts2_入门篇_基本配置_通配符_参数注入_内置对象获取等。。。

    2. **通配符**:Struts2支持使用通配符来匹配多个Action。比如,`*`可以匹配任何字符,`{1}`、`{2}`等可以捕获URL中的动态参数。例如,`*_*" class="com.example.UserAction"&gt;`可以匹配`user_get_1`、`user_save_2`...

    Struts2_通配符映射

    ### Struts2 通配符映射创建步骤详解 #### 一、项目环境搭建与配置 根据提供的描述,本文将详细介绍如何实现Struts2中的通配符映射,并结合具体的步骤来阐述整个过程。 **第一步:创建动态Web工程** 1. **创建...

    Struts2教学视频

    **二、搭建Struts2的运行环境** 搭建Struts2环境通常包括以下几个步骤: 1. 引入Struts2的核心库依赖到项目中,这通常是在Maven或Gradle的pom.xml或build.gradle文件中添加对应的依赖。 2. 配置web.xml文件,将...

    struts2.5+框架使用通配符与动态方法常见问题小结

    Struts2.5框架使用通配符与动态方法常见问题小结 Struts2.5框架使用通配符与动态方法是Struts2.5框架中两个非常重要的概念。通配符是Struts2.5框架中的一种强大的功能,它允许开发者使用通配符来指定方法,减少配置...

    Struts2 如何使Action取得属性范围 通配符 国际化等内容

    - Struts2的拦截器支持使用通配符来指定Action的执行顺序或拦截条件,例如在`struts.xml`中配置拦截器时可以使用通配符来指定某些特定的Action被拦截。 - **国际化处理**: - Struts2内置了国际化支持机制,允许...

    struts2配置文件

    这些jar包是Struts2运行所必需的,缺少任何一项都可能导致运行时错误。 接下来,我们需要配置`web.xml`文件,这是Web应用程序的部署描述符。在`&lt;filter&gt;`和`&lt;filter-mapping&gt;`标签内,定义一个名为`struts2`的过滤...

    struts2完全捕获404错误的方法

    为了更高效地调试和测试,可以使用Struts2提供的开发工具,如Struts2的开发模式,它会提供更详细的错误信息,帮助定位问题。同时,了解Struts2的源码也是提升开发效率的关键,可以深入理解框架的工作原理,更有效地...

Global site tag (gtag.js) - Google Analytics