1.session是同一浏览器共享的.
但是同一浏览器同一PC他们的session是不一样的..
所以也就不是共享的.
但是如果你在同一台机器上,并且是 同意浏览器
你登录两个用户.? 用session保存用户对象。
后面的一个会把前面一个冲掉
例如
- 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里面要保存成千上万个属性值
所以不可取,
很纠结的问题
修改后的代码如下:
- 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中获取相应的对象
代码如下:
- <%
- 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());
%>