www.pudn.com > SSPP.rar > LoginAction.java


/* 
 * Generated by MyEclipse Struts 
 * Template path: templates/java/JavaClass.vtl 
 */ 
package edu.neu.sspp.struts.action; 
 
import java.util.List; 
 
import javax.servlet.http.Cookie; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 
 
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; 
import org.apache.struts.action.ActionRedirect; 
 
import edu.neu.sspp.SSPPLogger; 
import edu.neu.sspp.hibernate.HibernateSessionFactory; 
import edu.neu.sspp.hibernate.TAdmin; 
import edu.neu.sspp.hibernate.TAdminDAO; 
import edu.neu.sspp.hibernate.TTeacher; 
import edu.neu.sspp.hibernate.TTeacherDAO; 
import edu.neu.sspp.hibernate.TUser; 
import edu.neu.sspp.hibernate.TUserDAO; 
import edu.neu.sspp.struts.form.LoginForm; 
 
/**  
 * MyEclipse Struts 
 * Creation date: 06-05-2000 
 *  
 * XDoclet definition: 
 * @struts.action path="/login" name="loginForm" input="/login.jsp" scope="request" validate="true" 
 * @struts.action-forward name="failure" path="/login.html" 
 * @struts.action-forward name="success" path="/success.html" 
 */ 
public class LoginAction extends Action { 
	/* 
	 * Generated Methods 
	 */ 
 
	/**  
	 * Method execute 
	 * @param mapping 
	 * @param form 
	 * @param request 
	 * @param response 
	 * @return ActionForward 
	 */ 
	public ActionForward execute(ActionMapping mapping, ActionForm form, 
			HttpServletRequest request, HttpServletResponse response) { 
		LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub 
		 
		TAdminDAO adminDAO = new TAdminDAO(); 
		List list = adminDAO.findByName(loginForm.getName()); 
		if(!list.isEmpty()) { 
			TAdmin admin = (TAdmin)list.get(0); 
			if(admin != null && admin.getPassword().equals(loginForm.getPassword())) { 
				HttpSession httpSession = request.getSession(); 
				//用于判断用户身份,尽量不要在session范围内保存对象 
				//不在session中保存teacher对象以减小内存开销(但是加大访问数据库的负担,是否合算?) 
				httpSession.setAttribute("login", "admin"); 
				//用于按ID进行查询 
				httpSession.setAttribute("id", admin.getAdminUid()); 
				 
				response.addCookie(new Cookie("name", admin.getName())); 
 
				HibernateSessionFactory.closeSession(); 
				 
				SSPPLogger.logInfo(admin.getName() + " 登陆成功(管理员)" + " IP:" + request.getRemoteAddr()); 
				 
				return new ActionRedirect("admin_page/admin.html"); 
			} 
		} 
		 
		TTeacherDAO teacherDAO = new TTeacherDAO(); 
		list = teacherDAO.findByName(loginForm.getName()); 
		if(!list.isEmpty()) { 
			TTeacher teacher = (TTeacher)list.get(0); 
			if(teacher != null && teacher.getPassword().equals(loginForm.getPassword())) { 
				HttpSession httpSession = request.getSession(); 
 
				httpSession.setAttribute("login", "teacher"); 
				httpSession.setAttribute("id", teacher.getTeaUid()); 
				//在cookies中保存,减小服务器负担 
				response.addCookie(new Cookie("name", teacher.getName())); 
				request.setAttribute("name", teacher.getRealName()); 
				 
				HibernateSessionFactory.closeSession(); 
				 
				SSPPLogger.logInfo(teacher.getName() + " 登陆成功(教师)" + " IP:" + request.getRemoteAddr()); 
				 
				return mapping.findForward("login_success"); 
			} 
		} 
		 
		TUserDAO userDAO = new TUserDAO(); 
		list = userDAO.findByUserName(loginForm.getName()); 
		if(!list.isEmpty()) { 
			TUser user = (TUser)list.get(0); 
			if(user != null && user.getPassword().equals(loginForm.getPassword())) { 
				HttpSession httpSession = request.getSession(); 
				 
				httpSession.setAttribute("login", "user"); 
				httpSession.setAttribute("id", user.getUserUid()); 
				//同上 
				response.addCookie(new Cookie("name", user.getUserName())); 
				request.setAttribute("name", user.getNick()); 
				 
				HibernateSessionFactory.closeSession(); 
				 
				SSPPLogger.logInfo(user.getUserName() + " 登陆成功" + " IP:" + request.getRemoteAddr()); 
				 
				return mapping.findForward("login_success"); 
			} 
		} 
		 
		HibernateSessionFactory.closeSession(); 
		 
		ActionMessages errors = new ActionMessages(); 
		errors.add("failure", new ActionMessage("error.login.password.wrong")); 
		saveErrors(request,errors); 
		 
		SSPPLogger.logInfo(loginForm.getName() + " 登陆失败" + " IP:" + request.getRemoteAddr()); 
		 
		loginForm.setName(""); 
		loginForm.setPassword(""); 
 
		return new ActionForward(mapping.getInput()); 
	} 
}