⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loginservlet.java

📁 真正的、彻底的、完全面向对象软件系统。有兴趣的加我好友
💻 JAVA
字号:
package com.jdon.jivejdon.presentation;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.jdon.security.web.CookieUtil;
import com.jdon.util.Debug;
import com.jdon.util.RequestUtil;
import com.jdon.util.StringUtil;

public class LoginServlet extends HttpServlet {
	private final static String module = LoginServlet.class.getName();

	public final static String form_login_page_param = "login";

	public final static String form_error_page_param = "login_error";

	public final static String logout_param = "logout";
	

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws IOException, ServletException {
		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		Debug.logVerbose("[JdonFramework]enter LoginServlet", module);
		initCharacterEncoding(request, response);
		String username = request.getParameter("j_username");
		String password = request.getParameter("j_password");
		if ((username != null) && (password != null)) {
			Debug.logVerbose("[JdonFramework] username and password is not null", module);
			if (request.getParameter("rememberMe") != null) {
				saveCookie(username, password, request, response);
			}
		} else {
			Debug.logVerbose("[JdonFramework] check cookie", module);
			if (request.getParameterMap().containsKey(logout_param)) {// /login?logout
				logout(request, response);
			} else {// call  /login
				username = CookieUtil.getUsername(request);
				password = CookieUtil.getPassword(request);
				Debug.logVerbose("[JdonFramework]get username from cookie username=" + username, module);
				if ((username == null) || (password == null)) {// no cookie, push login.jsp					
					forwardLogin(request, response);
				}
			}
		}
		String route = request.getContextPath() + "/j_security_check?j_username=" + username
				+ "&j_password=" + password;
		Debug.logVerbose("[JdonFramework] forward " + route, module);
		response.sendRedirect(route);
				
	}
	
	private void initCharacterEncoding(HttpServletRequest request, HttpServletResponse response){
		if (request.getCharacterEncoding() != null){
			response.setCharacterEncoding(request.getCharacterEncoding());
		}else{
			response.setCharacterEncoding("UTF-8");
		}
	}
	
	private void saveCookie(String username , String password, HttpServletRequest request, HttpServletResponse response){
		Debug.logVerbose("[JdonFramework] save cookie", module);
		RequestUtil.setCookie(response, "rememberMe", "true", "/");
		RequestUtil.setCookie(response, "username", StringUtil
				.encodeString(username), "/");
		RequestUtil.setCookie(response, "password", StringUtil
				.encodeString(password), "/");
	}
	
	private void logout(HttpServletRequest request, HttpServletResponse response){
		Debug.logVerbose("[JdonFramework]logout, session.invalidate ",	module);
		try {
			request.getSession().invalidate();
			CookieUtil.deleteAllCookie(request, response);
			String logoutUrl = this.getInitParameter(logout_param);
			Debug.logVerbose("[JdonFramework]delete all cookie, push logout jsp=" + logoutUrl, module);
			//request.getRequestDispatcher(logoutUrl).forward(request, response);
			response.sendRedirect(response.encodeRedirectURL(request.getContextPath() + logoutUrl));
		} catch (IOException e) {
			Debug.logError(e, module);
		}
	}
	
	private void forwardLogin(HttpServletRequest request, HttpServletResponse response){
		String loginUrl = this.getInitParameter(form_login_page_param);
		Debug.logVerbose("[JdonFramework] not found cookie= push login jsp=" + loginUrl, module);
		try {
			response.sendRedirect(response.encodeRedirectURL(request.getContextPath() + loginUrl));
		} catch (IOException e) {
			Debug.logError(e, module);
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -