您所在的位置: 首页>>读书频道>>设计开发>>Java系列>>

12.7.5 控制器组件AdminLoginAction.java

http://book.51cto.com  2008-05-15 11:28  计磊/李里/周伟  人民邮电出版社  我要评论(0)
  • 摘要:《精通J2EE--Eclipse、Struts、Hibernate及Spring整合应用案例》第12章为您介绍的是公告管理系统(Eclipse+Struts),本节主要讲述的是控制器组件AdminLoginAction.java。
  • 标签:J2EE  Eclipse  控制器  Struts  Hibernate  系统  Spring  案例

12.7.5  控制器组件AdminLoginAction.java

adminlogin.do请求将访问控制器组件AdminLoginAction类。该类的作用是获取模型组件AdminLoginForm类传递过来的数据,并经过查询数据库进行身份验证,操作完成之后,将请求转发到配置文件定义好的页面中去。以下是该类的源代码。

package nm.admin.action;
import java.util.Vector;
import nm.Constants;
import nm.DB;
import nm.User;
import nm.admin.form.AdminLoginForm;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.sql.DataSource;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
public final class AdminLoginAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
//获取来自AdminLoginForm对象的数据
AdminLoginForm adminLoginForm = (AdminLoginForm) form;
String username = adminLoginForm.getUsername();
String password = adminLoginForm.getPassword();
            //使用struts-config.xml配置文件的数据源信息生成数据库操作类DB的对象
ServletContext context = servlet.getServletContext();
DataSource dataSource = (DataSource) context
.getAttribute(Constants.DATASOURCE_KEY);
DB db = new DB(dataSource);
            //新建需要用到的对象,并为其初始化。其中表示转发页面的pageForward被
初始化为ToErrorPage。
HttpSession session = request.getSession(true);
ActionMessages errors = new ActionMessages();
String PageForward = "ToErrorPage";
            //只有当用户名与密码相匹配,而且用户身份为管理员时才能进入系统
if (User.checkUser(db, username, password)
& "admin".equals(User.getUserGrade(db, username))) {
//使用User.search方法,从数据库中查到登录用户的信息存入session中
User user = User.search(db, username, password);
session.setAttribute(Constants.LOGIN_USER_KEY, user);
//使用User.searchUsers方法,从数据库中查到所有用户的信息包含到Vector中
//将此Vector存入session中
Vector userVector = User.searchUsers(db);
session.setAttribute(Constants.USER_LIST_KEY, userVector);
//转发页面设置为ToNoticeList
PageForward = "ToUserList";
} else {
//如果输入信息不符合登入系统的条件,则在ActionMessage对象中封装消息
//(由error.admin.accessDeny所代表),并保存到request范围内,
//此时表示转发页面的pageForward对象仍然为初始值ToErrorPage
errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
"error.admin.accessDeny"));
if (!errors.isEmpty()) {
saveErrors(request, errors);
}
}
            //关闭数据库连接,并根据pageForward值将请求转发到相应路径
db.close();
return mapping.findForward(PageForward);
}
}
【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节
系统应用日志分析管理
网络管理系统如何支撑ITSM
企业Web安全威胁在线评估系统
赛门铁克诺顿误杀Windows系统文件 导致百万系统崩溃
Windows系统加固专题
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有