单的应用,它实现与本文开头例子中相同的功能,即用户登陆并显示欢迎信息。
应用中的view由2个简单JSP构成,第一个为登陆页,如下:
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<html:html>
<head></head>
<body bgcolor="white">
<html:errors/>
<html:form action="/ProcessLogin">
<table border="0" width="100%">
<tr>
<td>
Username:
</td>
<td>
<html:text property="username"/>
</td>
</tr>
<tr>
<td>
Password:
</td>
<td>
<html:password property="password"/>
</td>
</tr>
<tr>
<td>
<html:submit/>
</td>
<td>
 
</td>
</tr>
</table>
</html:form>
</body>
</html:html>
这个与不用Struts的例子中的页面非常类似,不同之处仅仅是用Struts <html> tags定义了表单和调用的Action是配置中定义的"/ProcessLogin"。表单提交后相应的ActionForm将被创建,同时相应的action被调用处理该输入。我们还可以看到<html:errors> tag被用到,这个是为了自动显示表单中定义的校验错误信息(下面将提到)。
第二个JSP如下:
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<html:html>
<h1>Welcome <bean:write name="loginForm" property="username" /></h1>
</html:html>
用Struts开发基于MVC的Web应用(7)
时间:2010-07-19
本页简单地显示了一个命名为"loginForm"的ActionForm bean的一个属性(username).
接着是controller层。controller层由ActionForm、Action两个类实现。ActionForm类很简单,主要是对应model(本例中是一个简单的JavaBean对象)。
package com.samjdalton.struts;
import org.apache.struts.action.ActionForm;
public class LoginForm extends ActionForm {
private LoginBean bean;
public LoginForm() {
this.bean=new LoginBean();
}
public LoginForm(LoginBean bean) {
this.bean = bean;
}
public void setUsername(String username) {
bean.setUsername(username);
}
public String getUsername() {
return bean.getUsername();
}
public void setPassword(String password) {
bean.setPassword(password);
}
public String getPassword() {
return bean.getPassword();
}
}
Action类用上面的ActionForm从view获得信息,并且修改model状态。
Action类代码如下:
package com.samjdalton.struts;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
public class LoginAction extends Action {
public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
// check the username
LoginForm form = (LoginForm) actionForm;
if (form.getUsername().equalsIgnoreCase("sam") && form.getPassword().equals("password")) {
// we are in
return actionMapping.findForward(&qu
|