zoukankan      html  css  js  c++  java
  • [Struts2与spring集成]There is no Action mapped for action name index.

    struts2与spring集成遇到如下问题,已经调了很久,还是没有找出原因,希望各位大牛帮忙解惑,找出其中端倪!

    导入的相关jar如下:

    web.xml文件如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    
          <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> 
            <init-param>  
                <param-name>config</param-name>  
                <param-value>
                    struts-default.xml,
                    struts-plugin.xml,
                    /WEB-INF/config/config-struts/struts-base.xml
                </param-value>  
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                /WEB-INF/config/config-spring/spring-base.xml
            </param-value>
        </context-param>
        
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
      
          <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
          </welcome-file-list>
    </web-app>
    struts-base.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.DynamicMethodInvocation" value="false" />
        <constant name="struts.devMode" value="true" />
        <constant name="struts.action.extension" value="do,action"></constant>
        <constant name="struts.objectFactory" value="spring" />
        
        <include file="struts-index.xml"></include> 
        
    </struts>
    struts-index.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>    
        
        <package name="index" namespace="/index" extends="struts-default">
            <action name="index" class="loginAction" method="login">
                <result name="success">/WEB-INF/pages/login/login.jsp</result> 
            </action>
        </package>
    
    </struts>
    spring-base.xml如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    
        <import resource="spring-index.xml" />
    
    </beans>
    spring-index.xml如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    
        <bean id="loginService" class="com.andy.app.service.impl.LoginServiceImpl"></bean>
        <bean id="loginAction" class="com.andy.app.struts.action.index.LoginAction" scope="prototype">
            <property name="loginService" ref="loginService"></property>
        </bean>
    
    </beans>
     

    index.jsp如下:

    <%
    final String url = request.getContextPath() + "/index/index.action";
    response.sendRedirect(response.encodeURL(url));
    %>

    目录结构如下:

    myeclipse控制台出现的问题:

    There is no Action mapped for action name index. - [unknown location]
    	at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189)
    	at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
    	at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
    	at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
    	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:475)
    	at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
    	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    	at java.lang.Thread.run(Thread.java:619)
    

      

    浏览器访问:http://localhost:8080/app出现错误如下:

    还有一个奇怪的现象是:

    如果我把

    <package name="index" namespace="/index" extends="struts-default">

    改为

    <package name="index" extends="struts-default"> 或者<package name="index" namespace="/" extends="struts-default">

    index.jsp改为

    <%
    final String url = request.getContextPath() + "/index.action";
    response.sendRedirect(response.encodeURL(url));
    %>

    浏览器再次访问:http://localhost:8080/app出现错误如下:

    网上找了查看了很多,都说是把配置文件放到类路径下,尝试了也不行,而且我这样写应该也是可以的吧。

    花了很长时间,真没辙,希望各位指点迷津,谢谢!

     
     
  • 相关阅读:
    关联容器:unordered_map详细介绍
    c++类成员变量初始化相关问题
    全方位深入理解JavaScript面向对象
    彻底搞懂 JS 中 this 机制
    IDEA 服务器热部署详解(On Update action/On frame deactivation)
    Java书籍推荐
    JSTL
    谭浩强的书中的一些知识点(1)
    EL表达式
    第一章第二章
  • 原文地址:https://www.cnblogs.com/slliang/p/3469692.html
Copyright © 2011-2022 走看看