# SQL.xml
사전에 만든 패키지 PKG_CRYPTO를 통하여 password변수를 암호화한다.
밑에서 결과를 보면 password에서 입력된 값은 asdfasdf이지만
암호화를 거쳐 다음값으로 변했음을 알 수 있다.
1
2
3
4
5
6
7
|
<!-- 로그인 세션 -->
<select id="login" resultType="memberVO" parameterType="memberVO">
SELECT *
FROM MEMBER
WHERE MEMBERID = #{memberid}
AND PASSWORD = PKG_CRYPTO.ENCRYPT(#{password})
</select>
|
cs |
# login.jsp
EL의 내장 객체 스코프의 한 종류인
${sessionScope}를 통하여 세션의 속성값을 가져와 홈페이지에 적용시킨다.
※ 스코프의 종류
Scope | 설명 |
${pageScope.속성명} | page영역의 Attribute에 바인딩 된 객체를 참조하는 Map객체 |
${requestScope.속성명} | request 영역의 Attribute에 바인딩 된 객체를 참조하는 Map객체 |
${sessionScope.속성명} | session영역의 Attribute에 바인딩 된 객체를 참조하는 Map객체 |
${applicationScope.속성명} | appliccation영역의 Attribute에 바인딩 된 객체를 참조하는 Map객체 |
# 로그인을 하지 않았을시 (sessionScope != null )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<c:if test="${sessionScope.member==null}">
<span class="mr-2 d-none d-lg-inline text-gray-600 small">로그인을 해야합니다.</span>
<img class="img-profile rounded-circle" id="logimg"
src="/resources/sbadmin2/img/undraw_profile.svg">
</c:if>
<c:if test="${sessionScope.member==null}">
<div class="dropdown-menu dropdown-menu-right shadow animated--grow-in"
aria-labelledby="userDropdown">
<button class="dropdown-item" id="login" data-toggle="modal" data-target="#logoutModal">
<i class="fas fa-sign-out-alt fa-sm fa-fw mr-2 text-gray-400"></i>
LogIn
</button>
</div>
</c:if>
|
cs |
# 로그인을 하였을때 (sessionScope == null)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<c:if test="${sessionScope.member!=null}">
<span class="mr-2 d-none d-lg-inline text-gray-600 small">
${sessionScope.member.name}</span>
<img class="img-profile rounded-circle"
src="${sessionScope.member.memberCertPic}">
</c:if>
<c:if test="${sessionScope.member!=null}">
<div class="dropdown-menu dropdown-menu-right shadow animated--grow-in"
aria-labelledby="userDropdown">
<a class="dropdown-item" href="#">
<i class="fas fa-user fa-sm fa-fw mr-2 text-gray-400"></i>
Profile
</a>
<a class="dropdown-item" href="#">
<i class="fas fa-cogs fa-sm fa-fw mr-2 text-gray-400"></i>
Settings
</a>
<a class="dropdown-item" href="#">
<i class="fas fa-list fa-sm fa-fw mr-2 text-gray-400"></i>
Activity Log
</a>
<div class="dropdown-divider"></div>
<button type="submit" class="dropdown-item" data-toggle="modal" data-target="#logoutModal">
<i class="fas fa-sign-out-alt fa-sm fa-fw mr-2 text-gray-400"></i>
Logout
</button>
</div>
</c:if>
|
cs |
# login.jsp
Modal을 사용하여
로그아웃 확인창을 띄운다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<form:form method="post" action="/lprod/logout">
<div class="modal fade" id="logoutModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">로그아웃을 하시겠습니까?</h5>
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">하단의 로그아웃을 누르시면 로그아웃이 실행됩니다.</div>
<div class="modal-footer">
<button class="btn btn-secondary" type="button" data-dismiss="modal">취소</button>
<button class="btn btn-primary" type="submit">로그아웃</button>
</div>
</div>
</div>
</div>
</form:form>
|
cs |
# Controller.java
로그인
Get을 통해서 login화면 출력 후,
Post 방식을 통하여 기능을 구현함. 아이디와 비밀번호를 받아와야하기에 매개변수는
MemberVO로 잡아주고 그 값을 받아와서 결과를 받아오는 것도 MemberVO이기때문에 MemberVO로 한다.
로그아웃
Post방식을 통해서 form형태에서 Controller에서 받아와 session.invalidate() (초기화)를 통하여
session값을 종료시킨다.
/login
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
@RequestMapping(value="/login",method=RequestMethod.GET)
public String login(MemberVO memberVO, Model model) {
return "lprod/login";
}
@PostMapping(value="/login")
//@RequestParam으로 원하는 값만 받아오기
// public String loginPost(HttpServletRequest request,@RequestParam String memberid, @RequestParam String password){
//Map으로 값 받아오기
// public String loginPost(HttpServletRequest request, Map<String, String>map){
//뷰안의 form:form에서 modelAttribute="memberVO"인 값을 받아올때
public String loginPost(HttpServletRequest request, @ModelAttribute("memberVO")MemberVO memberVO){
// logger.info("id: "+memberid);
// logger.info("password: "+password);
HttpSession session = request.getSession();
//세션을 가져와 새 세션값 생성
MemberVO member = this.lprodservice.login(memberVO);
logger.info("member의 값 :"+member);
//성공시
if(member!=null) {
session.setAttribute("member", member);
return "lprod/list";
//실패시
}else {
return "lprod/login";
}
}
|
cs |
/logout
1
2
3
4
5
6
7
8
9
10
11
|
//로그아웃
@PostMapping(value="/logout")
public String logout(HttpServletRequest request) {
HttpSession session = request.getSession();
//세션을 모두 초기화시킴
session.invalidate();
return "redirect:/lprod/list";
}
|
cs |
'Coding story > go Spring,JSP' 카테고리의 다른 글
구글 차트 ($.ajax를 활용한 차트 출력) (0) | 2022.02.17 |
---|---|
다음 주소창을 이용한 주소 입력/datepicker를 통한 날짜입력 (0) | 2022.02.17 |
스프링 시큐리티 (Spring Security) - 1 (0) | 2022.02.14 |
#Spring(4) - JDBC연동 준비 (0) | 2022.02.03 |
인터넷 서점 만들어보기(JSP/Java)- 3.신간 추가 기능 / 관리자 로그인 (0) | 2022.02.03 |
최근댓글