0

我是 Struts 的新手,并尝试执行登录表单。但它没有在 ACTION 类中的默认构造函数之后执行。


登录表单.java

package struts.login.action;

import org.apache.struts.action.ActionForm;

@SuppressWarnings("serial")
public class LoginForm extends ActionForm {

public LoginForm() {

}

private String username;
private String password;
public String getUsername() {
    return username;
}
public void setUsername(String username) {
    this.username = username;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}


}

登录操作.java

package struts.login.action;

import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class LoginAction extends Action {

private final static String SUCCESS = "success";
private final static String FAILURE = "failure";
//private final static String FAILURE = "failure";

public LoginAction() {
    System.out.println("default constructor of Login Action");
}

@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
        ServletRequest request, ServletResponse response) throws Exception     {

    LoginForm loginForm = (LoginForm) form;
    if(loginForm.getUsername().equals(loginForm.getPassword())){
        return mapping.findForward(SUCCESS);    
    }
    else{
        return mapping.findForward(FAILURE);    
    }

}
}

登录.jsp

<%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html"%>
<html>
<head>
<title>Login Page</title>
</head>
<body>
<div style="color:red">

</div>
<html:form action="/Login" method="get">
    User Name :<html:text property="username"/><br>
    Password  :<html:password property="password"/>
    <html:submit value="Login Here" />
</html:form>
</body>
</html>

成功.jsp

<html>
<head>
<title>Insert title here</title>
</head>
<body>
Successfully logged in!
</body>
</html>

失败.jsp

<html>
<head>
<title>Insert title here</title>
</head>
<body>
login failed please try again!
</body>
</html>

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="loginForm" type="struts.login.action.LoginForm">
    </form-bean>
</form-beans>

<action-mappings>
    <action path="/Login" name="loginForm"             type="struts.login.action.LoginAction" >
    <forward name="success" path="/success.jsp"></forward>
    <forward name="failure" path= "/failure.jsp"></forward>
    </action>


</action-mappings>

</struts-config>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<!-- Standard ActionServlet Configuration -->
<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>application</param-name>
        <param-value>ApplicationResources</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>1</load-on-startup>
</servlet>

<!-- Standard ActionServlet Mapping -->
<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

<!-- Struts Tag Library Descriptors -->
<jsp-config>
<taglib>
    <taglib-uri>/WEB-INF/tld/struts-html.tld</taglib-uri>
    <taglib-location>/WEB-INF/tld/struts-html.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>

我在 WEB-INF/tld 文件夹中包含了 struts-html.tld 文件。使用用户名和密码登录后,它不会重定向到 success.jsp 或 failure.jsp 页面

4

1 回答 1

0

这是因为您在 action 类的 execute 方法中传递了 ServletRequest 和 ServletResponse 而不是 HttpServletRequest 和 HttpServlet Response.. 使用如下

public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) throws Exception     {
}

并导入这些东西:

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

希望它会工作..

于 2016-06-29T06:46:04.943 回答