package onlyfun.caterpillar;必须在struts-config.xml中定义Action对象使用哪一个ActionForm对象:
import javax.servlet.http.*;
import org.apache.struts.action.*;
public class UserForm extends ActionForm {
private String username;
private String password;
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public void reset(ActionMapping mapping,
HttpServletRequest request) {
username = null;
password = null;
}
}
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean
name="userForm"
type="onlyfun.caterpillar.UserForm"/>
</form-beans>
<action-mappings>
<action
path="/login"
type="onlyfun.caterpillar.LoginAction"
name="userForm">
<forward
name="helloUser"
path="/WEB-INF/pages/hello.jsp"/>
<forward
name="loginFail"
path="/WEB-INF/pages/fail.jsp"/>
</action>
</action-mappings>
</struts-config>
package onlyfun.caterpillar;ActionForm被作为参数传递至execute()方法,在验证使用者的名称与密码无误后,查找helloUser的 ActionForward对象并传回,这会使得RequestProcessor将请求转发至hello.jsp:
import javax.servlet.http.*;
import org.apache.struts.action.*;
public class LoginAction extends Action {
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
String username = ((UserForm) form).getUsername();
String password = ((UserForm) form).getPassword();
request.setAttribute("username", username);
if(username.equals("caterpillar") &&
password.equals("1234")) {
return mapping.findForward("helloUser");
}
return mapping.findForward("loginFail");
}
}
<html>如果验证失败,则查找loginFail的ActionForward对象并传回,也就是fail.jsp:
<head>
<title>Hello, ${username} !</title>
</head>
<body>
<H1>Hello, ${username} !</H1>
<H1>This is your secret gift!!</H1>
</body>
</html>
<html>
<head>
<title>Sorry!</title>
</head>
<body>
<H1>Sorry, ${username} !</H1>
<H1>You must provide correct login information!!</H1>
<p>
<a href='/strutsapp/html/form.htm'>Login</a>
</body>
</html>
<html>ActionForm在Struts中是属于View组件的一部份,它是对象化的窗体,窗体的参数会自动设定给 ActionForm,无法对应的就加以忽略,在ActionForm中您可以填入窗体值,作一些适当的值转换,进行基本的数据验证, ActionForm可以作为窗体数据发送至应用程序前的缓冲区,在某些程度上,它是应用程序的防火墙,您可以在ActionForm中避免不正确或不安 全的数据进入应用程序。
<head><title>Login</title></head>
<body>
Please login:<p>
<form name="userForm" action="/strutsapp/login.do" method="post">
username <input type="text" name="username"/><br>
password <input type="password" name="password"/><p>
<input type="submit"/>
</form>
</body>
</html>