代码如下:(Struts2的Action类,用来处理用户登录信息)
public class LoginAction
{
public String execute()
{
if(登录成功)
{
User user = new User(); //User为自定义的一个用户类
... ...
//给该user赋一些值
... ...
ServletActionContext.getRequest().getSession(true).setAttribute("user",user);
}
}
}
session中保存的是user的一个引用,还是整个user信息?
如果只是“一个引用”的 ,那么我这个user是定义在一个方法内,它的有效范围只限于这个方法。因此出了这个方法我再对它进行防问就是不安全了,是这样吗?
public class LoginAction
{
public String execute()
{
if(登录成功)
{
User user = new User(); //User为自定义的一个用户类
... ...
//给该user赋一些值
... ...
ServletActionContext.getRequest().getSession(true).setAttribute("user",user);
}
}
}
session中保存的是user的一个引用,还是整个user信息?
如果只是“一个引用”的 ,那么我这个user是定义在一个方法内,它的有效范围只限于这个方法。因此出了这个方法我再对它进行防问就是不安全了,是这样吗?
方法外安全性沒啥變化
一樣能訪問到,因為引用被傳遞了
说的不错!
(后话)当然,如果你要让变量保存user里面的数据也可以让user去实现clone这个接口,然后去调用user.clone()把user对象里的数据保存一份到user类的另一个对象userb中,这时你对userb里面数据的任何操作就都不会影响到user了.