[ JSP / HTML ] 로그인 구조 이해 (세션 활용) - 페이지에서 로그인 하기
2024. 3. 19. 19:06ㆍ· FULL-STACK/└ JSP (Java Server Page)
환경 : Spring Tool Suite4
[ 로그인 및 로그아웃 기본 구조 이해 ]
참고 : https://ggingggang05.tistory.com/121
[ 로그인 및 로그아웃을 페이지에서 해보기 ]
- MemberController.java
@Controller
@RequestMapping("/member")
public class MemberController {
@Autowired
public MemberDao memberDao;
//회원가입
@GetMapping("/join")
public String join() {
return "/WEB-INF/views/member/join.jsp";
}
@PostMapping("/join")
public String join(@ModelAttribute MemberDto memberDto) {
memberDao.insert(memberDto);
return "redirect:joinFinish";
}
@RequestMapping("/joinFinish")
public String joinFinish() {
return "/WEB-INF/views/member/joinFinish.jsp";
}
//실제 로그인
//- 아이디와 비밀번호 검사를 통과해야만 세션에 데이터를 추가한다
//- 사용자가 입력한 아이디를 추가한다
@GetMapping("/login")
public String login() {
return "/WEB-INF/views/member/login.jsp";
}
@PostMapping("/login")
public String login(@ModelAttribute MemberDto inputDto, HttpSession session) {
//사용자가 입력한 아이디로 회원정보를 조회한다
MemberDto findDto = memberDao.selectOne(inputDto.getMemberId());
//로그인 가능 여부를 판정
boolean isValid = findDto != null && inputDto.getMemberPw().equals(findDto.getMemberPw());
//결과에 따라 다른 처리
if(isValid) {
//세션에 데이터 추가
session.setAttribute("loginId", findDto.getMemberId());
return "redirect:/";
} else { //로그인 실패
return "redirect:login?error";
}
}
//실제 로그아웃
// - 로그인 때 검사 했으므로 추가 검사는 불필요
// - 로그인 때 저장한 세션의 데이터만 삭제 처리
@RequestMapping("/logout")
public String logout(HttpSession session) {
session.removeAttribute("loginId");
return "redirect:/";
}
}
- header.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>나의 홈페이지</title>
</head>
<body>
<div>
<%-- 템플릿 페이지는 무조건 절대경로로 써야한다 --%>
<a href="/">홈으로</a>
<a href="/pocketmon/list">포켓몬스터 시스템</a>
<a href="/emp/list">사원관리 시스템</a>
<a href="/menu/list">메뉴관리 시스템</a>
</div>
<%-- 로그인 여부에 따라 달라지는 메뉴 --%>
<div>
<c:choose>
<c:when test="${sessionScope.loginId != null}">
<a href="/member/logout">로그아웃</a>
<a href="">내정보</a>
</c:when>
<c:otherwise>
<a href="/member/join">회원가입</a>
<a href="/member/login">로그인</a>
</c:otherwise>
</c:choose>
</div>
<%-- 이해를 위한 정보 --%>
<div>
<%--
<c:choose>
<c:when test="${sessionScope.loginId != null}">
<a href="/member/testLogin">테스트로그인</a>
</c:when>
<c:otherwise>
<a href="/member/testLogout">테스트로그아웃</a>
</c:otherwise>
</c:choose>
--%>
login = ${sessionScope.loginId != null} ,
loginId = ${sessionScope.loginId}
</div>
<hr>
(+) <c:choose> 태그를 사용하여 로그인 정보가 세션에 있으면 '로그아웃', '내정보' 메뉴가 보이고, 로그인 정보가 세션에 있지 않으면 '회원가입', '로그인' 메뉴가 보이게끔 설정
(+) <%-- 이해를 위한 정보 --%>
세션에 어떤 정보가 있는지 이해를 하기 위해 사용하는 코드이다. (사용하지 않을 땐 주석처리 혹은 코드 제거)
- login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<jsp:include page="/WEB-INF/views/template/header.jsp"></jsp:include>
<h1>로그인</h1>
<c:if test="${param.error != null }">
<h3 style="color:red">로그인 정보가 일치하지 않습니다</h3>
</c:if>
<form action="login" method="post">
아이디 <input name="memberId" type="text" required> <br><br>
비밀번호 <input name="memberPw" type="password" required> <br><br>
<button>로그인</button>
</form>
<jsp:include page="/WEB-INF/views/template/footer.jsp"></jsp:include>
- footer.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
</div>
<hr>
<div>
<h2>페이지의 하단 영역 입니다.</h2>
</div>
</body>
</html>
- 출력 결과
개인 공부 기록용입니다:)
728x90
'· FULL-STACK > └ JSP (Java Server Page)' 카테고리의 다른 글
[ JSP / Java ] 마이페이지 구현 (0) | 2024.03.20 |
---|---|
[ JSP / HTML ] 로그인 구조 이해 (세션 활용) (1) | 2024.03.17 |
[ JSP / JSTL ] JSTL(JSP Standard Tag Library) 라이브러리 (0) | 2024.03.08 |
[ JSP ] UTF-8로 기본 설정 해두는 방법 및 설정 구문 이해 (0) | 2024.02.19 |
[ JSP / Spring ] JSP 사용 설정 및 간단한 페이지 출력 (0) | 2024.02.18 |