您的位置:首页 > 其它

关于同一PC同以浏览器多个用户登录

2012-06-29 11:12 330 查看

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());
%>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐