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

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");
	}
 

 

 

 

你用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);
	}
 


然后我们在用用户的时候

就可以通过过来的唯一标识符(或用户名)来从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());
  		 %>
 





















.

 

你可能感兴趣的:(Servlet/JSP)