2 분 소요

로그인 구현 하기02

3.Controller처리

-MemberController.java

	// 로그인
	@RequestMapping(value = "/client-login", method = RequestMethod.POST)
	public String loginPost(HttpServletRequest request, MemberVO member) throws Exception {

  System.out.println("login 메소드 진입");
  System.out.println("전달된 데이터:" + member);

HttpServletRequest는 로그인 성공시 session에 회원의 정보를 담기 위해 사용하고 실패시에는 리다이렉트로 된 로그인 페이지에 실패를 담는데 의미를 둔다.

정상적으로 메서드가 요청 되었는지 데이터 확인하기 위해 콘솔창에 출력을 해본다.

	// 로그인
	@RequestMapping(value = "/client-login", method = RequestMethod.POST)
	public String loginPost(HttpServletRequest request, MemberVO member) throws Exception {

		// 세션 초기화하기
		HttpSession session = request.getSession();
		// 두번쨰 변수 선언 - 값을 담을 변수
		MemberVO vo = service.memberLogin(member);

session을 사용하기 위해 session 변수를 선언하고 request.getSession()으로 초기화한다.

서버는 key와 value를 저장하는 Httpsession을 생성하고 session을 저장하고 있는 쿠키를 클라이언트에게 보낸다.

두번째 변수로 MemberVO 타입의 변수 vo를 선언하고 memberservice.java의 memberLogin메서드로 초기화 한다.

인자는 서버로부터 전달 받은 member 변수를 사용한다

memberLogin 메서드를 요청하게 되면 MemberMapper.java를 memberVo 객체를 반환 받아서 변수 VO에 저장되게 된다.

	if (vo == null) {
			// 일치하지 않는 아이디,비밀번호경우
			int result = 0;
			session.setAttribute("result", result); 
			//세션에 결과값을 저장하기

			return "redirect:/client-login";

		}

		// 일치하는 아이디, 비밀번호 경우 - 로그인 성공
		session.setAttribute("member", vo);
		System.out.println("로그인성공");

		// 로그인 id 확인
		System.out.println("id :" + member.getId());

		// 아이디 저장
		session.setAttribute("memberid", vo.getId());
		return "redirect:/client-main";
	}

vo값은 아이디,비밀번호가 존재할 경우 쿼리문에 조회하는 데이터의 값을 담고 있다

로그인이 불일치 할 경우 null이 발생하고 0을 결과값으로 받는다.

로그인이 불일치할경우 다시 로그인을 해야하기 떄문에 리다이렉트 할 페이지를 설정해준다.

로그인이 될 경우 null이 아니기 때문에 session에 vo 변수에 담긴 데이터의 코드를 추가한다.

 

4.View처리

-Login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="../inc/client-header.jsp"%>
<script src="https://code.jquery.com/jquery-3.6.0.slim.js" integrity="sha256-HwWONEZrpuoh951cQD1ov2HUK5zA5DwJ1DNUXaM6FsY=" crossorigin="anonymous"></script> 


태그라이브러리와 자바 스크립트를 사용하기위해 선언을 해준다.


	<form class="card login-form" id="login_form" method="post">

form태그의 id는 login_form이고 method는 post이다

						<div>
							<div class="form-group input-group">
								<label>아이디</label>
								 <input class="form-control id-input"name="id" required>
							</div>
							<div class="form-group input-group">
								<label>비밀번호</label> 
								<input class="form-control" name="pw" type="password" required>
						<c:if test="${result == 0}">
							<div class="mt-3 text-danger">사용자 ID또는 비밀번호를 잘못 입력하셨습니다</div>
						</c:if>
							</div>
						</div>
					

아이디와 비밀번호를 입력해야할 input 태그에 name 속성명을 적어준다 (MemberVO에 선언한 변수와 속성명을 같게 써야한다.)

로그인이 실패하면 경고문구가 뜨게 설정한다. controller에서 넘어온 result값이 0 이면 경고창이 뜨게 한다.

-main.jsp

<div class="user-menu">
									<div class="dropdown-user">
										<ul class="user-menu-list">
											<!-- 로그인 하지 않는 상태 -->
											<c:if test="${member == null}">
												<li><a href="client-login">로그인</a></li>
												<li><a href="client-register">회원가입</a></li>
												<li><a href="client-login">마이페이지</a></li>
											</c:if>
											<!-- 로그인 상태 -->
											<!-- 관리자 로그인 상태  -->
											<c:if test="${member != null}">
												<c:if test="${member.adminchk eq 1}">
													<li><a href="client-logout">로그아웃</a></li>
													<li><a href="admin-main">관리자페이지</a></li>
												</c:if>
												<c:if test="${member.adminchk ne 1}">
													<li><a href="client-logout">로그아웃</a></li>
													<li><a href="client-mypage">마이페이지(${member.id}님)</a></li>
												</c:if>
											</c:if>
										</ul>
									</div>
								</div>

로그인을 할 경우와 로그인을 하지 않을 경우 사용자에게 보여지는 창이 달라야 하기 때문에 main.jsp을 설정한다.

로그인 하지 않을 경우에는 로그인,회원가입,마이페이지창만 보여주게 하며 로그인 할 경우 로그아웃 마이페이지로 이동할 수 있게 설정한다.

관리자계정으로 로그인 할 경우 관리자 페이지로 이동 할 수 있도록 설정한다.

댓글남기기