# 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

 

입력한 password와 암호화된 값

 


 

# 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

로그아웃 modal

 

 


# 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

 

 

 

  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기