请问为什么struts2在访问不存在的Action,如:http://localhost:8080/Testweb/abc,
Testweb是我的项目名,abc是随便乱写的,然后报:
Unable to instantiate Action, com.shutao.test.action.abcAction,  defined for 'abc' in namespace '/'com.shutao.test.action.abcAction
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:307)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:388)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:187)
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:478)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)root causejava.lang.ClassNotFoundException: com.shutao.test.action.abcAction
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.spring.SpringObjectFactory.getClassInstance(SpringObjectFactory.java:212)
com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:132)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:139)
com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:109)
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:288)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:388)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:187)
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:478)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)请问为什么不是报404,是哪里出问题。
麻烦帮下新手,谢谢!

解决方案 »

  1.   

    http://localhost:8080/Testweb/abc.action   -- 这个应该报404
      

  2.   

    不是呀,也是包同样错误,我的strutx.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.enable.SlashesInActionNames " value="true" />
    <constant name="struts.i18n.encoding" value="UTF-8"/>
    <constant name="struts.devModel" value="true"/>
    <constant name="locale" value="zh_CN"/>
    <constant name="struts.objectFactory" value="spring"/><package name="TestSSH" namespace="/" extends="struts-default"> <default-action-ref name="notExist"></default-action-ref>

    <action name="notExist">  
               <result>/index.jsp</result>  
           </action> 
           
    <action name="*-*" class="com.shutao.test.action.{1}Action" method="{2}">
    <result name="success">
    /commonPages/success.jsp
    </result>
    <result name="execute">
    /commonPages/execute.jsp
    </result>
    <result name="error">
    /errorPages/error.jsp
    </result>
    </action> 

    </package>
    </struts>
      

  3.   

    java.lang.ClassNotFoundException: com.shutao.test.action.abcAction
    类没找到
      

  4.   

    为什么struts2一定要去找这个类?该action不存在为什么不报404?
      

  5.   

    改成<action name="*-*Action" class="com.shutao.test.action.{1}Action" method="{2}">试试
      

  6.   

    applicationContext.xml 文件要与web.xml文件配置的位置对应,像下面的配置,applicationContext.xml 文件要放在WEB-INF下面<context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/applicationContext*.xml</param-value>
     </context-param>