Struts 1 login application example error

半腔热情 提交于 2019-12-24 20:36:23

问题


I am new to Struts and tried to execute Login Form. But it's not getting executed after the default constructor in the ACTION class.


LoginForm.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;
}


}

LoginAction.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);    
    }

}
}

Login.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>

success.jsp

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

failure.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>

I have included struts-html.tld file in WEB-INF/tld folder. After login with username and password It's not redirected to either success.jsp or failure.jsp page


回答1:


It is because you have passed ServletRequest and ServletResponse in execute method in action class instead of HttpServletRequest and HttpServlet Response.. Use Like Following

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

and import these things:

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

Hope it will work..



来源:https://stackoverflow.com/questions/18269343/struts-1-login-application-example-error

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!