✨세션
- 세션도 쿠키와 마찬가지로 서버와의 관계를 유지하기 위한 수단이다.
- 쿠키와 달리 클라이언트에서 저장되는 것이 아니라, 서버 상에 객체 형태로 존재한다.
- 서버당 하나의 세션 객체를 가질 수 있다. ( 브라우저 별 서로 다른 세션 사용 가능 )
- 세션 객체는 브라우저 창을 종료하면 삭제된다.
- 세션은 서버에서만 접근이 가능하여 보안이 높고, 저장할 수 있는 데이터에 한계가 없다.
▶ 즉, 사용자에 대한 모든 정보를 세션에 담고 동작해도 상관없다. - 세션은 클라이언트 요청이 발생하면 자동 생성되어 고유한 ID 값을 클라이언트에 넘겨주며 이것은 쿠키에 저장된다.
- JSP에서는 Session이라는 내장 객체를 지원하여 세션의 속성을 설정할 수 있다.
session 객체 관련 메서드
세션 속성 GET과 SET 사용
// session_set 파일
<%
// 세션은 - 서버와 클라이언트에서 정보를 유지하기 위한 수단
// 서버에서 생성하고, 서버에서 관리함
session.setAttribute("user_id", "xxx123");
session.setAttribute("user_name", "이순신");
%>
// HTML코드 이하생략
<body>
<a href="session_get.jsp">세션확인하기</a>
</body>
// session_get 파일
<%
// 세션의 값을 얻는 방법 getAttribute(키)
String user_id = (String)session.getAttribute("user_id");
String user_name = (String)session.getAttribute("user_name");
// 세션의 유효시간
int time = session.getMaxInactiveInterval();
%>
// HTML코드 이하생략
<body>
세션에 저장된 값: <%= user_id %> <br>
세션에 저장된 값: <%= user_name %> <br>
세션의 시간: <%= time %> <br>
</body>
세션 삭제하기
// 위아래 코드 생략
<%
// 세션 삭제하기
session.removeAttribute("user_name"); // 이러면 user_name만 삭제됨
// 세션을 통째로 제거
session.invalidate();
%>
세션을 통한 로그인하기
- 아이디, 비밀번호, nick을 받음
- 아이디 비밀번호가 동일하면 로그인 성공이라고 간주하고 (user_id, id)의 세션생성
- (user_nick, 닉네임)을 세션을 생성
- session_welcome로 이동해서 화면에 "id님 환영합니다"를 출력
- 틀린경우는 로그인페이지로 리다이렉트 처리
- session_welcome페이지에서는 a태그를 이용해서 로그아웃 기능을 만들어준다.
- session_logout페이지에서는 세션을 삭제하고 리다이렉트를 하면 됨
// 로그인 페이지
<body>
<h2>세션 로그인 연습</h2>
<form action="session_login_ok.jsp" method="post">
아이디:<input type="text" name="id"><br>
비밀번호:<input type="password" name="pw"><br>
닉네임:<input type="text" name="nick"><br>
<input type="submit" value="로그인">
</form>
</body>
// 로그인 성공 혹은 실패 여부 페이지, 실패하면 로그인화면으로 되돌아감
<%
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String nick = request.getParameter("nick");
// 그냥 로그인 성공이라고 가정
if(id.equals("a1") && pw.equals("123")) {
session.setAttribute("user_id", id);
session.setAttribute("user_nick", nick);
response.sendRedirect("session_welcome.jsp");
} else {
response.sendRedirect("session_login.jsp");
}
%>
// 로그인 성공 시 페이지
<%
// 여기에서 세션이 없다 -> 인증이 안 된 사람
if(session.getAttribute("user_id") == null) {
response.sendRedirect("session_login.jsp");
}
String user_id = (String)session.getAttribute("user_id");
String nick = (String)session.getAttribute("user_nick");
%>
<body>
<%= user_id %>님 환영합니다 ㅋㅋ <br>
닉네임은? <%= nick %> ㅋㅋ <br>
<a href="session_logout.jsp">로그아웃하기</a>
</body>
// 로그아웃 페이지
<%
session.invalidate(); // 세션 삭제
%>
<body>
로그아웃 성공! <br>
<a href="session_login.jsp">로그인 화면으로 돌아가기</a>
</body>
🍪쿠키와 ✨세션 비교
- 쿠키 대신에 세션을 사용하는 가장 큰 이유는 세션이 쿠키보다 보안성이 높기 때문이다.
- 쿠키의 이름이나 데이터는 네트워크를 통해 전달되기 떄문에 HTTP 프로토콜을 사용하는 경우 중간에서 누군가가
쿠키의 값을 읽어올 수 있다. - 세션은 오직 서버에만 저장되기 때문에 중요한 데이터를 저장하기 유리하다.
- 세션을 사용하는 또 다른 이유는 웹 브라우저가 쿠키를 지원하지 않거나 강제로 사용자가 쿠키를 차단한 경우에도 사용할 수 있다는 점이다.
- 세션은 여러 서버에서 공유할 수 없다는 단점이 있다.
- 쿠키는 도메인을 이용해 쿠키를 여러 도메인에서 공유할 수 있기 때문에 NAVER, DAUM과 같은 포털사이트들은
쿠키에 로그인 방식을 저장하는 것을 선호한다.
👨💻Application 기본 객체
특정 웹 어플리케이션에 포함된 모든 JSP 페이지는 하나의 Application 기본 객체를 공유한다.
application 객체는 웹 어플리케이션 전반에 걸쳐 사용되는 정보를 담고 있다.
728x90
'Programming > JSP' 카테고리의 다른 글
[JSP] Action Tag, 액션 태그 (0) | 2024.05.06 |
---|---|
[JSP] 예외 페이지 (0) | 2024.05.06 |
[JSP] 쿠키와 세션 - 쿠키 (0) | 2024.05.06 |
[JSP] 내장 객체 (0) | 2024.05.06 |
[JSP] GET과 POST (0) | 2024.05.06 |