action类:
      package com.edu.actions;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;import com.edu.biz.UserBiz;
import com.edu.biz.UserBizImpl;
import com.edu.entity.User;
import com.edu.forms.UserForm;/** 
 * MyEclipse Struts
 * Creation date: 02-15-2009
 * 
 * XDoclet definition:
 * @struts.action parameter="operate" validate="true"
 */
public class UserAction extends DispatchAction {
/*
 * Generated Methods
 */ /** 
 * Method execute
 * @param mapping
 * @param form
 * @param request
 * @param response
 * @return ActionForward
 */
public ActionForward willAdd(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub

return mapping.findForward("toRegister");
}
public ActionForward doAdd(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
return null;
}
public ActionForward doLogin(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
UserForm userForm=(UserForm)form;
String userName=userForm.getUser().getUserName();
String userPassword=userForm.getUser().getUserPassword();
UserBiz userBiz=new UserBizImpl();
User user=userBiz.Check(userName, userPassword);
request.getSession().setAttribute("user", user);
return mapping.findForward("index");
}
public ActionForward doLayout(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
User user=(User) request.getSession().getAttribute("user");
if(null!=user)
{
request.getSession().removeAttribute("user");
}
return mapping.findForward("index");
}
}struts-config.xml:       <form-bean name="userForm" type="com.edu.forms.UserForm" />        <action
      attribute="userForm"
      name="userForm"
      parameter="operate"
      path="/douser"
      type="com.edu.actions.UserAction">
      <forward name="toRegister" path="/WEB-INF/pai/Register_To_Known.jsp" />
      <forward name="index" path="/WEB-INF/pai/index.jsp"></forward>
    </action>页面:<script type="text/javascript">
function onsub(op)
{
var operate=document.getElementById("operate");
operate.value=op;
}</script>
<html:form action="douser.do">
用户名:<html:text property="user.userName" name="userForm" size="6"></html:text><br>
 <input type="hidden" name="operate"/>
密&nbsp;&nbsp;&nbsp; 码:<html:text property="user.userPassword" name="userForm" size="6"></html:text><br>
<html:submit onclick="onsub('willAdd')">用户注册</html:submit>
<html:submit onclick="onsub('doLogin')" style="border-width:1px;">登&nbsp;&nbsp;&nbsp;陆</html:submit><br>
  <img alt="" src="images/login.gif">
</html:form>问题描述:当我点“登陆”的时候调用了userAction的doLogin()方法
但是点“用户注册”时 他报如下异常------->
     
               

解决方案 »

  1.   


    2009-02-18 10:37:57Servlet.service() for servlet jsp threw exception
    javax.servlet.jsp.JspException: Cannot retrieve mapping for action /
    at org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:759)
    at org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:443)
    at org.apache.jsp.WEB_002dINF.pai.Register_005fTo_005fKnown_jsp._jspx_meth_html_form_0(Register_005fTo_005fKnown_jsp.java:143)
    at org.apache.jsp.WEB_002dINF.pai.Register_005fTo_005fKnown_jsp._jspx_meth_html_html_0(Register_005fTo_005fKnown_jsp.java:117)
    at org.apache.jsp.WEB_002dINF.pai.Register_005fTo_005fKnown_jsp._jspService(Register_005fTo_005fKnown_jsp.java:70)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    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.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
    at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
    at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
    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:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    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(Unknown Source)
    2009-02-18 10:37:57Servlet.service() for servlet action threw exception
    javax.servlet.jsp.JspException: Cannot retrieve mapping for action /
    at org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:759)
    at org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:443)
    at org.apache.jsp.WEB_002dINF.pai.Register_005fTo_005fKnown_jsp._jspx_meth_html_form_0(Register_005fTo_005fKnown_jsp.java:143)
    at org.apache.jsp.WEB_002dINF.pai.Register_005fTo_005fKnown_jsp._jspx_meth_html_html_0(Register_005fTo_005fKnown_jsp.java:117)
    at org.apache.jsp.WEB_002dINF.pai.Register_005fTo_005fKnown_jsp._jspService(Register_005fTo_005fKnown_jsp.java:70)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    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.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
    at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
    at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
    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:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    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(Unknown Source)
      

  2.   

    <html:form action="douser.do?method=doLogin"> 
      

  3.   

    是不是struts-config.xml中path 路径和 <html:form> 中action 应该一致啊?  你的前面没有加  "/"
      

  4.   

    够乱
    onsub干了什么啊?你直接用个button然后onclick好了,不要用submit了
    然后传参数调用相应的action方法
    具体参考楼上
      

  5.   

    奇怪你为啥要把jsp放到web-inf下面?
      

  6.   


    楼主的这个代码问题比较多 或许和个人习惯有关系吧!既然楼主继承了DispatchAction 这个类,在前台进行提交时就应该带上需要跳转的方法。还有你页面使用了提交标签,又调用了JS函数,实在比较乱。建议不要使用提交标签了。是用JS函数重写ACTION,然后手动提交。
      

  7.   

    参考:
    http://andyaqu.javaeye.com/blog/125273
      

  8.   

    WEB.XML里面默认.DO配置的话:
    <html:form action="douser?method=doLogin"> 
      

  9.   

    <script type="text/javascript"> 
    function onsub(op) 

    var operate=document.getElementById("operate"); 
    operate.value=op; 
    } </script> 
    hidden只有name属性  没有id属性
      

  10.   

    1.查看配置文件是否正确,注意路径的写法,名称的匹配。
    2.查看JSP页面form引用的action name是否正确 
    3.查看struts-config是否加载到struts.xml中,
      

  11.   

    <action
      attribute="userForm"
      name="userForm"
      parameter="doLogin" /*这儿是不是有问题*/
      path="/douser"
      type="com.edu.actions.UserAction">
      <forward name="toRegister" path="/WEB-INF/pai/Register_To_Known.jsp" />
      <forward name="index" path="/WEB-INF/pai/index.jsp"></forward>
      </action>