ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Servlet-JSP MVC06 (1) - Session을 이용한 로그인 처리
    Web/Servlet-JSP 2023. 6. 24. 09:05

     

    출처:https://velog.io/@ssssujini99/%EC%9B%B9-Session-%EA%B8%B0%EB%B0%98-%EC%9D%B8%EC%A6%9D

    - Sesstion을 이용하여 로그인 처리를 구현해보자.

    - 먼저 로그인을 위한 화면을 간단하게 만들어보자

    <div class="container">
      <h2>회원관리 시스템</h2>
      <div class="panel panel-default">
        <div class="panel-heading">
       
       <c:if test="${sessionScope.userId==null || sessionScope.userId==''}">
        	<form class="form-inline" action="${ctx}/memberLogin.do" method="post">
      <div class="form-group">
        <label for="user_id">ID:</label>
        <input type="text" class="form-control" id="user_id" name="user_id">
      </div>
      <div class="form-group">
        <label for="pwd">Password:</label>
        <input type="password" class="form-control" id="password" name="password">
      </div>
      <button type="submit" class="btn btn-default" onclick="return check()">로그인</button>
    </form>
    </c:if>
    	<c:if test="${sessionScope.userId!=null && sessionScope.userId!=''}">
        	${sessionScope.userName}님 환영합니다.
         <button type="button" class="btn btn-warning" onclick="logout()">로그아웃</button>
        </c:if>
        </div>

    -로그인 구현 

     

    1 유효성 check

    <button type="submit" class="btn btn-default" onclick="return check()">로그인</button>

    로그인 버튼을 누르면, 먼저 유효성을 검사하도록 check()함수를 넣었다.

    return값이 true일때만 submit이 정상 작동할 것이다.

    function check(){
     if($("#user_id").val() ==''){
       alert("아이디를 입력하세요");
       return false;	
     }
     if($("#passward").val()==''){
      alert("비밀번호를 입력하세요");
       return false;	
     }
    return true;
    }

    check()함수는 위와 같이 간단하게 아이디와 비밀번호를 검사하도록 구현했다.

    *#은 html에 태그 속성 중 id값을 가져올 때 사용한다.

     

    2 로그인 처리 controller 만들기 

    public String requestHandler(//...) throws //...{
    String ctx = request.getContextPath();
    //요청받기
     String user_id = request.getParameter("user_id");
     String pass = request.getParameter("password");
     
     //요청 담기 
     MemberVO vo = new MemberVO();
     vo.setID(user_id);
     vo.setPass(pass);
     
     //DB에 등록된 id,pass와 일치하는지 검사 DB에 정보와 일치하면 회원명 return
     MemberDAO dao = new MemberDAO();
     String user_name = dao.memberLogin(vo);
     
     if(user_name !=null && !"".equals(user_name)){
            //로그인 성공 
        request.getSession().setAttribute("user_id",user_id);
        request.getSession().setAttribute("userName",user_name);
       
     }else{
          request.getSession().setAttribute("user_id","");
          request.getSession().setAttribute("userName","");
          request.getSession().setAttribute("msg","사용자 정보가 올바르지 않습니다.");
     
     }
    
    return "redirect:"+ctx+"/memberList.do";
    
    }

    memberList.jsp에서 넘어온 아이디와 비밀번호를 DB에 저장된 아이디 및 비밀번호와 비교하여

    일치하면, 사용자 이름을 return 하도록 하였다. 

    - 로그인에 성공하면 session에 id 및 user이름을 저장하고

    - 실패시에 빈문자열과 msg를 저장해두었다.

     

    3 로그인 처리 DB메소드 만들기

    public String memberLogin(MemberVO vo) {
    	   SqlSession session = sqlSessionFactory.openSession();
    	  String user_name = session.selectOne("memberLogin", vo);
    	  session.close();
    	  return user_name;
       }

    mybatis를 이용해 간단하게 만들 수 있다.  select name from member where (id,pass) in ((#{id},#{pass})); 로 검사했다.

     

    4 로그인 실패시 실패  메시지를 띄우기 

    $(document).ready(function(){
     <c:if test="${!empty msg}">
     alert("${msg}");
     <c:remove var="msg" scope="session"/>
    </c:if>
    })

    제이쿼리 문법을 사용하여 문서가 준비될 때(memberList.jsp가 호출될 때) session에 msg를 검사하여 

    - msg가 빈 msg가 아니라면, 경고문을 띄우고, session에서 msg를 지우도록 하였다.

     

    *1회 인증처리 후에 msg를 지워주지 않으면, msg가 계속 session에 남아서 페이지 호출 시마다 경고문이 나온다.

     

     

    참고자료:

    나프2탄 (인프런) 박매일:

    https://www.inflearn.com/course/%EB%82%98%ED%94%84-mvc-2

     

    [NarP Series] MVC 프레임워크는 내 손에 [나프2탄] - 인프런 | 강의

    본 과정은 WEB MVC 프레임워크가 무엇이고 WEB MVC 프레임워크가 어떻게 변형이 되면서 Spring WEB MVC 프레임워크로 넘어가는지 TPC(생각하고-표현하고-코딩하고) 기법을 통해 단계적으로 학습하고 이

    www.inflearn.com

     

Designed by Tistory.