1,struts-config.xml
<struts-config>
  <action-mappings >
   <action path="/index" type="com.person.info.UserInfoAction"
    scope="request" parameter="method">
    <forward name="success" path="/jsp/personshow.jsp"/>
    <forward name="failed" path="/jsp/personshow.jsp"/>
   </action>  
   </action-mappings>
</struts-config>
2,jsp页面:
<form name="form1" method="post" action="/index.do?method=userinfo">
3,出现错误:
HTTP Status 404 - /index.do--------------------------------------------------------------------------------type Status reportmessage /index.dodescription The requested resource (/index.do) is not available.
--------------------------------------------------------------------------------Apache Tomcat/5.5.9
4,为什么出现上面的问题呢?-------请指教!

解决方案 »

  1.   

    <form name="form1" method="post" action="/index.do?method=userinfo"> 
    去掉 "/"就可以了
      

  2.   

    因为.在普通的<form>里面 / 并不能代表你的 根路径.
    除非是<html:form> 
      

  3.   

    去掉后执行,变成下面错误了
    HTTP Status 500 - No action instance for path /index could be created--------------------------------------------------------------------------------type Status reportmessage No action instance for path /index could be createddescription The server encountered an internal error (No action instance for path /index could be created) that prevented it from fulfilling this request.
    --------------------------------------------------------------------------------Apache Tomcat/5.5.9
      

  4.   

    No action instance for path /index could be created
    这段是指你的index页面中没有包含action
    而你在struts-config中定义了action的路径是index页面
    struts-config> 
       <action-mappings > 
       <action path="/index" type="com.person.info.UserInfoAction" 
        scope="request" parameter="method"> 
         <forward name="success" path="/jsp/personshow.jsp"/> 
         <forward name="failed" path="/jsp/personshow.jsp"/> 
       </action>   
        </action-mappings> 
    </struts-config>
    把path指向你的action所在页面
      

  5.   

    在页面上import action后,还是报出:
    HTTP Status 500 - No action instance for path /index could be created--------------------------------------------------------------------------------type Status reportmessage No action instance for path /index could be createddescription The server encountered an internal error (No action instance for path /index could be created) that prevented it from fulfilling this request.
    --------------------------------------------------------------------------------Apache Tomcat/5.5.9
    继续求教!!!!
      

  6.   

    上面的问题已经解决了,但是现在系统又报出:
    HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: Action[/index] does not contain specified method (check logs)
    org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    root cause java.lang.NoSuchMethodException: Action[/index] does not contain specified method (check logs)
    org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:264)
    org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.请教各位!!!
      

  7.   

    你的  action  中的 check logs 方法有问题啊。
      

  8.   

    <form name="form1" method="post" action="${pageContext.request.contextPath}/index.do?method=userinfo">  
    这样改下试试
      

  9.   

    我的action中根本就没有check log方法啊。
      

  10.   

    package com.person.info.action;
    import java.sql.SQLException;
    import org.apache.log4j.*;
    import org.apache.struts.actions.*;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionMapping;
    import javax.servlet.http.*;
    import com.person.info.server.*;
    public class UserInfoAction  extends DispatchAction{

    public final static Logger logger =Logger.getLogger(UserInfoAction.class);
    /*
     * 验证用户登录时的密码正确性;
     * auth by liudb
     * parameter userinfo 
     */
      public ActionForward validLogin(ActionForm form,ActionMapping mapping,HttpServletRequest
      request,HttpServletResponse response)throws Exception{
      System.out.println("222222222222222");
      logger.info("Test here...");
      System.out.println("1111111111111111");
      String name=request.getParameter("name");
          String password=request.getParameter("mypass");  
          UserInfoService user = new UserInfoService();
    if(user.validUser(name, password)){
    return mapping.findForward("success");
    }
    else{
    return mapping.findForward("failed");   
    }
      }
    }
      

  11.   

    <form name="form1" method="post" action="/index.do?method=userinfo"> 
    没看见你的UserInfoAction里面有userinfo方法阿
      

  12.   

    刚才是改了。现在是这样的:
    <form name="form1" method="post" action="index.do?method=validLogin">
      

  13.   

    后台:
    信息: Server startup in 3203 ms
    2008-04-21 14:56:36,765 [http-8080-Processor24] ERROR org.apache.struts.actions.DispatchAction - Action[/index] does not contain method named 'validLogin'
    java.lang.NoSuchMethodException: com.person.info.action.UserInfoAction.validLogin(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
    at java.lang.Class.getMethod(Class.java:1581)
    at org.apache.struts.actions.DispatchAction.getMethod(DispatchAction.java:347)
    at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:255)
    at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)
    2008-04-21 14:56:36,781 [http-8080-Processor24] WARN  org.apache.struts.action.RequestProcessor - Unhandled Exception thrown: class java.lang.NoSuchMethodException
    2008-04-21 14:56:36,781 [http-8080-Processor24] ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/myinfo].[action] - Servlet.service() for servlet action threw exception
    java.lang.NoSuchMethodException: Action[/index] does not contain specified method (check logs)
    at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:264)
    at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)前台(jsp页面):
    HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: Action[/index] does not contain specified method (check logs)
    org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    root cause java.lang.NoSuchMethodException: Action[/index] does not contain specified method (check logs)
    org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:264)
    org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.
    --------------------------------------------------------------------------------Apache Tomcat/5.5.9
      

  14.   

    <form name="form1" method="post" action="${pageContext.request.contextPath}/index.do?method=validLogin">   这样改下!看看
      

  15.   

    index与webroot是同一级目录哦~~
      

  16.   

    public ActionForward validLogin(ActionForm form,ActionMapping mapping,HttpServletRequest 
      request,HttpServletResponse response)==>public ActionForward validLogin(ActionMapping mapping,ActionForm form,HttpServletRequest 
      request,HttpServletResponse response)注意看错误信息的java.lang.NoSuchMethodException: com.person.info.action.UserInfoAction.validLogin(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) ,你前面两个参数顺序倒了
      

  17.   

    刚才问题没有了,现在还是出现以前的那个问题:
    2008-04-21 15:20:05,906 [http-8080-Processor25] ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/myinfo].[action] - Servlet.service() for servlet action threw exception
    java.lang.NoSuchMethodException: Action[/index] does not contain specified method (check logs)
    at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:264)
    at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
    at org.apache.struts.actions.MappingDispatchAction.execute(MappingDispatchAction.java:169)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)
    请指教!!!
      

  18.   

    问题解决,原因是DispatchAction和MappingDispatchAction还是有区别的,
    谢谢以上的各位同仁
      

  19.   

    form里的请求路径带上你的web moduel名在跟/index.do...