Wicket中会话管理HttpSession

本文详细介绍了Wicket框架中Session的概念及其与HTTP Session的区别,并提供了两种实现会话管理的方法:使用httpServletSession和自定义WebSession类。同时,文章还演示了如何在Wicket开发中利用这些Session进行会话信息的存储和管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近用Wicket框架,要用到session,而Wicket中定义的session与以前常说的session(HttpSession)是不一样。

具体解释摘录《Wicket开发指南》:

Wicket中的Session是指每一个Application中所拥有的数据,离开这个Application,如转向一个网站内部html,或者另一个Application,相应的Session就会无效。

而HttpSession完全不同,它保存的是用户在访问一个网站期间的会话信息。

OK,在Wicket开发时,我们也会用到HttpSession进行会话管理,网上找了一些前辈的资料,再加上自己总结了一下。

有两种方式可以实现:

第一种,使用httpServletSession

    设置httpServletSession:

HttpServletRequest request=getWebRequestCycle().getWebRequest().getHttpServletRequest(); 
request.getSession().setAttribute("username", username);

   获取 httpServletSession

HttpServletRequest request=getWebRequestCycle().getWebRequest().getHttpServletRequest();
 
String userLoginName = (String) request.getSession().getAttribute("username");

第二种,Wicket中提供了一个WebSession类,我们只需要继承WebSession,就可以写我们自己的Session类

   MySession类:

public class MySession extends WebSession{
	
	private String username;
	private String department;
	private String rolename;
	private int userid;
	
	public MySession(Request request){
		
		super(request);
	}
	
	/*
	 * 获得session
	 */
	public MySession session(){
		return (MySession)Session.get();
	}
	/*
	 * 销毁session
	 */
	public void sessionInvalidate(){
		this.session().invalidate();
	}		
	public String getUsername () {
		return userid;
	}
	public void setUserid(String username) {
		this.username = username;
	}


覆写WebApplication中的newSession方法:

public MySession newSession(Request request, Response response) {
		        return new MySession(request);
		}
Application就自动给MySession添上Request对象。

注意,Wicket的Session是由Wicket的Application绑定的,因此MySession只会存活在这个WebApplication里面。

最后,调用Session:

设置session:

MySession mySession = (MySession) super.getSession(); 
 mySession.session().setUsername(username);
获取session:

MySession mySession = (MySession) super.getSession();
String department = mySession.session().getDepartment();
销毁session:

MySession mySession = (MySession) super.getSession();
mySession.session().sessionInvalidate();


完成!

第二种方案是比较好的,Wicket自身的WebSession中,就使用了HttpSession,直接调用方法就行!







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值