我写了一个test类继承HttpSessionBindingListener,他不用在xml中配置,但是我需要在jsp中触发此事件
我不知道该怎么做,请指教指教吧!
session.setAttribute("uname",new test());
我怎么把我的uname值传进去?
session.setAttribute("uid",new test()); 这样只是将"uid" 绑定到HttpSessinBindingListener上去了..但是我这个SESSION uid还没有值啊...
如果说我要保存一个用户SESSION UID 肯定有一个相应的值是吧..
int uid=integer.praseInt(session.getAttribute("uid").toString);
问题就在这里...当初绑定的时候没有给 uid 赋值
其实是一个很简单的事情.可能是我没有描述清楚吧
一般我们定义一个SESSION
session.setAttribute("uid",188);
然后用的时候
int uid=integer.praseInt(session.getAttribute("uid").toString);
得到的uid 值为188
而用 HttpSessinBindingListener
session.setAttribute("uid",new test());
当取值时
String uid=session.getAttribute("uid").toString
得到的是一个对象.而不是我要的UID 188
不知道这回你明白了没有? 我QQ 827798208
如果 用构造方法
session.setAttribute("uid",new test(188));
这样,又怎么得到
uid=integer.praseInt(session.getAttribute("uid").toString);
值为188呢?
我也快晕了..
晕。。原来我加错qq了。。 :shock:
[quote]Session 代表客户的会话过程,客户登录时,往 Session 中传入一个对象,即可跟踪客户的会话。在 Servlet 中,传入 Session 的对象如果有一个实现 HttpSessionBindingListener 接口的对象(方便起见,此对象称为监听器),则在传入的时候(即调用 HttpSession 对象的 setAttribute 方法的时候)和移去的时候(即调用 HttpSession 对象的 removeAttribute 方法的时候或 Session Time out 的时候) Session 对象会自动调用监听器的 valueBound 和 valueUnbound 方法(这是 HttpSessionBindingListener 接口中的方法)。[/quote]
我听不懂你说的把uname的值传进去是什么意思?
在session中调用setattribute之类的操作的时候,就会调用test实现的那几个valueBound的方法。。不知你说的是怎样的?
[quote]public interface HttpSessionBindingListener
extends java.util.EventListener
Causes an object to be notified when it is bound to or unbound from a session. The object is notified by an HttpSessionBindingEvent object. This may be as a result of a servlet programmer explicitly unbinding an attribute from a session, due to a session being invalidated, or due to a session timing out. [/quote]
会触发的方法,例如valueBound(HttpSessionBindingEvent event) 带了个event的参数,是个HttpSessionBindingEvent的对象,查看api,可以知道有
[quote]
getName()
Returns the name with which the attribute is bound to or unbound from the session.
getSession()
Return the session that changed.
getValue()
Returns the value of the attribute that has been added, removed or replaced.[/quote]
这里可以获取到绑定到session的变量名,绑定的session,这个绑定的对象。。跟这个接口考量的对象是一致的。。不知你是想干嘛?
[quote]session.setAttribute("uid",new test()); 这样只是将"uid" 绑定到HttpSessinBindingListener上去了..但是我这个SESSION uid还没有值啊... [/quote]
我都看晕了。。
getAttribut的时候取出来的是当初new test()的对象来的。。
真是看不懂你想干嘛?
貌似加不到你qq。。。。
[quote]如果 用构造方法
session.setAttribute("uid",new test(188));
这样,又怎么得到
uid=integer.praseInt(session.getAttribute("uid").toString);
值为188呢?
[/quote]
你自己弄糊涂了把。。。
假设Test t = new Test(188);
t = (Test)session.getAttribute("uid")
这里取到的是t对象。。
根据t对象来取得188才对呀。。。你干嘛老想着取到的是一个数字呢?
你说的问题好像跟HttpSessionBindingListener 也没什么关系呀。。
[code="java"]public class Test
{
int a;
//get and set
}
Test t = new Test();
t.setA(188);
session.setAttribute("uid", t);
Test t2 = (Test)session.getAttribute("uid");
t2.getA(); //188[/code]
我真的不明白你想干什么?