struts1.2找不到action
新手,望大虾指教~login.jsp:
<form action="/login" method="post">(说我这一行有错误)
登陆 报名系统:<p>
证件号:<input type="text" name="licence"><br>
密码: <input type="password" name="password"><p>
<input type="submit" value="提交">
<input type="reset" value="重置">
</form>
loginAction:
package my.struts.action;
import hibernate.Login;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import my.struts.form.LoginForm;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import dao.userDao;
public class LoginAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;
Login u=new Login();
u.set证件号(loginForm.get证件号());
u.set密码(loginForm.get密码());
userDao dao=new userDao();
boolean b=dao.validate(u);
if(b)
{
return mapping.findForward("upload");
}
ActionErrors errors=new ActionErrors();
errors.add("证件号",new ActionMessage("证件号.isinvalidate"));
this.saveErrors(request, errors);
return mapping.findForward("register");
}
}
struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources />
<form-beans >
<form-bean name="loginForm" type="my.struts.form.LoginForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="loginForm"
input="/form/main.jsp"
name="loginForm"
path="/login"
scope="request"
type="my.struts.action.LoginAction">
<forward name="upload.jsp" path="/form/upload.jsp" />
<forward name="register.jsp" path="/form/register.jsp" />
</action>
</action-mappings>
<message-resources parameter="my.struts.ApplicationResources" />
</struts-config>
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>action</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>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
--------------------编程问答-------------------- login.do --------------------编程问答-------------------- 试了,不对··· --------------------编程问答--------------------
+ login.do --------------------编程问答-------------------- login.do login.action都不对呀 --------------------编程问答-------------------- 不要那个 / 哦。 action="login.do" 还不行的话得查查struts的配置文件了。。 --------------------编程问答-------------------- 喵呜,还是不行···我的配置文件,怎么看也看不出来问题··· --------------------编程问答-------------------- 重建工程试一下 --------------------编程问答-------------------- 楼主去看看你的web配置是否正确。 若果web没问题 然后把那个action配置删掉。 看他报什么错。 如果有报错 根据报错来做会比较容易了。 --------------------编程问答-------------------- action="login.do" 这样应该是对的,可能还有其他地方配置错误,把“attribute="loginForm"”去掉试下 --------------------编程问答-------------------- 具体是什么错误:错误栈是找不到Action吗?
在url里直接带参数调用这个action试试。
不行的话就把struts.xml改改,删除了重写,web.xml看不出有什么问题。
--------------------编程问答--------------------
找不到Action,这里可能是有问题。
1、如果login.jsp在web应用根目录(web/webcontent/webroot等)下,则应该写作
<form action="login.do" method="post">
2、很可能login.jsp不在web应用根目录下。不管在不在,这样写应该可以的:
<form action="<%=getServletContext().getContextPath() %>/login.do" method="post">
3、或者改用struts自己的form标签
另外,你的LoginForm应该以licence和password作为属性,而不应该以“证件号”和“密码”作为属性名,到时候用户的输入会传不进来。 --------------------编程问答-------------------- action="/login.do",另外attribute="loginForm"改成name=“loginForm” --------------------编程问答-------------------- 貌似没问题~ --------------------编程问答-------------------- <form action="/login" method="post">
你的这个form并不是<html:form>,所以你这里要写完整访问路径<form action="<% String path = request.getContextPath(); %>/login.do"></form>
如果你用<html:form>那么你才可以写<html:form action="/login"></html:form> --------------------编程问答-------------------- 纠正一下,<form action="<%request.getContextPath(); %>/login.do"></form>
--------------------编程问答-------------------- --------------------编程问答-------------------- 是不是框架的问题,你在ACTION里面加上你的工程名试试
补充:Java , Eclipse