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"/>
密 码:<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;">登 陆</html:submit><br>
<img alt="" src="images/login.gif">
</html:form>问题描述:当我点“登陆”的时候调用了userAction的doLogin()方法
但是点“用户注册”时 他报如下异常------->
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"/>
密 码:<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;">登 陆</html:submit><br>
<img alt="" src="images/login.gif">
</html:form>问题描述:当我点“登陆”的时候调用了userAction的doLogin()方法
但是点“用户注册”时 他报如下异常------->
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)
onsub干了什么啊?你直接用个button然后onclick好了,不要用submit了
然后传参数调用相应的action方法
具体参考楼上
楼主的这个代码问题比较多 或许和个人习惯有关系吧!既然楼主继承了DispatchAction 这个类,在前台进行提交时就应该带上需要跳转的方法。还有你页面使用了提交标签,又调用了JS函数,实在比较乱。建议不要使用提交标签了。是用JS函数重写ACTION,然后手动提交。
http://andyaqu.javaeye.com/blog/125273
<html:form action="douser?method=doLogin">
function onsub(op)
{
var operate=document.getElementById("operate");
operate.value=op;
} </script>
hidden只有name属性 没有id属性
2.查看JSP页面form引用的action name是否正确
3.查看struts-config是否加载到struts.xml中,
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>