μ΄λ²μλ JSPλ‘ μΈμ μ λ€λ£¨λ λ²μ λν΄μ λ°°μ보λλ‘ νκ² μ΅λλ€. HTTPλ "stateless" νλ‘ν μ½μ λλ€. λ¬΄μ¨ λ§μ΄λνλ©΄ λ§μ΄μ£ , ν΄μμ΄μΈνΈ(μΉλΈλΌμ°μ )κ° μΉνμ΄μ§λ₯Ό λΆλ¬μ¬λλ§λ€ ν΄λΌμ΄μΈνΈλ μΉμλ²λ‘ λ³λμ 컀λ₯μ μ λ§Ίμ΅λλ€. κ·Έλ¦¬κ³ μ΄μ ν΄λΌμ΄μΈνΈμ μ μμ λν μ΄λ ν μ 보λ μλμΌλ‘ κΈ°λ‘νμ§λ μμ΅λλ€.
μ΄μ¨λ μΈμ μ΄λΌλ κ²μ λ°λ‘ μΉλΈλΌμ°μ κ° μΉμλ²μ μ°κ²°μ΄ λ λ μκΈ°λ κ²μΈλ°, μ΄ μΈμ μ μ μ§νλ λ°©λ²μλ μ¬λ¬κ°μ§κ° μλ΅λλ€.
1. Cookies
μΏ ν€μ μΈμ IDλ₯Ό μ μ₯νλ μμΌλ‘ μΈμ μ κ΄λ¦¬ν μλ μκ² μ§λ§ λΈλΌμ°μ μμ μΏ ν€μ¬μ© μ ν μ€μ μ΄ μμ μ μκΈ°λλ¬Έμ μΈμ μ μΏ ν€λ₯Ό μ΄μ©ν΄μ κ΄λ¦¬νλ€λ κ²μ μ’μλ°©λ²μ΄ μλλλ€.
2. Hidden Form Fields
μΉμλ²λ hidden HTML form fieldμ unique session IDλ₯Ό λ£μ΄μ μλμ²λΌ μ μ‘ν μ μμ΅λλ€.
<input type="hidden" name="sessionid" value="12345">
formμ΄ μ μ‘λ λ μΈμ IDμ κ°μ λ겨주λκ±°μ£ . λΈλΌμ°μ μμ μ΄ μ 보λ₯Ό μΉμλ²μ 보λ΄λ©΄ μ΄ μ 보λ₯Ό κ°μ§κ³ μΉμλ²μμλ λ€λ₯Έ λΈλΌμ°μ μμ μ μν κ²μΈμ§λ₯Ό νλ¨ν μ μκ² λ©λλ€. νμ§λ§ μ΄ μμ μ’μ λ°©λ²μ μλμ£ . <a> νκ·Έλ₯Ό μ΄μ©ν΄μ λ§ν¬λ₯Ό νκ³ λ€μ΄μ€λ κ²½μ°μλ μ formλ°μ΄νλ₯Ό μ μ‘νμ§ μκ±°λ μ.
3. URL Rewriting
URL λμ μΈμ μ λν μ 보λ₯Ό μΆκ°ν μλ μμ΅λλ€. κ·Έλ¦¬κ³ μλ²λ κ·Έ μ 보λ₯Ό κ°μ§κ³ μΈμ μ λΉκ΅ν μ μκ² μ£ .
μλ₯Όλ€λ©΄, http://tutorialspoint.com/file.htm;sessionid=12345 μ΄λ κ² μμ²μ 보λ΄λ©΄ μλ²μμ sessionid=12345λΆλΆμ λν μ 보λ₯Ό κ°μ§κ³ μΉμλ²μ μΈμ μ 보μ λΉκ΅λ₯Ό νλκ±°μ£ .
URL rewriting μ μΈμ μ κ΄λ¦¬νκΈ°μν λ°©λ²λ€ μ€μμλ κ·Έλλ§ μ’μ λ°©λ²μ΄κΈ΄ ν©λλ€. λΈλΌμ°μ κ° μΏ ν€μ¬μ©μ μν λλ μ¬μ©κ°λ₯ν λ°©λ²μ΄λκΉμ. νμ§λ§ μμ κ²°μ μ΄ μμ΅λλ€. μΈμ IDλ₯Ό λμ μΌλ‘ λ§€λ² μμ±ν΄μ€μΌ νκΈ° λλ¬Έμ λλ€. μ μ μΈ HTMLνμ΄μ§λΌλ λ§μ΄μ£ .
The session Object:
μ μΈκ°μ§ λ°©λ² μ΄μΈμλ JSPλ HttpSession μΈν°νμ΄μ€λ₯Ό μ¬μ©ν μ μμ΅λλ€. κΈ°λ³Έμ μΌλ‘ JSPsλ μΈμ μ μΆμ νκ² λμ΄μμΌλ©° μλ‘μ΄ HttpSession κ°μ²΄κ° μλ‘μ΄ ν΄λΌμ΄μΈνΈλ€μ΄ μ μν λλ§λ€ μλμΌλ‘ μμ±λ©λλ€. μΈμ μΆμ κΈ°λ₯μ λλ €λ©΄ page directiveμ μΈμ μμ±μ falseλ‘ μΈν ν΄μ€μΌ ν©λλ€. μλ μ²λΌ λ§μ΄μ£ .
<%@ page session="false" %>
JSP engineμ JSPκ°λ°μλ€μκ² HttpSession κ°μ²΄λ₯Ό ν΅ν΄μ sessionμ μ κ·Όν μ μλλ‘ ν΄μ€λλ€. session κ°μ²΄κ° κΈ°λ³Έμ μΌλ‘ μ κ³΅μ΄ λκΈ° λλ¬Έμ κ°λ°μλ€μ κΆμ΄ μΈμ κ°μ²΄λ₯Ό μμ±νκ±°λ getSession() λ©μλλ₯Ό μ΄μ©ν΄μ μ»μ΄μ¬ νμκ° μμ΅λλ€.
μΉμ ν리μΌμ΄μ μ μμ±νκ³ μλ€λ©΄ κ·Έλ₯ μΈμ μ νλΌλ―Έν°λ‘ λ°μμ μ°λ©΄ λλ κ²λλ€.
λ€μμ μΈμ κ°μ²΄κ° κ°μ§κ³ λ©μλ λͺ©λ‘μ λλ€. μ΄λ€ λ©μλλ€μ΄ μλμ§ νλ² μ΄ν΄λ³ΌκΉμ~
S.N. | Method & Description |
---|---|
1 | public Object getAttribute(String name) This method returns the object bound with the specified name in this session, or null if no object is bound under the name. |
2 | public Enumeration getAttributeNames() This method returns an Enumeration of String objects containing the names of all the objects bound to this session. |
3 | public long getCreationTime() This method returns the time when this session was created, measured in milliseconds since midnight January 1, 1970 GMT. |
4 | public String getId() This method returns a string containing the unique identifier assigned to this session. |
5 | public long getLastAccessedTime() This method returns the last time the client sent a request associated with this session, as the number of milliseconds since midnight January 1, 1970 GMT. |
6 | public int getMaxInactiveInterval() This method returns the maximum time interval, in seconds, that the servlet container will keep this session open between client accesses. |
7 | public void invalidate() This method invalidates this session and unbinds any objects bound to it. |
8 | public boolean isNew( This method returns true if the client does not yet know about the session or if the client chooses not to join the session. |
9 | public void removeAttribute(String name) This method removes the object bound with the specified name from this session. |
10 | public void setAttribute(String name, Object value) This method binds an object to this session, using the name specified. |
11 | public void setMaxInactiveInterval(int interval) This method specifies the time, in seconds, between client requests before the servlet container will invalidate this session. |
Session Tracking Example:
λ€μ μμ λ HttpSession κ°μ²΄λ₯Ό μ΄μ©νμ¬ μΈμ μ μμ±μκ°κ³Ό λ§μ§λ§ μ κ·Όμκ° μ 보λ₯Ό κ°μ Έμ€λ λ°©λ²μ λν΄μ μ€λͺ ν΄μ£Όκ³ μμ΅λλ€.
<%@ page import="java.io.*,java.util.*" %> <% // Get session creation time. Date createTime = new Date(session.getCreationTime()); // Get last access time of this web page. Date lastAccessTime = new Date(session.getLastAccessedTime()); String title = "Welcome Back to my website"; Integer visitCount = new Integer(0); String visitCountKey = new String("visitCount"); String userIDKey = new String("userID"); String userID = new String("ABCD"); // μ²μ μ μν λ°©λ¬ΈμλΌλ©΄ μΈμ μ μμ±ν©λλ€. if (session.isNew()){ title = "Welcome to my website"; session.setAttribute(userIDKey, userID); session.setAttribute(visitCountKey, visitCount); } visitCount = (Integer)session.getAttribute(visitCountKey); visitCount = visitCount + 1; userID = (String)session.getAttribute(userIDKey); session.setAttribute(visitCountKey, visitCount); %> <html> <head> <title>Session Tracking</title> </head> <body> <center> <h1>Session Tracking</h1> </center> <table border="1" align="center"> <tr bgcolor="#949494"> <th>Session info</th> <th>Value</th> </tr> <tr> <td>id</td> <td><% out.print( session.getId()); %></td> </tr> <tr> <td>Creation Time</td> <td><% out.print(createTime); %></td> </tr> <tr> <td>Time of Last Access</td> <td><% out.print(lastAccessTime); %></td> </tr> <tr> <td>User ID</td> <td><% out.print(userID); %></td> </tr> <tr> <td>Number of visits</td> <td><% out.print(visitCount); %></td> </tr> </table> </body> </html>
main.jspβμ μ μ½λλ₯Ό λ£κ³ http://localhost:8080/main.jsp λ₯Ό νΈμΆν΄λ³΄μΈμ. μλ² μ€νμν€λ κ² μμ΄λ¨Ήμ§ λ§μꡬμ~ ^___^
Welcome to my website
Session Infomation
Session info | value |
---|---|
id | 0AE3EC93FF44E3C525B4351B77ABB2D5 |
Creation Time | Tue Jun 08 17:26:40 GMT+04:00 2010 |
Time of Last Access | Tue Jun 08 17:26:40 GMT+04:00 2010 |
User ID | ABCD |
Number of visits | 0 |
μμκ°μ νμ΄μ§κ° λμ€λμ??
λ€μνλ² νΈμΆ ν΄ λ³ΌκΉμ??
Welcome Back to my website
Session Infomation
info type | value |
---|---|
id | 0AE3EC93FF44E3C525B4351B77ABB2D5 |
Creation Time | Tue Jun 08 17:26:40 GMT+04:00 2010 |
Time of Last Access | Tue Jun 08 17:26:40 GMT+04:00 2010 |
User ID | ABCD |
Number of visits | 1 |
μμ κ°μ κ²°κ³Όκ° λμ€λμ? Welcome λ©μμ§κ° Welcome Back λ©μμ§λ‘ λ°λμλ€μ. ^__^
μ΄μ μΈμ λ°μ΄νλ₯Ό μμ νλ λ°©λ²μ μμλ³ΌκΉμ??ββ
Deleting Session Data:
μ¬μ©μμ μΈμ λ°μ΄νλ‘ ν΄μΌλλ μμ μ λͺ¨λ μλ£νμλ€λ©΄ μλμ κ°μ μμ μ λ§μ§λ§μΌλ‘ ν΄μ€ μ μμ΅λλ€.
νΉμ μμ± μμ : removeAttribute(String name) λ©μλλ₯Ό μ΄μ©ν΄μ μΈμ μ νΉμ μμ±κ°λ§ μμ ν μ μμ΅λλ€.
μΈμ μμ : invalidate() λ©μλλ₯Ό νΈμΆνμ¬ μΈμ μ 체λ₯Ό 무ν¨ν μν¬ μ μμ΅λλ€. μΈμ μ λλλ€κ³ νννμ£ .
μΈμ νμμμ μ€μ : setMaxInactiveInterval(int interval) λ©μλλ₯Ό μ΄μ©νμ¬ μΈμ λ³λ‘ νμμμμ μ€μ ν μ μμ΅λλ€.
μ¬μ©μ λ‘κ·Έμμ : servlets 2.4λ₯Ό μ§μνλ μλ²λΌλ©΄ logout μ νΈμΆνμ¬ μ¬μ©μλ₯Ό λ‘κ·Έμμμν€κ³ λͺ¨λ μΈμ μ 무ν¨ν μν¬ μ μμ΅λλ€.
web.xml μ€μ : Tomcatμ μ¬μ©μ€μ΄λΌλ©΄ web.xml νμΌμμ μλμ²λΌ νμμμ μκ°μ μ€μ ν μλ μμ΅λλ€.
<session-config> <session-timeout>15</session-timeout> </session-config>
μ¬κΈ°μ νμμμ μκ°μ λ¨μλ λΆ λ¨μμ΄λ©° ν°μΊ£μ κΈ°λ³Έ νμμμμΈ 30 λΆμ μ€λ²λΌμ΄λνμ¬ μ μ©λ©λλ€.
μλΈλ¦Ώμ getMaxInactiveInterval( )λ©μλλ μ΄λ¨μλ‘ νμμμ μκ°μ κ°μ Έμ΅λλ€. λ°λΌμ web.xml νμΌμ 15 λΆμΌλ‘ μ€μ λμ΄μλ€λ©΄ getMaxInactiveInterval( ) λ©μλλ 900 ( 15λΆ * 60μ΄ )λ₯Ό λ°ννκ² λ©λλ€ .
Reference : http://www.tutorialspoint.com/jsp/jsp_session_tracking.htm
'π» Programming > JSP' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JSP] Page Redirection ( νμ΄μ§ 리λλ μ ) (0) | 2019.02.15 |
---|---|
[JSP] File Upload ( νμΌ μ λ‘λ ) (0) | 2019.02.15 |
[JSP] Cookies ( μΏ ν€ μΈν , μ½κΈ°, μμ νκΈ°) (0) | 2019.02.15 |
[JSP] Filters ( νν° μ¬μ©νκΈ° ) (0) | 2019.02.15 |
[JSP] Form λ°μ΄ν μ²λ¦¬ (0) | 2019.02.15 |