[JSP] 18. 로그인화면 만들기 (Session 이용)

(16) 세션을 통한 로그인 화면만들기

서블릿에서 세션사용 (HttpSession session = request.getSession();)


LoginVO.java  

- 문자형의 id, pw getter/setter 생성자


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
 
 
public class LoginVO {
    private String id;
    private String pw;
    
 
    public LoginVO() {
        super();
    }
 
    public String getId() {
        return id;
    }
 
    public void setId(String id) {
        this.id = id;
    }
 
    public String getPw() {
        return pw;
    }
 
    public void setPw(String pw) {
        this.pw = pw;
    }
    
    
    
}
 



SessionServlet.java (서블릿)


- id와 pw파라미터를 저장해서, LoginVO객체에 저장한다.

- SessionTest2.java로 객체공유를 한다. (HTTPSession사용)


- 객체공유를 통해 받은 값들로 출력화면에 아이디는 ""입니다. 

비번은 ""입니다. 표시한다.



★추가적으로 

로그인 이후, 다음 로그인에서 동일한 아이디값으로 로그인을 할 경우 => 이미 로그인하셨습니다. 로그아웃하시겠습니까?를 출력한다.


1. 클라이언트 이전 요청 있을떄, 세션id 존재하면 세션id-세션정보 객체생성한다.

2. 클라이언트 이전 요청 없을때, 세션id 존재않으면 empty세션 객체생성한다.


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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
public class SessionServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
    
        //출력 (실행시, 브라우저를 미리 닫아줄 것)
        response.setContentType("text/html; charset=utf-8");
        PrintWriter out = response.getWriter(); //빼고
        
        //http:////?id=test&pw=1234의 두 파라미터를 만들어서
        String id=request.getParameter("id");
        String pw=request.getParameter("pw");
        
        //같은 패키지안의 LoginVO클래스 객체 생성를 만들어서 그 안에 저장
        // vo 객체: 세션 저장
        LoginVO vo = new LoginVO();
        vo.setId(id);
        vo.setPw(pw);
        
        //1. 클라이언트 이전 요청 있을떄, 세션id 존재하면 세션id-세션정보 객체생성
        //2. 클라이언트 이전 요청 없을때, 세션id 존재않으면 empty세션 객체생성
 
        HttpSession session = request.getSession();
        
        boolean condition=    session.getAttribute("sessionvo")!=null;
            if(condition==true){
            LoginVO v= (LoginVO)session.getAttribute("sessionvo");
            if(v.getId()!=null && v.getId().equals(request.getParameter("id"))){
            out.println("<h1>이미 로그인하셨습니다. 로그아웃하겟습니까?</h1>");
            }
            else//로그인 id 이전과 다를때
                session.setAttribute("sessionvo", vo);//세션에 넣고
                LoginVO login = (LoginVO)session.getAttribute("sessionvo");
                out.println("<h1>입력한 아이디는"+ login.getId()
                            + " 비밀번호는"+ login.getPw()+ "입니다</h1>");
            }
        }
            else{
        session.setAttribute("sessionvo", vo);//세션에 넣고
        LoginVO login = (LoginVO)session.getAttribute("sessionvo");
        out.println("<h1>입력한 아이디는"+ login.getId()
                    + " 비밀번호는"+ login.getPw()+ "입니다</h1>");
        }
    }
}
 
 



SessionTest2.java(서블릿)


- 객체공유를 통해 값을 받아온다. (단, 입력된 값이 있는지? 라는 조건식안에서)

- 출력되는 id값이 java또는 spring라면 

내정보보기 

회원 정보 수정

1.암호변경

2.주문확인

3.배송확인이 나오도록 출력,


  아이디가 틀리다면, "인증받은 아이디가 아닙니다"를 출력한다.


 로그인을 안했다면, "로그인부터 하세요"를 출력한다.



sessionservlet => sessiontest2 실행방법

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
public class SessionTest2 extends HttpServlet {
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        //이미로그인 //(로그인아이디가 java 또는 spring일 떄만 아래항목을 보이도록 설정)
        response.setContentType("text/html; charset=utf-8");
        PrintWriter out = response.getWriter(); 
        
        /*
         * http:,,,?id=test&pw=1234
         * ==>두번쨰 id가 최초id(세션저장id) 동일하다면
         * 이미 로그인하셨습니다. 출력하고
         * 세션에 저장하지않는다.
         * */
        
        HttpSession session = request.getSession();
        if(session.getAttribute("sessionvo")!=null){
            LoginVO vo= (LoginVO)session.getAttribute("sessionvo");
 
//            if(first!=null){
//                if(first.equals(vo.getId())){
//                    out.println("이미 로그인하셨습니다");
//                }
//            }
 
            if(vo.getId().equals("java"|| vo.getId().equals("spring")){
                out.println("<h1>내 정보보기</h1>");
                out.println("<ol>회원 정보 수정</ol>");
                out.println("<li>암호변경</li>");
                out.println("<li>주문내역</li>");
                out.println("<li>베송확인</li>");
            }
            else
                out.println("<h1>+"+vo.getId()+"님은 인증받은 아이디가 아닙니다.</h1>");
            }
        }
        else//로그인 한 적 없음
            out.println("<h1> 로그인부터 하세요");
        }
    
        
        //내정보보기 
        //1.회원정보수정
        //2.암호변경
        //3.주문내역
        //4.배송현황
    
    }
}
 



'WEB 기초 > Jsp' 카테고리의 다른 글

[JSP] 게시판  (0) 2018.04.24
[JSP] 17. 방문자 문제 (Cookie 이용)  (0) 2018.04.23
[JSP] 16. 세션(Session) 총 정리  (0) 2018.04.23
[JSP] 15. 쿠키(cookie) 총정리  (0) 2018.04.23
[JSP] 14. 도서구매 정보입력창 문제  (0) 2018.04.23