[JSP & Servlet] 로그인 (feat. 세션 & 쿠키) - controller / service

 

📌로그인 컨트롤러

LoginServlet.java

package controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import service.LoginService;
import vo.Member;

/**
 * Servlet implementation class LoginServlet
 */
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
    @Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		Cookie[] cookieArray = request.getCookies();
		String id = "";
		String passwd = "";

		if(cookieArray != null){
			
			for (int i = 0; i < cookieArray.length; i++) {
				if(cookieArray[i].getName().equals("id")){
					id = cookieArray[i].getValue();
				}
				else if(cookieArray[i].getName().equals("passwd")){
					passwd = cookieArray[i].getValue();
				}
			}

			LoginService loginService = new LoginService();
			Member loginMember = loginService.getLoginMember(id,passwd);

			if(loginMember != null){
				RequestDispatcher dispatcher = request.getRequestDispatcher("loginSuccess.jsp");
				request.setAttribute("loginMember", loginMember);
				dispatcher.forward(request, response);
			}
			else{
				RequestDispatcher dispatcher = request.getRequestDispatcher("loginForm.html");
				dispatcher.forward(request, response);
			}
		}
	}
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		String id = request.getParameter("id");
		String passwd = request.getParameter("passwd");
		String useCookie = request.getParameter("useCookie");
		LoginService loginService = new LoginService();
		
		Member loginMember = loginService.getLoginMember(id,passwd);
		
		

		if(loginMember != null){
			
			if(useCookie != null){ //체크박스를 체크하면 "on"문자열이 전송되어 온다.아니면 null 값 전송
				
				//아이디와 비밀번호를 쿠키 정보로 저장하는 부분
				Cookie idCookie = new Cookie("id", id);
				//쿠키를 생성하면 기본 생존기간이 -1이다.
				//브라우저가 실행중일 때는 쿠키가 생존하지만 브라우저를 닫으면
				//쿠키가 사라짐
				idCookie.setMaxAge(60 * 60 * 24);//단위는 초임
				Cookie passwdCookie = new Cookie("passwd", passwd);
				//쿠키를 생성하면 기본 생존기간이 -1이다.
				//브라우저가 실행중일 때는 쿠키가 생존하지만 브라우저를 닫으면
				//쿠키가 사라짐
				passwdCookie.setMaxAge(60 * 60 * 24);//단위는 초임

				//응답에 쿠키 추가
				response.addCookie(idCookie);
				response.addCookie(passwdCookie);

			}
			
			RequestDispatcher dispatcher = request.getRequestDispatcher("loginSuccess.jsp");
			request.setAttribute("loginMember", loginMember);
			dispatcher.forward(request, response);

		}
		else{
			
			RequestDispatcher dispatcher = request.getRequestDispatcher("loginFail.jsp");
			dispatcher.forward(request, response);
			
		}
	}

}

doGet 메소드
이 메소드는 사용자가 "loginForm.html" 페이지에서 로그인 요청을 한 것이 아닌 index.jsp 페이지를 실행한 후 <jsp:forward/> 액션 태그에 의해서 요청을 했기 때문에 요청이 GET방식으로 넘어와 doGet 메소드가 실행되는 것이다.

 

 

 

 

 

 

📌로그인 비즈니스 로직 처리 파일

LoginService.java

package service;

import static db.JdbcUtil.*;
import java.sql.Connection;
import dao.LoginDAO;
import vo.Member;
public class LoginService {

	public Member getLoginMember(String id, String passwd) {
		// TODO Auto-generated method stub
		LoginDAO loginDAO = LoginDAO.getInstance();
		Connection con = getConnection();
		loginDAO.setConnection(con);
		Member loginMember = loginDAO.selectLoginMember(id,passwd);
		close(con);
		return loginMember;
	}
	
}