package org.fireflow.demo.security; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.fireflow.demo.ou_management.dao.IDemoUserDao; import org.fireflow.demo.ou_management.entity.DemoUser; import org.fireflow.engine.context.RuntimeContext; import org.springframework.transaction.support.TransactionTemplate; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; /** * Servlet implementation class LoginServlet */ public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected WebApplicationContext springCtx = null; protected RuntimeContext fireContext = null; protected TransactionTemplate tramsactionTemplate = null; protected IDemoUserDao demoUserDao = null; public static final String CURRENT_USER_SESSION_KEY = "CURRENT_USER_SESSION_KEY"; /** * @see HttpServlet#HttpServlet() */ public LoginServlet() { super(); // TODO Auto-generated constructor stub } public void init(ServletConfig config) throws ServletException { super.init(config); springCtx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext()); fireContext = (RuntimeContext)springCtx.getBean(RuntimeContext.Fireflow_Runtime_Context_Name); tramsactionTemplate = (TransactionTemplate)springCtx.getBean("demoTransactionTemplate"); demoUserDao = (IDemoUserDao)springCtx.getBean("demoUserDao"); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String actionType=request.getParameter("actionType"); if (actionType!=null && actionType.trim().equals("LOGIN")){ login(request,response); }else{ logout(request,response); } } protected void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String userName = request.getParameter("userName"); String password = request.getParameter("password"); DemoUser currentUser = demoUserDao.authenticateUser(userName, password); if (currentUser!=null){ request.getSession().setAttribute(CURRENT_USER_SESSION_KEY, currentUser); //导航到index页面 RequestDispatcher dispatcher = request.getRequestDispatcher("/index.jsp"); dispatcher.forward(request, response); }else{ HttpSession session =request.getSession(false); if (session!=null){ session.invalidate(); } request.setAttribute("ERROR_MESSAGE", "用户名或者密码不正确"); //导航到登录页面 RequestDispatcher dispatcher = request.getRequestDispatcher("/login.jsp"); dispatcher.forward(request, response); } } protected void logout(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(false); if (session!=null){ session.invalidate(); } response.sendRedirect(request.getContextPath()+"/login.jsp"); } }