<?xml version="1.0" encoding="UTF-8" ?> 
<!--指定struts2配置文件的DTD信息--> 
  <!DOCTYPE struts PUBLIC 
          "-//Apache Sofeware Foundation//DTD Struts Configuration 2.0//EN" 
          "http://struts.apache.org/dtds/struts-2.0.dtd"> 
<!-- struts是struts2配置文件的根元素--> 
<struts> 
<!-- struts2的Action必须放在指定的包空间下定义 --> 
<package name="struts2" extends="struts-default">
<!--定义login的Action,该Action的实现类为com.soft.action.LoginAction类--> 
<action name="Login" class="com.soft.action.LoginAction"> 
<!--定义处理结果和资源之间映射关系--> 
<result name="success">/welcome.jsp </result> 
<result name="error">/error.jsp </result> 
</action> 
</package> 
</struts> 
 试试这个呢?也许你给的这个<package name="action" extends="struts-default">  package name有点问题。

解决方案 »

  1.   

    There is no Action mapped for namespace / and action name login. - [unknown location] 
    at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:186) 
    at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:41) 
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:494) 
    at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:422) 
    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:233) 
    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:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 
    at java.lang.Thread.run(Thread.java:619) 
    把页面中的login改成Login 试下
      

  2.   

    <package name="action" extends="struts-default"> 
    这里的name必须和web.xml中你配制的名字完全一样
    应该是这样的<package name="Struts2" extends="struts-default"> 
      

  3.   

    首先,需要告诉你的是
    关于你在struts.xml中配置的package的name属性和你在xml定义的完全没有任何的联系和关系
    在struts.xml中,package的name属性其实你也可以理解成java中的包,包名除了命名规范外是没有限制的再来看你报的异常
    严重: Could not find action or result
    There is no Action mapped for namespace / and action name login. - [unknown location] 
    不能找到指定的action or result
    这里可能有2个情况
    1.你在jsp中定义的action是否正确的指向你在struts.xml中配置的action
    你在struts.xml中配置的action是
    <action name="Login" class="com.soft.action.LoginAction"> 
    那么你JSP中,你定义的action应该是
    <s:form action="Login">   或者你没有使用struts2的标签库,那么你应该定义成<Form action="Login.action">
    注意,在JSP中的action定义必须是跟xml中的action定义是一模一样的,否则肯定找不到.第二种情况,我不敢确定,不过你可以尝试下,你报的异常是找不到action或者result.
    而且你的确没有定义
    <result name="input">/xxx.jsp</result>
    你的程序里有没有输入校验,或者类型转换???你可以自己看看:)  因为当发现输入校验或者类型转换时,在你没有定义时,他们是会返回"input"的