首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Session and Cookies 二

2013-10-27 
Session and Cookies 2转载自:http://www.java-programming.info/tutorial/pdf/csajsp2/08-Session-Tracki

Session and Cookies 2

转载自:http://www.java-programming.info/tutorial/pdf/csajsp2/08-Session-Tracking.pdf

http://www.java2s.com/Code/Java/Servlets/Usecookietosavesessiondata.htm

Session Tracking

?

HttpSession session = request.getSession();synchronized(session) {SomeClass value =(SomeClass)session.getAttribute("someID");if (value == null) { value = new SomeClass(...);}doSomethingWith(value);session.setAttribute("someID", value);}

?

?The J2EE blueprints say not to botherThere are no race conditions when multiple different?users access the page simultaneouslyOn the face of it, it seems practically impossible for the?same user to access the session concurrentlyThe rise of Ajax makes synchronization?mportantWith Ajax calls, it is actually quite likely that two?requests from the same user could arrive concurrentlyPerformance tipDon’t do “synchronized(this)”!Use the session or perhaps the value from the session as?the label of the synchronized block

?

? ? ? HttpSession Methods:

getAttribute

Extracts a previously stored value from a session object.?Returns null if no value is associated with given name.

setAttribute
Associates a value with a name. Monitor changes: values?

implement HttpSessionBindingListener.

removeAttribute
Removes values associated with name.getAttributeNames
Returns names of all attributes in the session.

getId
Returns the unique identifier.

isNew
Determines if session is new to client (not to page)

getCreationTime
Returns time at which session was first createdgetLastAccessedTime
Returns time at which session was last sent from clientgetMaxInactiveInterval, setMaxInactiveInterval

Gets or sets the amount of time session should go without?access before being invalidated

invalidate
Invalidates current session

Use cookie to save session data:

?

import java.io.IOException;import java.io.PrintWriter;import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import javax.servlet.ServletException;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ShoppingCartViewerCookie extends HttpServlet {  public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException,      IOException {    res.setContentType("text/html");    PrintWriter out = res.getWriter();    String sessionid = null;    Cookie[] cookies = req.getCookies();    if (cookies != null) {      for (int i = 0; i < cookies.length; i++) {        if (cookies[i].getName().equals("sessionid")) {          sessionid = cookies[i].getValue();          break;        }      }    }    // If the session ID wasn't sent, generate one.    // Then be sure to send it to the client with the response.    if (sessionid == null) {      sessionid = generateSessionId();      Cookie c = new Cookie("sessionid", sessionid);      res.addCookie(c);    }    out.println("<HEAD><TITLE>Current Shopping Cart Items</TITLE></HEAD>");    out.println("<BODY>");    // Cart items are associated with the session ID    String[] items = getItemsFromCart(sessionid);    // Print the current cart items.    out.println("You currently have the following items in your cart:<BR>");    if (items == null) {      out.println("<B>None</B>");    } else {      out.println("<UL>");      for (int i = 0; i < items.length; i++) {        out.println("<LI>" + items[i]);      }      out.println("</UL>");    }    // Ask if they want to add more items or check out.    out.println("<FORM ACTION="/servlet/ShoppingCart" METHOD=POST>");    out.println("Would you like to<BR>");    out.println("<INPUT TYPE=SUBMIT VALUE=" Add More Items ">");    out.println("<INPUT TYPE=SUBMIT VALUE=" Check Out ">");    out.println("</FORM>");    // Offer a help page.    out.println("For help, click <A HREF="/servlet/Help"        + "?topic=ShoppingCartViewerCookie">here</A>");    out.println("</BODY></HTML>");  }  private static String generateSessionId() throws UnsupportedEncodingException {    String uid = new java.rmi.server.UID().toString(); // guaranteed unique    return URLEncoder.encode(uid,"UTF-8"); // encode any special chars  }  private static String[] getItemsFromCart(String sessionid) {    return new String[]{"a","b"};    }}

?

热点排行