web.xml文件出错导致了There is no Action mapped for namespace / and action name
2013-09-27 21:46
405 查看
把一个web应用部署到tomcat的时候,run on server的时候,console报错:
警告: Could not find action or result
There is no Action mapped for namespace / and action name . - [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.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
在网上查了一下,这个是初学者很容易犯的错误,但是网上铺天盖地的解决方案都不是我的菜啊,
再次分享一下网上对于解决这个问题的方案,
一、struts.xml文件错误。这种错误又分为以下几种:1,struts.xml文件名错误。一定要注意拼写问题;2,struts.xml文件放置路径错误。一定要将此文件放置在src目录下。编译成功后,要确认是否编译到classes目录中;3,struts.xml文件内容错误。下面给出一个正确的struts.xml文件以供参考。
二、如果排除了struts.xml文件的问题,还有一种可能就是,在web.xml文件中的<welcome-file>信息中是否配置了自己工程的启动页面。如果没有配置,地址栏中要输入完成的url,如:http://localhost:8080/Struts2Sample/jsp/login.jsp,后面的资源详细信息不输入的时候也会报这个错误,我就是栽在这个问题上的(^_^)。
以上解决方案的原文地址为:http://www.cnblogs.com/gulvzhe/archive/2011/11/21/2256632.html 谢谢博主的分享!
现在仔细一看,第二种方式就是我所出现的问题啊,哎,开始解决问题心急,没有认真看,浪费了多少时间啊!
这个问题一直纠结我很久,struts.xml文件我看了n遍,改了也多次,结果都没有用,struts.xml是确定没有错的,位置也放对了,后来我才发现时我的web.xml的错误,也就是第二种方案里面的少了<welcome-file-list>这一个属性。
以下是我的web.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<web-app
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_3_0.xsd" version="3.0" >
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>
以上红色的部分是之前没有的,后来添加之后就不再报错了,不知道还没有解决There is no Action mapped for namespace / and action name问题的你是不是犯了这个错误,老师说<welcome-file-list>属性本来就是存在的,如下:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
老师说tomcat在启动的时候回自动加载web.xml里面的属性配置,如果没有就会报相应的错误,不知道是不是这样讲,请大神阐述一下这里面的原因
针对There is no Action mapped for namespace / and action name这个问题,我的另外一个老师是这样解释的:没有为根路径[/]提供映射,现在想想还真是有点道理,只是当时没有领悟到。
警告: Could not find action or result
There is no Action mapped for namespace / and action name . - [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.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
在网上查了一下,这个是初学者很容易犯的错误,但是网上铺天盖地的解决方案都不是我的菜啊,
再次分享一下网上对于解决这个问题的方案,
一、struts.xml文件错误。这种错误又分为以下几种:1,struts.xml文件名错误。一定要注意拼写问题;2,struts.xml文件放置路径错误。一定要将此文件放置在src目录下。编译成功后,要确认是否编译到classes目录中;3,struts.xml文件内容错误。下面给出一个正确的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> <package name="default" namespace="/" extends="struts-default"> <action name="login" class="com.wanggc.struts2.sample.Struts2Action"> <result name="success">/jsp/result.jsp</result> </action> </package> </struts>
二、如果排除了struts.xml文件的问题,还有一种可能就是,在web.xml文件中的<welcome-file>信息中是否配置了自己工程的启动页面。如果没有配置,地址栏中要输入完成的url,如:http://localhost:8080/Struts2Sample/jsp/login.jsp,后面的资源详细信息不输入的时候也会报这个错误,我就是栽在这个问题上的(^_^)。
以上解决方案的原文地址为:http://www.cnblogs.com/gulvzhe/archive/2011/11/21/2256632.html 谢谢博主的分享!
现在仔细一看,第二种方式就是我所出现的问题啊,哎,开始解决问题心急,没有认真看,浪费了多少时间啊!
这个问题一直纠结我很久,struts.xml文件我看了n遍,改了也多次,结果都没有用,struts.xml是确定没有错的,位置也放对了,后来我才发现时我的web.xml的错误,也就是第二种方案里面的少了<welcome-file-list>这一个属性。
以下是我的web.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<web-app
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_3_0.xsd" version="3.0" >
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>
以上红色的部分是之前没有的,后来添加之后就不再报错了,不知道还没有解决There is no Action mapped for namespace / and action name问题的你是不是犯了这个错误,老师说<welcome-file-list>属性本来就是存在的,如下:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
老师说tomcat在启动的时候回自动加载web.xml里面的属性配置,如果没有就会报相应的错误,不知道是不是这样讲,请大神阐述一下这里面的原因
针对There is no Action mapped for namespace / and action name这个问题,我的另外一个老师是这样解释的:没有为根路径[/]提供映射,现在想想还真是有点道理,只是当时没有领悟到。
相关文章推荐
- 【转】Objective-C Class Dump
- CWinAppEx::SetRegistryBase 设置应用程序的默认注册表路径。
- android 分享功能
- 016、AppWidgetProvider桌面小控件
- Nagios监控Oralce
- [cocos2d-x]lua环境配置
- [cocos2d-x]lua环境配置
- Android通过JDBC直连MySql
- Android MediaPlayer的生命周期
- 2013(秋季)CocoaChina开发者大会实录及PPT:Kim-Mai Cutler《欧美APP市场推广趋势分析》
- Cocos2D-X笔记(2)场景的切换及特效
- Android import_includes export_includes
- 解决git cherry-pick xxx fatal: bad object xxx
- [Android] "Failed to find Java version for 'C:\Windows\system32\java.exe"
- 【转】cocos2d-x中锚点设置及定位方式
- Android开发怎么查看和管理sqlite数据库
- [Asp.Net]状态管理(Session、Application、Cache)
- pageFlowScope、backingBeanScope、viewScope、applicationScope、sessionScope、requestScope
- Android开发之解析JSon数据(二)
- iOS -view横向变成竖向