[ session ]
--------------------------------------------------------------
request.getRequestedSessionId()´Â Áö±Ý ¸¸µé¾îÁø ¼¼¼ÇIdÀ» º¸±â À§ÇÔÀÌ ¾Æ´Ï¶ó,
ÀÌÀü¿¡ ¸¸µé¾îÁø¼¼¼ÇÀÇ Id¸¦ º¸±â À§ÇÔÀÔ´Ï´Ù
--------------------------------------------------------------
¼¼¼ÇÀº º¸Åë ¼¼¼Ç¸¸ ¾²Áö´Â ¾Ê½À´Ï´Ù. ¿ä°ÍÀÌ lifeŸÀÓÀÌ ¾ò´Â°ÍÀ̳ª ¼ÂÆÃÇÏ´Â °ªÀ¸·Î Àß ¾ÈµÇ±â ¶§¹®ÀÔ´Ï´Ù.
µðÆúÆ®°¡ 30ºÐÀε¥ 30ºÐÀÌ µÇ±â Àü¿¡ »ç¶óÁö´Â ÀÏÀÌ Á¾Á¾¹ß»ýÇϱ⠶§¹®ÀÔ´Ï´Ù.
¼¼¼Ç¿¡ ´ëÇÑ ¸Þ¼Òµå¸¦ Ãß°¡ ÇØ¼ ¼Ò½º¸¦ ¿Ã·È½À´Ï´Ù.
getCreateTime : »ý¼ºµÈ ½Ã°£À» ¹ÝÈ¯ÇØÁÖ´Â ¸Þ¼ÒµåÀÔ´Ï´Ù.
getLastAccessedTime : ¸¶Áö¸·À¸·Î ¼¼¼ÇÀ» accessÇÑ ½Ã°£À» ¹ÝÈ¯ÇØÁÝ´Ï´Ù.
getMaxInactiveInterval : ¸¶Áö¸· acceess·Î ºÎÅÍ »ì¾Æ³²À» ¼ö ÀÖ´Â ½Ã°£ÀÔ´Ï´Ù.
ÇÏÁö¸¸ Àü ±×Àü¿¡ »ç¶óÁö´Â °æ¿ì¸¦ Á¾Á¾ ºÁ¿Ô±â¶§¹®¿¡ ¿ÀÈ÷·Á »ì¾Æ³²À» ¼ö ÀÖ´Â ÃÖ´ëÇÑÀÇ ½Ã°£À̶ó°í ¸»ÇÏ°í ½Í½À´Ï´Ù.
getId : ¼¹ö°¡ Ŭ¶óÀÌ¾ðÆ®º°·ç ÁÖ´Â ¼¼¼ÇIDÀÔ´Ï´Ù. ÀνÄÀÚÀÎ ¼ÀÀÌÁÒ..
¾Æ·¡ ¼Ò½º¸¦ ½ÇÇàÇÏ¸é ¾ÆÀ̵𸦠³Ö¾î ´Þ¶ó´Â ¸»ÀÌ ³ª¿Ã°Ì´Ï´Ù. °Å±â¼ ¾ÆÀ̵𸦠³ÖÀ¸¸é ±× ¾ÆÀ̵𸦠¼¼¼Ç¿¡ ³Ö½À´Ï´Ù.
±×¸®°í´Â ¼Ò½º ÇϴܺκÐÀÇ if¹®ÀåÀ» ½ÇÇàÇÏ°Ô µÇÁÒ.
<%@ page contentType="text/html; charset=euc-kr" session="true" %>
<%@ page import="java.io.*,java.util.*"%>
<html>
<body>
<%
if(session.getValue("id") == null ){
%>
¾ÆÀ̵𸦠ÀÔ·ÂÇϼ¼¿ä.<br>
¾ÆÀ̵𰡠¾øÀ¸½Å ºÐÀº guest¸¦ ÀÔ·ÂÇϼ¼¿ä.<br>
<form >
¾ÆÀ̵ð <input type="text" name="id"><br>
<input type="submit" value="login">
</form>
<%
}
%>
<%
String user="";
if(request.getParameter("id") != null){
user=request.getParameter("id");
session.putValue("id",user);
java.util.Enumeration st = session.getAttributeNames();
%>
<br>
<table border="1" align="center">
<tr>
<td>getCreationTime()</td>
<td><%=(new Date(session.getCreationTime()))%></td>
</tr>
<tr>
<td>getID</td>
<td><%=session.getId()%></td>
</tr>
<tr>
<td>getMaxInactiveInterval</td>
<td><%=(session.getMaxInactiveInterval()/60)%>min</td>
<tr>
<tr>
<td>getLastAccessedTime()</td>
<td><%=(new Date(session.getLastAccessedTime()))%></td>
</tr>
</table>
<%
}
%>
</body>
</html>
--------------------------------------------------------------
ÀÏÁ¤ÇÑ ½Ã°£ÀÌ Áö³ª¼, ÀÌ¹Ì ÇØ´ç HttpSession ÀÌ invalidate µÇ¾ú±º¿ä...
ÀÌ¹Ì invalidate µÈ sessionÀ» ´Ù½Ã invalidate ½ÃŰ·Á°í Çϸé IllegalStateExceptionÀÌ
¹ß»ýÇÕ´Ï´Ù. ÀÌ °æ¿ì¿¡ ¹ß»ýÇÏ´Â IllegalStateExceptionÀº ¹«½ÃÇÏ½Ã¸é µÇ°Ú½À´Ï´Ù.
¾Æ·¡Ã³·³ °íÄ¡¼¼¿ä..
> String mem_id = req.getParameter("mem_id");
> HttpSession session = SessionPool.get(mem_id);
>
> if(session!=null) {
> session.invalidate(); // <--- !!!
> SessionPool.remove(mem_id);
> }
==>
> String mem_id = req.getParameter("mem_id");
> HttpSession session = SessionPool.get(mem_id);
>
> if(session!=null) {
> try{session.invalidate();}catch(Exception e){} // <-- !!!
> SessionPool.remove(mem_id);
> }
--------------------------------------------------------------
1. ÇöÀç ·Î±äµÇ¾î ÀÖ´Â »ç¿ëÀÚµéÀÇ id ¿Í ¼¼¼ÇÄ«¿îÆ®¸¦ ÇÏ´Â ¹æ¹ý
package session;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Enumeration;
public class SessionDisplay extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/plain");
PrintWriter out = res.getWriter();
HttpSession dummySession = req.getSession(true);
dummySession.putValue("userID", "Watcher");
HttpSessionContext context = dummySession.getSessionContext();
int i = 0;
Enumeration ids = context.getIds();
out.println("========================================");
out.println("No SessionID UserID");
out.println("========================================");
while (ids.hasMoreElements()) {
i++;
String id = (String) ids.nextElement();
HttpSession session = context.getSession(id);
String user_id = (String)session.getValue("userID");
out.print("(" + i + ")" + id );
out.println(" userID = [" + user_id + "]");
}
out.println("========================================");
out.println("Total Connect User : " + i );
out.println("========================================");
out.flush();
}
}
--------------------------------------------------------------
1. userµéÀÌ ·Î±×Àνà °¢°¢ÀÇ session¿¡ ¾ÆÀ̵ðµîÀÌ ÀúÀåµË´Ï´Ù.
°ü¸®ÀÚÀÔÀå¿¡¼ ¸ðµç À¯ÀúµéÀÇ ·Î±×ÀλóŸ¦ ¾Ë°íÀÚ Çϴµ¥¿ä,
¸ðµç À¯ÀúµéÀÇ session¿¡ ÀúÀåµÈ °ªÀ» ÀÐÀ»¼ö ÀÖ´ÂÁö¿ä...
int k = 0;
int j = 0;
HttpSessionContext context = session.getSessionContext();
Enumeration ids = context.getIds();
while(ids.hasMoreElements())
{
String id = (String) ids.nextElement();
out.println("<tr><td>");
out.println(id);
HttpSession foreignSession = context.getSession(id);
String foreignUser = (String) foreignSession.getValue("LoginUser");
String foreignName = (String) foreignSession.getValue("LoginUserName");
out.println("<td>"+foreignUser);
out.println("<td>"+foreignName);
out.println("<td>"+request.getHeader("REMOTE_ADDR"));
out.println("<td>"+new Date(foreignSession.getCreationTime()));
out.println("<td>"+new Date(foreignSession.getLastAccessedTime()));
out.println("</tr>");
}
À§¿Í °°ÀÌ ÇÏ¿´´õ´Ï µÇ´õ±º¿ä...
±Ùµ¥¿ä ºê¶ó¿ìÀú ±âÁØ ¼¼¼ÇÀ» º¸¿©ÁÖ´õ±º¿ä...
¼¼¼ÇÀÌ null·Î ³ª¿Â°ÍÀº ¼¼¼ÇÀúÀå¾ÈµÈ ºê¶ó¿ìÀú¶ø´Ï´Ù.
--------------------------------------------------------------
1. ¼¼¼Ç IDȹµæÇÏ´Â ¹æ¹ýÀÓ´Ù.
// ÀÌ°Ç ¼¼¼ÇÀÇ ÄÁÅØ½ºÆ®¸¦ ¾ò±âÀ§ÇѰ̴ϴÙ..(ÄÁÅØ½ºÅ͸¦ ÀÌ¿ëÇØ¼ ¼¼¼ÇÀÇ ID¸¦ ¾Ë·Á°í...)
HttpSessionContext context = session.getSessionContext();
// À§ÀÇ ÄÁÅØ½ºÆ®¸¦ ÀÌ¿ëÇØ¼...
Enumeration ids = context.getIds();
// ÃÖ½ÅÀÇ »óŰ¡ ¾Æ´Ñ ¼¼¼ÇÀ» °Ë»öÇϱâÀ§ÇØ ¼¼¼ÇID¸¦ »ìÆìº½..
while (ids.hasMoreElements()) {
String id = (String)ids.nextElement();
out.println("Checking " + id + "...."); // ¼¼¼ÇÀÇ ID°¡ ³ª¿À°ÚÁÒ...
HttpSession session = context.getSession(id);
. . .
String foreignUser = (String)foreignSession.getValue("user_id");
}
--------------------------------------------------------------
1. jsp¿¡¼ ȸ¿ø·Î±×Àο¡¼ sessionÀ» ¹Þ¾Æ ó¸®ÇÏ´Â ºÎºÐÇϰí ÀÌ sessionÀ» °¡Áö°í
Á¤º¸¼öÁ¤À̶û ÇÏ°í ½ÍÀºµ¥ ¾î¶»°Ô 󸮸¦ ÇØ Áà¾ß Çϳª¿ä?
·Î±×ÀÎÇÒ¶§ ȸ¿ø¾ÆÀ̵ð°ªÀ» ³Ñ°ÜÁÝ´Ï´Ù.
°ªÀ» ¹ÞÀº ÆäÀÌÁö¿¡¼´Â ±× °ªÀ» ¼¼¼Ç¿¡ ³Ö½À´Ï´Ù.
ÀÌ·¸°Ô¿ä..
session.putValue("id",userid);
¿©±â¼ userid´Â ȸ¿ø¾ÆÀ̵ð°ªÀ» ¹ÞÀº StringÀÔ´Ï´Ù.
±×·¯¸é ¼¼¼Ç¿¡ id°¡ µé¾î°¡°ÚÁö¿ä.
´ÙÀ½À¸·Î Á¤º¸¼öÁ¤ÇÏ´Â ÆäÀÌÁö¿¡ ¼¼¼ÇÀ» °¡Á®¿À´Â ¹®ÀåÀ» ³ÖÁö¿ä.
session.getValue("id");
±×¸®°í ±× °ªÀ» StringÇüÀ¸·Î º¯È¯Çؼ ÀÓÀÇÀÇ º¯¼ö¿¡ ³Ö½À´Ï´Ù.
±×¸®°í ±× ÀÓÀÇÀÇ º¯¼ö¸¦ ÀÌ¿ëÇØ¼ ÇØ´çȸ¿øÀÇ Á¤º¸¸¦ ¼öÁ¤ÇÏ¸é µÇ°ÚÁö¿ä...
--------------------------------------------------------------
1. >clientº° ¼¼¼Ç°´Ã¼¸¦ ¾ò¾î¼ clientµéÀÇ ¼¼¼Ç ÀúÀå³»¿ëÀ» Áö¿ì´Â ºÎºÐÀÔ´Ï´Ù...
>±Ùµ¥ ¸Ç³¯µµ ¾Æ´Ï±¸ °¡²û ¾ÆÁÖ °¡²û foreignSession°´Ã¼¿¡¼ NullPointerExceptionÀÌ
>¹ß»ýÇϴµ¥¿ä... ¿Ö ±×·±¿¡·¯°¡ ³ª´ÂÁö ¸ð¸£°Ú³×¿ä...
> HttpSessionContext context = session.getSessionContext();
> Enumeration ids = context.getIds();
> while(ids.hasMoreElements())
> {
> id = (String) ids.nextElement();
> HttpSession foreignSession = context.getSession(id);
> String[] session_valuenames = foreignSession.getValueNames();
> for(int i=0; i<session_valuenames.length; i++)
> {
> foreignSession.removeValue(session_valuenames[i]);
> }
> }
ÀÏÁ¾ÀÇ..µ¿±âÈ ¹®Á¦·Î º¸¿©Áý´Ï´Ù.
¼¼¼Ç¸ñ·ÏÀ» °¡Á®¿Â ÈÄ,
±×¸®°í ¼¼¼ÇÀúÀå³»¿ëÀ» Áö¿ì±â Àü¿¡
¼¼¼ÇŸÀӾƿô µîÀÇ ÀÌÀ¯·Î ¼¼¼ÇÀÌ ¾ø¾îÁö¸é
ÇØ´ç id°ªÀÌ ¾øÀ¸´Ï nullÀÌ µé¾î°¥°ÍÀ̱¸..
¸ð ÀÏ´Ü ±×·¸°Ô º¸¿©Áö³×¿ä ^^
¶ÇÇÑ Âü°íÇϼ¼¿ä..
¢Ñ ·Î±×ÀÎÇÏ°í ·Î±×¾Æ¿ôÇÒ¶§ µ¥ÀÌÅͺ£À̽º Å×ÀÌºí¿¡ °ªÀ» ¼³Á¤Çؼ ºñ±³ÇÏ´Â ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù.
¢Ñ ¼¼¼ÇÁ¤º¸¿¡ ·Î±×ÀÎÇÑ »ç¿ëÀÚÀÇ µ¥ÀÌÅ͵µ ³ÖÀ»¼ö ÀÖÀ»¼ö ÀÖ´Ù¸é,
¼¼¼ÇÀ» Ã¼Å©ÇØ¼ ÁÖ±âÀûÀ¸·Î µ¥ÀÌÅͺ£À̽º¸¦ üũÇÑ´Ù¸é °¡´ÉÇÒ°Å °°±âµÎ Çѵ¥¿ä...
¢Ñ javax.servlet.http.* ÆÐŰÁö¿¡ º¸¸é HttpSessionBindingListener ÀÎÅÍÆäÀ̽º°¡ ÀÖ½À´Ï´Ù.
ÀÌ ÀÎÅÍÆäÀ̽º¿¡´Â ¸î°³ÀÇ ¸Þ¼Òµå°¡ Àִµ¥ ±× Áß ÇѰ³°¡ ¾Æ·¡¿¡ Àִ°ÍÀÔ´Ï´Ù.
// HttpSessionBindingListener ±¸Çö
public void valueUnbound(HttpSessionBindingEvent http) {
logout();
}
À§ ¸Þ¼Òµå´Â ¼ºí¸´¿¡¼ »ç¿ëÀÚÀÇ ¼¼¼ÇÀÌ ²÷¾îÁ³À»¶§ »ý±â´Â À̺¥Æ®ÀÔ´Ï´Ù.
±×·¯´Ï±ñ »ç¿ëÀÚ°¡ ·Î±×ÀÎ ÇßÀ»¶§ µ¥ÀÌŸ º£À̽º¿¡ ¼¼¼Ç Á¤º¸°¡ ÀÖ´Ù¸é Áߺ¹ ·Î±×ÀÎÇÑ »ç¿ëÀÚÀ̰í, ¾ø´Ù¸é ¼¼¼Ç Á¤º¸¸¦ ³Ö¾îµÎ°í, À§ ¸Þ¼Òµå¿¡¼ ¼¼¼Ç Á¾·á½Ã DB¿¡ ÀúÀåµÈ ¼¼¼ÇÁ¤º¸¸¦ Áö¿ì´øÁö Çʵ带 ™VÆÃÇÏ´øÁö ÀÛ¾÷À» ÇÏ½Ã¸é µÉ°Í°°½À´Ï´Ù.
? °ü·Ã ¸Þ¼Òµå Á¤¸®
Object getAttribute(String name)
- ÁÖ¾îÁø À̸§À¸·Î ¼¼¼Ç¿¡ ÀúÀåµÈ °´Ã¼¸¦ ¸®ÅÏÇÑ´Ù. ¡Ø Object getValue(String name)
Enumeration getAttributeNames()
- ¼¼¼Ç¿¡ ÀúÀåµÈ ¸ðµç °´Ã¼µéÀÇ À̸§À» Enumeration ŸÀÔÀ¸·Î ¸®ÅÏÇÑ´Ù. ¡Ø String
getValueNames()
long getCreationTime()
- 1970³â 1¿ù 1ÀÏ 0½Ã 0ºÐ 0Ãʸ¦ ±âÁØÀ¸·Î ¼¼¼ÇÀÌ »ý¼ºµÈ ½Ã°£À» ¸®ÅÏÇÑ´Ù.(´ÜÀ§ ms)
String getId()
- ¼¼¼ÇÀÇ ID¸¦ ¸®ÅÏÇÑ´Ù.
long getLastAccessedTime()
- 1970³â 1¿ù 1ÀÏ 0½Ã 0ºÐ 0Ãʸ¦ ±âÁØÀ¸·Î Ŭ¶óÀÌ¾ðÆ®°¡ ÀÌ ¼¼¼Ç¿¡¼ ¿äûÀ» º¸³½ ¸¶Áö¸· ½Ã°£À» ¸®ÅÏÇÑ´Ù.
int getMaxInactiveInterval()
- ¼¹ö°¡ Ŭ¶óÀ̾ðÆ®ÀÇ ¿äû¾øÀÌ ¼¼¼ÇÀ» À¯ÁöÇÏ´Â ÃÖ´ë ½Ã°£À» ¸®ÅÏÇÑ´Ù. (´ÜÀ§ ÃÊ)
void invalidate()
- ¼¼¼ÇÀ» Á¾·áÇÑ´Ù.
boolean isNew()
- ¼¼¼ÇÀÌ ¸¸µé¾îÁö°í Ŭ¶óÀÌ¾ðÆ®°¡ ¾ÆÁ÷ ¼¼¼Ç¿¡ Á¶ÀεÇÁö ¾Ê¾ÒÀ¸¸é true¸¦ ¸®ÅÏÇÑ´Ù.
void setAttribute(String name, Object value)
- ¼¼¼Ç¿¡ À̸§À» ÀÌ¿ëÇØ¼ °´Ã¼¸¦ ÀúÀå½ÃŲ´Ù. ¡Ø void putValue(String name, Object value)
void removeAttribute(String name)
- ÁÖ¾îÁø À̸§ÀÇ °´Ã¼¸¦ ¼¼¼Ç¿¡¼ »èÁ¦ÇÑ´Ù. ¡Ø void removeValue(String name)
void setMaxInactiveInterval(int interval)
- Ŭ¶óÀ̾ðÆ®ÀÇ ¿äû¾øÀÌ ¼¼¼ÇÀ» À¯ÁöÇÒ ¼ö ÀÖ´Â ÃÖ´ë ½Ã°£À» ¼³Á¤ÇÑ´Ù. (´ÜÀ§ ÃÊ)