当前位置:编程学习 > JAVA >>

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 --------------------编程问答-------------------- 试了,不对··· --------------------编程问答--------------------
引用 1 楼 q331464542 的回复:
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看不出有什么问题。

--------------------编程问答--------------------
引用楼主 zl0722 的回复:
<form action="/login" method="post">(说我这一行有错误)

找不到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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,