1.session是同一瀏覽器共用的.
但是同一瀏覽器同一PC他們的session是不一樣的..
所以也就不是共用的.
但是如果你在同一台機器上,並且是 同意瀏覽器
你登入兩個使用者.? 用session儲存使用者物件。
後面的一個會把前面一個衝掉
例如
Java代碼
- public class Order
- {
- private String user;
- private String password;
- public String getUser()
- {
- return user;
- }
- public void setUser(String user)
- {
- this.user = user;
- }
- public String getPassword()
- {
- return password;
- }
- public void setPassword(String password)
- {
- this.password = password;
- }
-
- }
-
-
-
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException
- {
- Order order = new Order();
- HttpSession hs = request.getSession();
- hs.invalidate();
-
-
- String user = request.getParameter("user");
- String password =request.getParameter("password");
-
- order.setUser(user);
- order.setPassword(password);
-
- hs.setAttribute(user, order);
- response.sendRedirect("wel.jsp");
- }
public class Order{private String user;private String password;public String getUser(){return user;}public void setUser(String user){this.user = user;}public String getPassword(){return password;}public void setPassword(String password){this.password = password;}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{Order order = new Order();HttpSession hs = request.getSession();hs.invalidate();String user = request.getParameter("user");String password =request.getParameter("password");order.setUser(user);order.setPassword(password);hs.setAttribute(user, order);response.sendRedirect("wel.jsp");}
你用session儲存對象的時候就會衝掉前面的對象
當你重新整理前面登入的頁面的時候就會編程第二個登入使用者的資訊
那我們如何做到同意瀏覽器,同一PC機.登入兩個使用者呢.
我們可以根據唯一識別碼,或者使用者名稱傳遞的方式,確定登入的是不同的使用者.
因為這樣session裡面儲存的是不同的值,通過轉寄傳遞唯一使用者名稱,來取相應的對象.
但是這樣做效能並不好,因為如果有成千上萬的客戶登入,那豈不是session裡面要儲存成千上萬個屬性值
所以不可取,
很糾結的問題
修改後的代碼如下:
Java代碼
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException
- {
- Order order = new Order();
- HttpSession hs = request.getSession();
- hs.invalidate();
-
-
- String user = request.getParameter("user");
- String password =request.getParameter("password");
-
- order.setUser(user);
- order.setPassword(password);
-
- hs.setAttribute(user, order);
- response.sendRedirect("wel.jsp?u="+user);
- }
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{Order order = new Order();HttpSession hs = request.getSession();hs.invalidate();String user = request.getParameter("user");String password =request.getParameter("password");order.setUser(user);order.setPassword(password);hs.setAttribute(user, order);response.sendRedirect("wel.jsp?u="+user);}
然後我們在用使用者的時候
就可以通過過來的唯一識別碼(或使用者名稱)來從session中擷取相應的對象了
記住,你每次跳轉頁面操作的時候,都需要傳遞,因為要從session中擷取相應的對象
代碼如下:
Java代碼
- <%
- String u = request.getParameter("u");
- HttpSession hs = request.getSession();
- Order order = (Order)hs.getAttribute(u);
- out.println("user="+order.getUser());
- out.println("password="+order.getPassword());
- %>
<% String u = request.getParameter("u"); HttpSession hs = request.getSession(); Order order = (Order)hs.getAttribute(u); out.println("user="+order.getUser()); out.println("password="+order.getPassword()); %>