: 비연결성 (connectionless)
클라이언트가 요청을 한 후 응답을 받으면 그 연결을 끊어버리는 특징
: 무상태 (stateless)
통신이 끝나면 상태를 유지하지 않는 특징
: 클라이언트(브라우저)에 저장되는 키와 값이 들어있는 작은 데이터파일
session 브라우저를 꺼버리면 사라지는 정보들
그 외에 날짜가 입력돼있는 것은 그 날짜까지 유지가 됨
Cookie 동작방식
Cookie 사용 예
Cookie 단점
Client 요청 -> Server
Client <- 응답 Server
1. 클라이언트가 페이지 요청
2. 상태를 유지하고 싶은 갚을 쿠키로 생성
3. http 헤더에 쿠키를 포함시켜 응답
4. 브라우저가 종료되어도 쿠키만료기간이 있다면 클라이언트에서 보관
5. 같은 요청을 할 경우 http해더에 쿠키를 함게 보냄
6. 서버에서 쿠키를 읽어 이전 상태 정보를 변경할 필요가 있을 때 쿠키를 업데이트 하여 변경된 쿠키를 http헤더에 포함시켜 응답
쿠키 만들기
쿠키 객체 생성
Cookie cookie = new Cookie("id","쿠키몬스터");
쿠키의 만료기한 설정
초단위로 설정 해야함 -> 아래는 1년의 만료기한 설정
cookie.setMaxAge(606024*365);
쿠키를 웹브라우저로 전송
response.addCookie(cookie);
만든 쿠키 가져오기
쿠키 가져오기 -> 전부 가져오는 작업을 해야한다.
Cookie[] cookies = request.getCookies();
name, value값 확인하기
for(Cookie c : cookies) {
out.print(c.getName() + " : " + c.getValue() +
)%>
}
브라우저가 종료되기 전까지 클라이언트의 정보를 유지하게 해주는 기술
사용자 정보 파일을 서버 에서 관리
http세션
Session 동작방식
session 사용 예
: 로그인 같이 보안상 중요한 작업을 수행할 때 사용
session 특징
session 만들기
session.setAttribute("id", "wonjuzzzang");
session.setAttribute("age", 20);
괄호 내에 차례로 String, Object 형태로 값을 넣어줘야 함
① 내장객체이기 때문에 별도로 생성해 줄 필요가 없음
② 서버상에 데이터가 저장되기 때문에 응답하면서 다시 되돌려 줄 필요가 없음
2-1 각각의 session 가져오기
object 형태로 받아오기 때문에 원하는 형태로 downcasting 필요함
String id = (String)session.getAttribute("id");
int age = (int)session.getAttribute("age");
2-2 모든 session 가져오기
① 모든 session의 이름을 가져오기
Enumeration names = session.getAttributeNames();
Enumeratino 열거형
: 가지고 올 때 사용하기 편한 메소드들이 기본적응로 설계 돼 있음
: 객체들을 하나씩 처리하기에 용이
② 키값에 맞는 데이터 꺼내오기
반복해서 데이터 유무 확인
while (names.hasMoreElements()) {
데이터 꺼내오기
object 형태로 돌려주기 때문에 downcasting 필요
String name = (String)names.nextElement();
session 안에 있는 정보 가져오기
String data = (String)session.getAttribute(name);
out.print(data);
out.print("<br>");
session 실습하기
우선
총 4개의 jsp 파일을 만들어 준다.
jsp파일 이동은 위의 그림 순서대로
<body>
<form action = "ex04logincheck.jsp">
<p>아이디 : <input type = "text" name = "id"></p>
<p>비밀번호 : <input type = "password" name = "pw"></p>
<input type = "submit" value = "로그인">
</form>
</body>
↓
<body>
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");
if (id.equals("test")&&pw.equals("12345")) {
session.setAttribute("name", "쿠키몬스터");
response.sendRedirect("ex04main.jsp");
} else {
response.sendRedirect("ex04loginform.jsp");
}
%>
</body>
2-1. 일치한다면 main.jsp로 이동한다.
<body>
<%
String name = (String)session.getAttribute("name");
%>
<p><%=name%>님 환영합니다.</p>
<a href="ex04logout.jsp">로그아웃</a>
</body>
2-2. 일치하지 않는다면 다시 loginform.jsp로 되돌려 보낸다.
↓
main.jsp에서 로그아웃을 누르면 logout.jsp로 이동하여 세션을 삭제시켜 주고, loginform.jsp으로 다시 되돌아온다.
위에서 session 만들기와 받아오기는 설명을 했지만, session 지우는 것은 따로 설명을 안했기 때문에 간략하게 설명하자면
session을 지우는 방법은 두가지이다.
3-1. 내가 지우고싶은 session만 선택해서 삭제하는 방법
session.removeAttribute("session이름");
3-2. session을 모두 삭제하는 방법
session.invalidate();
<body>
<%
session.invalidate();
response.sendRedirect("ex04loginform.jsp");
%>
</body>
jsp 내장객체 기본영역 (Scope)