[요약]
- 로그인이 가능토록 구현(HttpSession으로 자바에서 화면단으로 전송)
2024.07.15 - [분류 전체보기] - Web Application(2) / 화면에서 전송한 데이터 자바로 받기
Web Application(2) / 화면에서 전송한 데이터 자바로 받기
2024.07.15 - [분류 전체보기] - Web Application(1) / 화면에서 자바로 데이터 전송(1. Form Data) / 요청 url 매핑 방식 Web Application(1) / 화면에서 자바로 데이터 전송(1. Form Data) / 요청 url 매핑 방식[과제] 1. Na
maverick11471.tistory.com
-
[화면단 / login.jsp]
<script>
$(() => {
// model, session, request에 담겨있는 데이터 javascript에서 꺼내서 사용하기
const loginFailMsg = '${loginFailMsg}';
if(loginFailMsg === 'idNotExist') {
alert("존재하지 않는 아이디입니다.");
} else if(loginFailMsg === 'wrongPassword') {
alert("잘못된 비밀번호입니다.");
}
});
</script>
[mapper]
- 값이 username, password 2개이기 때문에 뒤에 service에서 loginMember가 2개가 된다.
<select id="login" parameterType="member" resultType="member">
SELECT ID
, USERNAME
, PASSWORD
, EMAIL
, NICKNAME
, TEL
FROM MEMBER
WHERE USERNAME = #{username}
AND PASSWORD = #{password}
</select>
[Dao]
public MemberDto login(MemberDto memberDto) {
return mybatis.selectOne("MemberDao.login", memberDto);
}
[service + Impl]
MemberDto login(MemberDto memberDto);
@Override
public MemberDto login(MemberDto memberDto) {
int usernameCheck = memberDao.usernameCheck(memberDto.getUsername());
if(usernameCheck == 0)
throw new RuntimeException("idNotExist");
MemberDto loginMember = memberDao.login(memberDto);
// loginMember는 id, password 2개이지만 어차피 위에서 usernameCheck를 했기 때문에
// wrongPassword만 thorw로 던져주면 된다
if(loginMember == null)
throw new RuntimeException("wrongPassword");
return loginMember;
}
[controller] : 로그인과 로그아웃
@PostMapping("/login.do")
public String login(MemberDto memberDto, Model model, HttpSession session) {
try {
MemberDto loginMember = memberService.login(memberDto);
loginMember.setPassword("");
session.setAttribute("loginMember", loginMember);
return "redirect:/";
} catch (Exception e) {
model.addAttribute("loginFailMsg", e.getMessage());
return "member/login";
}
}
@GetMapping("/logout.do")
public String logout(HttpSession session) {
// 세션에 있는 내용 모두 초기화
session.invalidate();
return "redirect:/member/login.do";
}
[header.jsp 수정]
<%@ taglib prefix="c" uri="jakarta.tags.core" %>
<c:choose>
// loginMember 값이 null일때 우측 위 표시 할 부분을 설정
<c:when test="${loginMember eq null}">
<li class="nav-item">
<a class="nav-link" href="/member/login.do">로그인</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/member/join.do">회원가입</a>
</li>
</c:when>
// null이 아닐 때 우측 위 부분 설정
<c:otherwise>
<li class="nav-item">
// 닉네임이 나오도록
<a class="nav-link">${loginMember.nickname}</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/member/logout.do">로그아웃</a>
</li>
</c:otherwise>
</c:choose>
'백엔드 > Spring Framework' 카테고리의 다른 글
게시판 구현 / 4. 게시판 디테일(글 수정, 삭제) (0) | 2024.07.17 |
---|---|
게시판 구현 / 3. 게시판 글 등록 및 카테고리 (0) | 2024.07.17 |
게시판 구현 / 1. 회원가입 / JsonObject 만들기 (0) | 2024.07.16 |
Ajax(Asynchronous Javascript And Xml) (0) | 2024.07.16 |
el 표기법과 JSTL (0) | 2024.07.16 |