-
[ JSP ] 로그인하기(HttpSession), 로그인 활용(cart), 절대주소와 상대주소PROGRAMMING/Web 2022. 5. 31. 19:02
하루입니다.
HttpSession, Session 객체 프로세스

- 클라이언트가 북 스토어 페이지로 들어온다 (home.jsp를 요청한다)
- home.jsp로 요청메세지가 가고, 요청객체 응답객체가 만들어진다.
- home_jsp.java 객체가 만들어진다. 그 안의 _jspService()가 실행되고, 그 안의 getSession()도 실행된다.
- 요청메세지 안에 SessionId가 존재하지 않으므로, getSession()은 HttpSession객체를 생성한다.
- pageContext.getSession()으로 세션 객체를 session변수에 집어넣는다.
- 응답메세지 안에 HttpSession객체의 Id를 포함시켜서 보낸다.
- 같은 클라이언트가 registerform.jsp를 요청했을 때, 이미 SessionId가 존재하므로 그것을 요청메세지의 바디부에 넣어서 보낸다.
- getSession( )은 생성된 HttpSession 중 요청메세지의 sessionId와 일치하는 id를 가진 세션객체를 검색한다.
- 참고로 위 과정은 톰캣에서 알아서 해 준다. 이걸 이용해서 로그인 하는 것.
로그인이란?
- 서버에 클라이언트의 정보를 담아 클라이언트가 자기 정보를 다시 전달할 필요 없게 하는 것이다. sessionId를 사용한다. sessionid는 처음에는 생성되고, 후에는 전달된다.
별도의 참고사항
- 데이터 조회(select)는 보여주기
예시 : 직원 월급 조회
- 데이터 삭제, 저장, 변경(delete, insert, delete)는 리다이렉트 하기 (재요청url을 응답으로 보내기)
예시 : 찜한 item 삭제, 구매 item 갯수 올리기

위와 같은 내용. 차이점은 a가 들어오면 a의 전용 HttpSession객체를 사용한다는 것이고, b가 들어오면 b의 전용 HttpSession객체를 사용한다는 것이다.
그럼 이 프로세스를 어디에 이용할 수 있을까?
sessionId 사용하기 (cart편)

- 홍길동 씨와 김유신 씨의 장바구니가 각각 있다. 로그인 후 장바구니를 클릭한다.
- 홍길동이라고 가정했을 시, 홍길동의 sessionId가 요청메세지 -> 요청객체에 담길 것.
- cart_jsp.java객체는 _jspService()과 그 안의 getSession()을 실행시킨다. 로그인한 상태라 sessionId가 있으므로 해당하는 세션 객체를 획득해 -> User형의 user변수에 집어넣고 -> 그 user에서 getNo()를 실행해 얻은 No를 int userNo에 넣고 -> 해당 userNo를 카트 아이템 얻어주는 메소드( )에 넣는데 -> 장바구니는 여러 개의 아이템이 나오니까 List형인데<CartItem들이 담긴> cartItem 변수에 넣는다.
엥 잠시만요
1. LOGINED_USER가 먼가요
session.setAttribute("LOGINED_USER", user);- 이게 머냐면 login.jsp에서 getParameter를 사용해 유저의 email과 pwd를 얻었고, 그 값을 getUserByEmail(email)을 사용해 user에 담았고, 회원이고/탈퇴 안 했고/비밀번호가 일치하는 사람이라면 session.setAttribute를 사용해 LOGINED_USER라는 name으로 user라는 value를 담도록 함.
User user = (User) session.getAttribute("LOGINED_USER");- 이렇게 사용합니다.
- 왜 (User)가 붙냐면 형변환해준거임
절대주소와 상대주소

절대주소표기법
- 이동할 URL에서 https://localhost를 제외하고 나머지 경로를 전부 표기하는 방법.
- 다양한 페이지에 공통으로 들어가는 부분은 절대경로로 적는다.
- 항상 앞이 /로 시작한다.
상대주소표기법
- 현재 주소창의 URL 경로를 기준경로로 하여 주소를 표기하는 방법.
- 앞쪽 jsp 페이지 이름 바뀐다고 해도 일일히 바꿔줄 필요 없다.
- 현재 주소: http://localhost/book-store/cart/list.jsp
- 기준 경로: http://localhost/book-store/cart/ (마지막 / 뒤는 뺀다)
- 이동할 경로 : http://localhost/book-store/cart/delete.jsp
- 정확한 링크 : <"a href="delete.jsp"> (뒤에 붙여넣는다)
- 현재 주소: http://localhost/book-store/cart/list.jsp
- 기준 경로: http://localhost/book-store/cart/ (마지막 / 뒤는 뺀다)
- 이동할 경로 : http://localhost/book-store/book/detail.jsp
- 정확한 링크 : <"../a href="delete.jsp"> (상위 경로는 ../ 정확히는 상위 폴더를 뜻한다.)
잘못된 정보에 대한 지적은 언제나 환영입니다.
복습 끝!
'PROGRAMMING > Web' 카테고리의 다른 글
게시판 만들기 과정도, jsp의 예외처리, 파일 업로드 다운로드 (0) 2022.06.07 [ JSP ] 로그인하기, 장바구니 담기 해야 할 것 (0) 2022.06.01 [ JSP ] 서블릿(Servlet)의 주요 객체 (0) 2022.05.30 [ JSP ] 클라이언트의 요청방식 (0) 2022.05.26 [ JSP ] JSP 구성요소, 내장객체 (0) 2022.05.26