티스토리 뷰





반응형

웹 사이트를 이용하다 보면 아이디 저장과 같은 옵션을 자주 접했을 것이다. 오늘이 이 아이디 저장을 구현해볼 계획이다.


제일 먼저 위와 같은 jsp를 구성중 일부를 가져오면 아래와같이 구성을 했다. 체크박스는 체크가 되어 있을 경우 서블릿에서 on으로 값을 넘기고 체크가 되어있지 않을 경우에는 null값을 넘기게된다. 그렇기 때문에 이점을 가지고 서블릿에 로직을 구현할 것이다.

1
2
<input type="checkbox" id="checkbox" class="keepLogin" name="saveId">
<label class="keepLogin">아이디 저장</label>
cs


보통 아이디 저장은 로그인이 성공 했을 경우 그 정보를 계속 저장한다. 그렇기 때문에 로그인 로직에서 로그인 했을 경우 그 로직을 구현한다. 가장먼저 saveId로 체크 여부를 확인 하고 체크 되어 있다면 new Cookie에 key : value 형식으로 넣어준다. id는 위에서 파라미터로 받은 id를 넣어주는것이다. 그리고 이 쿠키를 브라우저에 얼만큼 저장할 건지 정하는데 단위는 1초 다.  

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
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String id = request.getParameter("id");
        String pw = request.getParameter("password");
        String saveId = request.getParameter("saveId");
        
        //id와 pw로 사용자 정보를 가져옴
        Member m = new MemberService().memberLogin(id,pw);
        
        if(m==null) {
            //로그인 실패 or 없는 회원
            System.out.println("로그인 실패");
            request.setAttribute("msg""!아이디와 비밀번호를 다시 확인세요");
            request.getRequestDispatcher("/views/login_myPage/login.jsp").forward(request, response);
        }else{
            //로그인 성공
            System.out.println("로그인 성공");
            //아이디 저장 여부를 보고 쿠키로 아이디값 저장
            if(saveId!=null) {
                Cookie c = new Cookie("saveId",id);
                //쿠키값 저장 시간을 지정함, 숫자당 1초로 계산
                c.setMaxAge(60*60*24*7); //7일간 저장
                response.addCookie(c);
            }else {
                Cookie c = new Cookie("saveId",id);
                c.setMaxAge(0);
                response.addCookie(c);
            }
            
            //로그인되면 정보를 세션값에 넣고 브라우저가 닫힐 때까지 유지
            HttpSession session = request.getSession();
            session.setAttribute("loginMember", m);
            //회원정보는 세션에 넣었으니 Redirect로 데이터 없이 화면 전환
            response.sendRedirect(request.getContextPath()+"/");
        }    
    }
cs


다시 로그인 페이지에서는 getCookies()라는 함수로 배열형태로 받는다. 그리고 값을 저장할 변수를 아래 만들어주고 for문을 돌려서 key값인 name이 saveId일 경우 해당 value값을 저장 하고 아래로 내려와 input태그에 넣어주는데 삼항연산으로 cookieVal이 " "이 아니면 cookieVal을 넣고 아니면 " "을 넣는다는 의미이다. 아래또한 같은 맥락으로 체크박스에 checked 옵션을 넣어줄 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%
    String msg = (String)request.getAttribute("msg");
    Cookie[] c = request.getCookies();
    String cookieVal="";
    if(c!=null){
        for(Cookie i:c){
            if(i.getName().equals("saveId")){
                cookieVal=i.getValue();
            }
        }
    }
    
%>
 
<input type="text" name="id" value="<%=cookieVal !="" ? cookieVal : "" %>" placeholder="아이디">
<input type="checkbox" class="keepLogin" name="saveId" <%=cookieVal!=""?"checked" : ""%> >
<label class="keepLogin">아이디 저장
 
 
cs


반응형
댓글
반응형
최근에 달린 댓글
글 보관함
Total
Today
Yesterday
최근에 올라온 글
«   2024/03   »
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