获取session对象的方法(使用什么方法来获得HttpSession对象)

本文目录
- 使用什么方法来获得HttpSession对象
- 怎么获取shiro中的session对象
- shiro servletcontainersessionmanager怎么获取session对象
- jsp+servlet中如何通过sessionid 获取 session 对象
- 在jsp中如何取出存放在session中的对象的某个属性
- 调用接口怎么获得session
使用什么方法来获得HttpSession对象
用request获取session里面的值的方法:
1、通过request获取session对象:request.getSession();
2、用session获取其内部的值:session.getAttribute(;valuename;);即可
怎么获取shiro中的session对象
1、Shiro默认的Session处理方式
《!-- 定义 Shiro 主要业务对象 --》
《bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"》
《!-- 《property name="sessionManager" ref="sessionManager" /》 --》
《property name="realm" ref="systemAuthorizingRealm" /》
《property name="cacheManager" ref="shiroCacheManager" /》
《/bean》
这里从DefaultWebSecurityManager这里看起,这个代码是定义的Shiro安全管理对象,看下面的构造方法(代码 1-1)
(代码 1-1)
public DefaultWebSecurityManager() {
super();
((DefaultSubjectDAO) this.subjectDAO).setSessionStorageEvaluator(new DefaultWebSessionStorageEvaluator());
this.sessionMode = HTTP_SESSION_MODE;
setSubjectFactory(new DefaultWebSubjectFactory());
setRememberMeManager(new CookieRememberMeManager());
setSessionManager(new ServletContainerSessionManager());
}
从 构造方法里面可以看出,这里面有 publicvoid setRememberMeManager(RememberMeManager rememberMeManager) 和 publicvoid setSessionManager(SessionManager sessionManager)两个方法。这两个分别是对Shiro的remembereMe功能和Session功能的管理。其中在构造方法里面可以看到,其实一开是就设置了SessionManager,就是默认的:ServletContainerSessionManager().接下来看看默认的ServletContainerSessionManager()是怎么玩转Session的.看下图。这个图显示了这个类的这些个方法
这个类通过getSession(SessionKey)获得Sesison,下面看看这个方法干了些什么(代码1-2)
(代码1-2)
publicSession getSession(SessionKey key) throws SessionException {
***隐藏网址***
String msg = "SessionKey must be an HTTP compatible implementation.";
throw new IllegalArgumentException(msg);
}
***隐藏网址***
Session session = null;
***隐藏网址***
***隐藏网址***
***隐藏网址***
}
return session;
}
可以看看注释,注释上都写好了,这里的意思是,首先判断封装好的Key是不是Http的key,如果是就继续,不是就抛异常.key这个是带了ServletRequest和ServletResponse的WebSessinKey,具体怎么new出来的,看DefaultWebSecurityManager的这方法代码就知道了(代码1-3),这里里,将Request和Response还有sessionId传递进去
(代码1-3)
@Override
protected SessionKey getSessionKey(SubjectContext context) {
if (WebUtils.isWeb(context)) {
Serializable sessionId = context.getSessionId();
ServletRequest request = WebUtils.getRequest(context);
ServletResponse response = WebUtils.getResponse(context);
return new WebSessionKey(sessionId, request, response);
} else {
return super.getSessionKey(context);
}
}
因为继承了 org.apache.shiro.session.mgt.DefaultSessionKey ,这个类是实现了SessionKey这个接口。
看看createSession这个方法,这个方法就是将传入的HttpSession和host传进去,封装成Shiro的HttpServletSession (代码 1-4)
(代码1-4)
***隐藏网址***
***隐藏网址***
}
关于默认的Session管理器,最后还看一下HttpServletSession这个类,就看一下的几个方法,还有些方法是没有放出来的,可以明显的看出,Shiro使用了一个叫Session的接口,但这个接口是和HttpSession的接口一模一样,就是通过HttpSession这个接口获得Session的功能(代码1-5)
(代码1-5)
public class HttpServletSession implements Session {
***隐藏网址***
***隐藏网址***
***隐藏网址***
String msg = "HttpSession constructor argument cannot be null.";
throw new IllegalArgumentException(msg);
}
***隐藏网址***
String msg = "HttpSession constructor argument cannot be an instance of ShiroHttpSession. This " +
"is enforced to prevent circular dependencies and infinite loops.";
throw new IllegalArgumentException(msg);
}
***隐藏网址***
if (StringUtils.hasText(host)) {
setHost(host);
}
}
……………………
……………………
………………
public Object getAttribute(Object key) throws InvalidSessionException {
try {
***隐藏网址***
} catch (Exception e) {
throw new InvalidSessionException(e);
}
}
public void setAttribute(Object key, Object value) throws InvalidSessionException {
try {
***隐藏网址***
} catch (Exception e) {
throw new InvalidSessionException(e);
}
}
………………
………………
}
默认的模式就描述到这里
shiro servletcontainersessionmanager怎么获取session对象
1、可以通过HttpServletRequest的getSession()方法获得,此方法会返回一个布尔值来表示是否成功得到了Session。 2、尝试获得键名为逗VisitCounter地的session值,将获得的值转换为Integer对象。 3、如果是空则说明session还没有设置
jsp+servlet中如何通过sessionid 获取 session 对象
不需要写手动写SessionID:
代码如下:
HttpSession sesion = Request.getSesion();
if(session!=null){
//如果sessionID不等于空,则说明是第二次访问
//写第二次访问时的代码
}else{
//写第一次访问的代码
}
java web怎么通过sessionid得到session这个我们不需要了解,就是第二次客户端发出请求时,将sessionid也发给了服务器,服务器根据这个唯一的ID找到相应的session(session都是保存在服务器的数据库中,每个session用唯一一个ID所标识)
可以用session.getAttribute(String name)的到session对象
在jsp中如何取出存放在session中的对象的某个属性
jsp中可以通过session的内置方法:getAttribute("属性名");来获取某个属性。
session对象常用方法
getId():返回一个唯一的标识,这些标识为每个session而产生。当只有一个单一的值与一个session联合时,或当日志信息与先前的session有关时,它被当做键名使用。
getCreationTime():返回session被创建的时间。
getLastAccessedTime():返回session最后被客户发送的时间。最小单位为毫秒(ms)。
getMaxInactiveInterval():返回总时间(秒),负值表示session永远不会超时。
getAttribute(String key):通过指定的关键字获取一个存储在session中相应的信息。例如:Integer item =(Integer) session.getAttribute("item")。
setAttribute(String key, Object obj):提供一个关键词和一个对象值,然后存在session当中。例如:session.setAttribute(“item”,itemName)。
调用接口怎么获得session
***隐藏网址***
" prefix="fn"%》 《c:if test="${fn:contains(sessionScope,’sys’)}"》 如果是sys类型用户。。。。 《/c:if》

本文相关文章:
结构体数组变量赋值(在某个函数中,对结构体数组赋值,如何在其他函数中使用结构体数组中的数据,最好用例子说明一下)
2026年9月24日 06:45
subplot position(matlab,使用subplot时添加总title的方法)
2026年9月19日 00:45
websocket同步模块易语言(使用易语言,怎么写才能和局域网内的电脑时间同步)
2026年9月18日 16:00
flash特效文字(如何使用Flash制作逐渐显示的文字动画)
2026年9月18日 15:45
html文本标签属性标签(如何使用HTML的title属性)
2026年9月16日 19:30
易语言程序需要注册才能使用(易语言程序限制使用次数怎样运行一次注册项的数值减1,到0时程序必须注册)
2026年9月15日 03:30
更多文章:
如何用纯CSS实现接扎啤的特效(附源码)?如何使用纯CSS实现从按钮两侧滑入装饰元素的悬停特效(附源码)
2026年7月16日 02:15
adodb连接oracle数据库的server属性(如何用adodc和datagird连接数据库)
2025年11月10日 18:00
hadoop集群搭建公平(VMware搭建完全分布式Hadoop集群)
2025年10月3日 16:15
设计公司网站源码(别人给我们公司建的网站,我们没有源代码能自己设计吗)
2026年8月9日 01:15
汇编语言延时程序怎么写(用8086汇编语言,编写延时子程序)
2025年6月20日 23:30
ai基础教程入门视频(哪里有一些比较全面的ai教程,视频的,一定要全面)
2026年9月18日 22:30
网站在线客服系统怎么申请(企业自己做网站,怎么添加’在线客服系统呢)
2026年9月6日 22:15
equivalent英文(请问:等于,不等于,大于,小于,大于等于,小于等于的英文English是什么)
2025年10月21日 16:15
myeclipse注册码在哪里输入(myeclipse10,需要注册码怎么办)
2025年9月20日 12:30










