当前位置: 代码迷 >> Java Web开发 >> 请问struts1x的dispatchAction有关问题
  详细解决方案

请问struts1x的dispatchAction有关问题

热度:9476   发布时间:2016-04-10 22:52:31.0
请教struts1x的dispatchAction问题
用struts1做开发,配置如下:
web。xml:
 
  <!-- 配置struts -->
  <servlet>
   <servlet-name>struts</servlet-name>
   <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
   <init-param>
   <param-name>config</param-name>
   <param-value>/WEB-INF/struts-config.xml</param-value>
   </init-param>
   <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
   <servlet-name>struts</servlet-name>
   <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  
 </web-app>


struts-config.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<form-beans>
<form-bean name="employeeForm" type="com.cdtax.web.forms.EmployeeForm" />
</form-beans>
<action-mappings>
<action path="/login" parameter="method" name="employeeForm" type="com.cdtax.web.action.LoginAction">
<forward name="ok" path="/WEB-INF/mainFrame.jsp" />
<forward name="err" path="/WEB-INF/login.jsp" />
</action>
</action-mappings>
</struts-config>
login。jsp:
<body>
<h1>管理员登陆</h1>
<form action="/myssh/login.do?method=login" method="POST">
id:<input type="text" name="id" /><br>
pw:<input type="password" name="pwd" /><br>
<input type="hidden" name="method" value="login" />
<input type="submit" value="登陆" />
<input type="reset" value="重置" />
</form>
  </body>


form:
package com.cdtax.web.forms;

import org.apache.struts.action.ActionForm;

public class EmployeeForm extends ActionForm
{
private String id;
private String pwd;

        public String getId()
{
return id;
}
public void setId(String id)
{
System.out.println("form id" + id);
this.id = id;
}
public String getPwd()
{
return pwd;
}
public void setPwd(String pwd)
{
this.pwd = pwd;
}

}


action:
package com.cdtax.web.action;

import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
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.cdtax.web.forms.EmployeeForm;

public class LoginAction extends DispatchAction
{

//响应登录请求
public ActionForward login(ActionMapping arg0, ActionForm arg1,
ServletRequest arg2, ServletResponse arg3) throws Exception
{
System.out.println("--------------");
//取出表单,我们先打通练习,我们简单验证
EmployeeForm employeeForm = (EmployeeForm)arg1;

System.out.println("id=" + employeeForm.getId() + "  pwd=" + employeeForm.getPwd());

if("123".equals(employeeForm.getPwd()))
{
return arg0.findForward("ok");
}
else
{
return arg0.findForward("err");
}
}

//响应注销请求
public ActionForward logout(ActionMapping arg0, ActionForm arg1,
ServletRequest arg2, ServletResponse arg3) throws Exception
{
// TODO Auto-generated method stub
return super.execute(arg0, arg1, arg2, arg3);
}

}

为什么部署后一执行就报错,总是

 Servlet.service() for servlet struts threw exception
java.lang.NoSuchMethodException: Action[/login] does not contain specified method (check logs)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:261)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)