struts中的DispatchAction实例,思路:
源代码地址:http://download.csdn.net/detail/tingzhiyi/9597532
login.jsp表单:
<span style="font-size:18px;"><body>
<h1>用户登录</h1>
<form action="/dispatchtest/loginAndLogout.do?flag=userLogin" method="post">
用户名:<input type="text" name="username"/>
密 码:<input type="text" name="password"/>
<input type="submit" value="提 交"/>
</form>
</body></span>
<span style="font-size:18px;">public class UserForm extends ActionForm {
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;
}
}</span>
DispatchAction子类:
public class LoginAndLogoutAction extends DispatchAction {
/*
* Generated Methods
*/
//使用分派Action往往需要自己重新命名函数
//userLogin用于响应登录请求
public ActionForward userLogin(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserForm userForm = (UserForm) form;// TODO Auto-generated method stub
if("123".equals(userForm.getPassword()))
return mapping.findForward("loginok");
else
return mapping.findForward("goerr");
}
//userLogout用于响应登出请求
public ActionForward userLogout(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
//把用户的所有session全部清空
request.getSession().invalidate();
//清空一个session
//request.getSession().removeAttribute(name);
return mapping.findForward("goLogin");
}
//userLogout2用于响应登出请求
public ActionForward userLogout2(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
//把用户的所有session全部清空
request.getSession().invalidate();
//清空一个session
//request.getSession().removeAttribute(name);
return mapping.findForward("goLogin");
}
}
struts-config.xml文件:
其中用flag来标志要使用哪个函数
<?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="userForm" type="com.dispatch.web.struts.form.UserForm" />
</form-beans>
<global-exceptions />
<global-forwards >
<forward name="goerr" path="/WEB-INF/err.jsp" />
</global-forwards>
<action-mappings >
<!-- 用于将来区分用户的请求类型 -->
<action
attribute="userForm"
input="/WEB-INF/ok.jsp"
name="userForm"
parameter="flag"
path="/loginAndLogout"
scope="request"
type="com.dispatch.struts.action.LoginAndLogoutAction"
validate="false">
<set-property property="cancellable" value="false" />
<!-- 如果一个forward卸载了action中间,表示局部跳转 -->
<forward name="loginok" path="/WEB-INF/ok.jsp" />
<forward name="goLogin" path="/WEB-INF/login.jsp" />
</action>
</action-mappings>
<message-resources parameter="com.dispatch.struts.ApplicationResources" />
</struts-config>
ok.jspd代码:
<span style="font-size:18px;"> <body>
<h1>登陆成功</h1>
<a href="/dispatchtest/loginAndLogout.do?flag=userLogout">退出系统1</a>
<a href="/dispatchtest/loginAndLogout.do?flag=userLogout2">退出系统2</a>
</body></span>