반응형
여승철
INTP 개발자
여승철
  • 분류 전체보기 (376)
    • CS (16)
      • 면접 준비 (7)
      • 운영체제 (0)
      • 네트워크 (2)
      • HTTP (6)
      • 스프링(Spring) IoC 컨테이너 (0)
      • 알고리즘 (1)
    • Web (13)
    • AWS (6)
    • Java (43)
    • JSP & Servlet (65)
      • 개념 (42)
      • 실습 (23)
    • Spring Framework (33)
    • Spring Boot (10)
    • Spring Data (22)
      • JPA (14)
      • Query DSL (7)
      • Redis (1)
    • Spring Security (9)
    • Spring Batch (4)
    • MyBatis (10)
    • Front-End (51)
      • JS (27)
      • Vue.js (17)
      • React (5)
      • JQuery (0)
      • d3.js (2)
    • DBMS (24)
      • SQL, RDBMS (16)
      • MongoDB (5)
      • Redis (3)
    • Kafka (3)
    • 리눅스 (Linux) (4)
    • 디자인 패턴 (3)
    • VCS (8)
    • API (0)
    • TOOL (3)
    • Reading Book (28)
      • 이펙티브 자바 (11)
      • Clean Code (10)
      • 1분 설명력 (4)
      • HOW TO 맥킨지 문제해결의 기술 (3)
    • C# (4)
    • NSIS (6)
    • ETC (11)

블로그 메뉴

  • 홈
  • 태그

인기 글

태그

  • 이펙티브 자바
  • ubuntu
  • controller
  • querydsl
  • servlet
  • 맥킨지
  • jsp
  • 환경 세팅
  • JDBC
  • HTTP
  • Dao
  • EC2
  • 디자인 패턴
  • 스트림
  • 게시판
  • Spring Batch
  • JSTL
  • 로그인
  • 회원 관리
  • mybatis

최근 댓글

최근 글

hELLO· Designed By 정상우.
여승철

INTP 개발자

JSP & Servlet/실습

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

2022. 6. 30. 22:01
반응형

 

📌로그인 컨트롤러

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;
	}
	
}
반응형
저작자표시 (새창열림)

'JSP & Servlet > 실습' 카테고리의 다른 글

[JSP & Servlet] 쇼핑몰 (오늘 본 상품 & 장바구니) - controller  (0) 2022.07.01
[JSP & Servlet] 쇼핑몰 (오늘 본 상품 & 장바구니) - 테이블 생성 및 vo(Value Object) + 기본 세팅  (0) 2022.07.01
[JSP & Servlet] 로그인 (feat. 세션 & 쿠키) - View / DAO  (0) 2022.06.30
[JSP & Servlet] 로그인 (feat. 세션 & 쿠키) - 테이블 생성 및 vo(Value Object)  (0) 2022.06.30
[JSP & Servlet] 게시판 만들기 (feat. MySQL) - View  (0) 2022.06.29
    여승철
    여승철

    티스토리툴바