1 15 16 package com.jdon.security.web; 17 18 import java.io.IOException ; 19 20 import javax.servlet.ServletException ; 21 import javax.servlet.http.HttpServlet ; 22 import javax.servlet.http.HttpServletRequest ; 23 import javax.servlet.http.HttpServletResponse ; 24 25 import com.jdon.util.Debug; 26 import com.jdon.util.RequestUtil; 27 import com.jdon.util.StringUtil; 28 29 54 public class LoginServlet extends HttpServlet { 55 private final static String module = LoginServlet.class.getName(); 56 57 public final static String form_login_page_param = "login"; 58 59 public final static String form_error_page_param = "login_error"; 60 61 public final static String logout_param = "logout"; 62 63 64 public void doGet(HttpServletRequest request, HttpServletResponse response) 65 throws IOException , ServletException { 66 doPost(request, response); 67 } 68 69 public void doPost(HttpServletRequest request, HttpServletResponse response) 70 throws ServletException , IOException { 71 Debug.logVerbose("[JdonFramework]enter LoginServlet" , module); 72 initCharacterEncoding(request, response); 73 String username = request.getParameter("j_username"); 74 String password = request.getParameter("j_password"); 75 if ((username != null) && (password != null)) { 76 Debug.logVerbose("[JdonFramework] username and password is not null", module); 77 if (request.getParameter("rememberMe") != null) { 78 saveCookie(username, password, request, response); 79 } 80 } else { 81 Debug.logVerbose("[JdonFramework] check cookie", module); 82 if (request.getParameterMap().containsKey(logout_param)) { logout(request, response); 84 } else { username = CookieUtil.getUsername(request); 86 password = CookieUtil.getPassword(request); 87 Debug.logVerbose("[JdonFramework]get username from cookie username=" + username, module); 88 if ((username == null) || (password == null)) { forwardLogin(request, response); 90 } 91 } 92 } 93 String route = request.getContextPath() 94 + "/j_security_check?j_username=" + username + "&j_password=" 95 + password; 96 Debug.logVerbose("[JdonFramework] forward " + route, module); 97 response.sendRedirect(response.encodeRedirectURL(route)); 98 } 99 100 private void initCharacterEncoding(HttpServletRequest request, HttpServletResponse response){ 101 if (request.getCharacterEncoding() != null){ 102 response.setCharacterEncoding(request.getCharacterEncoding()); 103 }else{ 104 response.setCharacterEncoding("UTF-8"); 105 } 106 } 107 108 private void saveCookie(String username , String password, HttpServletRequest request, HttpServletResponse response){ 109 Debug.logVerbose("[JdonFramework] save cookie", module); 110 RequestUtil.setCookie(response, "rememberMe", "true", "/"); 111 RequestUtil.setCookie(response, "username", StringUtil 112 .encodeString(username), "/"); 113 RequestUtil.setCookie(response, "password", StringUtil 114 .encodeString(password), "/"); 115 } 116 117 private void logout(HttpServletRequest request, HttpServletResponse response){ 118 Debug.logVerbose("[JdonFramework]logout, session.invalidate ", module); 119 try { 120 request.getSession().invalidate(); 121 CookieUtil.deleteAllCookie(request, response); 122 String logoutUrl = this.getInitParameter(logout_param); 123 Debug.logVerbose("[JdonFramework]delete all cookie, push logout jsp=" + logoutUrl, module); 124 response.sendRedirect(response.encodeRedirectURL(request.getContextPath() + logoutUrl)); 126 } catch (IOException e) { 127 Debug.logError(e, module); 128 } 129 } 130 131 private void forwardLogin(HttpServletRequest request, HttpServletResponse response){ 132 String loginUrl = this.getInitParameter(form_login_page_param); 133 Debug.logVerbose("[JdonFramework] not found cookie= push login jsp=" + loginUrl, module); 134 try { 135 response.sendRedirect(response.encodeRedirectURL(request.getContextPath() + loginUrl)); 136 } catch (IOException e) { 137 Debug.logError(e, module); 138 } 139 } 140 141 } 142 | Popular Tags |