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