세션
아이디와 패스워드를 넣고 로긴을 하면 웹페이지를 종료시키지 않은 이상
계속 로그인 상태로 웹서핑을 하는데 비접속자와 구분을 위해 꼭 필요하다.
진짜 구식 방법으로 모든 웹페이지에 아이디 정보를 넘겨주는 방법도 있지만
세션에 저장하게 되면 간단하게 어느 웹페이지에서나
한줄의 명령어로 아이디를 불러와서 개인정보도 불러올 수 있게 된다.
* 세션의 사용 *
┌───────────┬────────────────────────────┐
│ │ session.setAttribute("mySession", "session value"); │
│ 세션의 생성 ├────────────────────────────┤
│ │ mySession이란 이름을 가진 세션에 session value란 │
│ │ 값을 설정한다. │
├───────────┼────────────────────────────┤
│ │ session.setMaxInactiveInterval(60*5); │
│ 세션의 유지기간 설정 ├────────────────────────────┤
│ │ 세션 유지기간을 5분을 설정하여 사용자가 5분동안 │
│ │ 아무런 동작이 없는 경우 세션은 자동으로 종료가 된다. │
├───────────┼────────────────────────────┤
│ │ session.removeAttribute("mySession"); │
│ 세션속성삭제 ├────────────────────────────┤
│ │ mySession 이라는 이름의 세션값을 삭제한다. │
├───────────┼────────────────────────────┤
│ │ session.invalidate(); │
│ 세션삭제 ├────────────────────────────┤
│ │ 세션값을 삭제한다. │
└───────────┴────────────────────────────┘
로그인과 결합된 세션사용방법을 알아보자.
아 이 디 : miojj
패스워드 : 1234
입력을 누르면 자료는 디비와 접속하여 비교분석을 하게되고
회원이라는 등식이 성립되면 변수 myId 로 반환하게 만든다.
session.setAttribute("memID", myId); <- memID 라는 세션명으로 저장하면
웹페이지가 살아있는 동안 또는 유지기간내에
<%String memberId = (String)session.getAttribute("memID");%>
getAttribute 로 꺼내서 사용할 수 있다. 이 때 세션이름 사용
* 세션저장시 세션명을 달리하면 여러개의 세션도 저장이 된다. *
그럼 여기서 로그인 구성의 마무리 로그아웃은
당연히 <% session.invalidate(); %> 로 싹 지워버리자.
그리고 스크립트로 alert!("로그아웃 되었습니다."); 을 뿌려주는 쎈스!
'My work space > JSP/Servlet' 카테고리의 다른 글
JSP: 파일 업로드 (cos.jar 이용) MultipartRequest를 통한 FIle Upload, Download, Delete (0) | 2008.09.08 |
---|---|
Servlet API 파일 (0) | 2008.09.08 |
세션설정,세션에서 값 가져오기 (0) | 2008.09.08 |
session.setAttribute 에서 주의할 점 (0) | 2008.09.08 |
request 객체 (0) | 2008.09.08 |
세션설정
세션 값을 설정하기 위해서는 setAttribute(String key, Object value) 메소드를 사용한다. 여기서 key는 String 형으로 지정하지만, 값은 Object 형으로 지정하기 때문에 일반적으로 많이 사용하는 String 뿐만 아니라, 프로그램에서 사용하고 있던 객체(Object)를 세션으로 설정할 수도 있다.
session.setAttribute("id", "gildong"); // 문자열을 값으로 설정
Hashtable h = new Hashtable(); // 해쉬테이블을 값으로 설절
h.put("id" , "gildong");
h.put("name", "홍길동");
h.put("tel" , "011-673-9335");
session.setAttribute("user", h);
세션에서 값 가져오기
JSP 웹 페이지에서 세션 값을 가져오기 위해서는 getAttribute(String key) 메소드를 사용한다. 여기서 주의해야 할 점으로는 세션의 값이 Object 형으로 저장되기 때문에 반환되는 데이터의 형도 동일하게 Object 형이된다. 따라서, 리턴 받고자 하는 데이터형으로 캐스팅(Casting)을 해 주어야 한다.
String id = (String) session.getAttribute("id");
Hashtable h = (Hashtable) session.getAttribute("user");
위의 ①에서 해쉬테이블을 세션으로 설정한 후 세션에서 값을 가져오는 예를 getSession.jsp 프로그램으로 구현하면 다음과 같다.
세션에서 사용하는 주요 메소드
앞에서 살펴본 session 객체는 javax.servlet.http.HttpSession 인터페이스로 구현되어 있으며, setAttribute() 와 getAttribute() 외에더 다음과 같은 여러 가지의 메소드를 제공하고 있다.
public Object getAttribute(String key)
세션에 들어 있는 값중에서 key에 해당하는 값을 가져오며, 값이 없을 경우 null을 리턴한다. 리턴하는 데이터형이 Object이므로 String이나 Hashtable 등으로 캐스팅해서 사용해야 한다.
public void setAttribute(String key, Object value)
문자열로 지정되는 key 값에 해당하는 세션 값을 Object 형으로 설정한다.
public void removeAttribute(String key)
세션중에서 key에 해당하는 값을 제거한다.
public Enumeration getAttributeNames()
세션으로 설정되어 있는 모든 키를 java.util.* 에 포함되어 있는 Enumberation 형태로 가져온다. 따라서, 이 메소드를 사용하기 위해서는 page 지시부에 java.util.*를 import! 한 후 사용해야 한다.
public String getId()
세션이 열리면 각 세션에 대해서 고유한 ID가 할당되는데, 이 아이디를 문자열로 리턴한다.
public long getCreationTime()
세션이 처음 생성된 시간을 밀리 초로 계산하여 long형 정수로 리턴하며, 기준은 70년1월1일 00시 00분 00초이다.
public long getLastAccessedTime()
세션에 클라이언트가 마지막으로 request를 보낸 시간을 long 형으로 리턴한다.
public int getMaxInactiveInterval()
클라이언트의 요구가 없을 때 서버가 현재의 세션을 언제까지 유지할지를 정수로 리턴하며, 디폴트로는 30분으로 지정되어 있다.
public void invalidate()
현재의 세션을 모두 제거하므로, 세션의 속성값들이 자동적으로 상실된다.
public boolean isNew()
서버측에서 새로운 session객체를 생성하고 아직 클라이언트에게 세션ID를 할당하지 않은 경우 true를 리턴하고 기존의 세션이 유지되고 있는 상태라면 false를 리턴한다.
public void setMaxInactiveInterval(int seconds)
세션이 유지되는 시간을 밀리 초 단위로 설정하는 것으로서, 이 시간동안 클라이언트의 요청이 없으면 세션은 제거된다.
'My work space > JSP/Servlet' 카테고리의 다른 글
Servlet API 파일 (0) | 2008.09.08 |
---|---|
session사용 (0) | 2008.09.08 |
session.setAttribute 에서 주의할 점 (0) | 2008.09.08 |
request 객체 (0) | 2008.09.08 |
request.getAttribute (0) | 2008.09.08 |
throws ServletException, IOException {
HttpSession session = req.getSession(true);
int total = 0;
int robot1 = 1;
int lego1 = 1;
total = robot1+lego1;
if(session.isNew()){
session.setAttribute("imdi", total);
session.setAttribute("robot", new int[] {0});
session.setAttribute("lego", new int[]{0});
}
--> int type 을 그대로 입력하면 에러!
HttpSession session = req.getSession(true);
int total = 0;
int robot1 = 1;
int lego1 = 1;
total = robot1+lego1;
if(session.isNew()){
Integer itotal = new Integer(total);
// 형변환이 반드시 이루어져야함
// Session 는 object 형만 가능하다.
session.setAttribute("imdi", itotal);
session.setAttribute("robot", new int[] {0});
session.setAttribute("lego", new int[]{0});
}
'My work space > JSP/Servlet' 카테고리의 다른 글
session사용 (0) | 2008.09.08 |
---|---|
세션설정,세션에서 값 가져오기 (0) | 2008.09.08 |
request 객체 (0) | 2008.09.08 |
request.getAttribute (0) | 2008.09.08 |
jsp/Servlet 기본2 (0) | 2008.09.08 |