在Servlet或者是在Struts1中获取当前用户的Session方法是:
);注意:request的类型是:>Map session = ActionContextgetContext()getSession();
String sessionId=requestgetSession()getId();
首先要获得request对象,然后调用getSession()方法。
Session直接翻译成中文比较困难,一般都译成时域。在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。以及如果需要的话,可能还有一定的 *** 作空间。
具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到关闭这个网站所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。
需要注意的是,一个Session的概念需要包括特定的客户端,特定的服务器端以及不中断的 *** 作时间。A用户和C服务器建立连接时所处的Session同B用户和C服务器建立连接时所处的Session是两个不同的Session。
session的工作原理
(1)当一个session第一次被启用时,一个唯一的标识被存储于本地的cookie中。
(2)首先使用session_start()函数,PHP从session仓库中加载已经存储的session变量。
(3)当执行PHP脚本时,通过使用session_register()函数注册session变量。
(4)当PHP脚本执行结束时,未被销毁的session变量会被自动保存在本地一定路径下的session库中,这个路径可以通过phpini文件中的sessionsave_path指定,下次浏览网页时可以加载使用。
曾经有多少人因为不知如何在业务类中获取自己在Action或页面上保存在Session中值,当然也包括我,但是本人已经学到一种办法可以解决这个问题,来分享下,希望对你有多多少少的帮助!
前期准备:创建一个项目,并配置好一些需要的文件。
创建好项目后就创建一个类RequestFilter。
创建RequestFilter类是需要继承一接口,必须是javaxservlet包下的Filter接口。
创建好后在RequestFilter中创建线程:
//创建线程
threadLocalRequest、threadLocalResponse
在doFilter()方法中写
//把request、response传入
import javaioIOException;
import javaxservletFilter;
import javaxservletFilterChain;
import javaxservletFilterConfig;
import javaxservletServletException;
import javaxservletServletRequest;
import javaxservletServletResponse;
import javaxservlet>
首先我不是什么高手
第二你弄错了。
session不是记录其中一个框架的信息,而是记录整个网页对话的信息。
你使用iframe划分页面,当session过期时,刷新其中一个,如果你的页面写了安全机制,当然会跳到登陆页面。但这时候你没尝试着单独刷新iframe中的其他块区?如果你的每个填入iframe的页面都写了安全机制,那它们会分别跳到登陆页面,实际上也就是session都过期了。你的页面会变成很多一块一块的登陆页面拼起来。
楼上的方法虽然可用,但依旧是不推荐的。为什么 虽然你的那个已经点击过的页面重新登陆刷新了,但其实其他块区的你没发现过期的页面还处在上一个过期的session中,互相传递的信息会很容易错乱。
最好的解决办法。是你通过控制父容器安全刷新。
比如,你iframe是一个在一级页面父容器下的二级ifame中,那你就应该在你检测到本页面session过期的同时,让你的父级容器跳转到登陆页面。这样实际上你的整个页面都已正确跳转。确保了安全管理,也不会让页面变的很奇怪。
第一方法:直接不用session了,改成用cookie实现,这个方法缺点就是如果客户端禁用了cookie则程序的部分功能不能实现,不过能禁用cookie的一般都是开发人员。。。
第二方法:写一个类似“seesion中央处理器”的公共处理部分,独立于两个系统之外,一般单独放到一个服务器里面。。原理:A系统产生session之后,存放到了“seesion中央处理器”这个容器里面,B系统可以到这个容器里面取A系统之前创建好的那个session。。。
一般情况下 用SessiongetAttibute(String key)来获得Session对象中含有的关键字是key的对象。key 是通过SessionsetAttibute(String key ,Object obj)自己设定的一个索引关键字!Session对象怎么来的的呢 可以通过requestgetSession()来获得!
所以现在就明白了:通过requestgetsession()获得session 对象 再调用它的getAttibute(String key)方法来获得含有关键字“PASSPORT_NICKNAME”的对象
例子:
UserID = (String) requestgetSession()getAttribute("UserID");session是后台服务器端的变量,而js是前段脚本,在js中是没有现成的方法获取session的值的,需要通过服务器语言来获取。
比如java就可以用来获取session的值,再赋值给js变量。以jsp为例,通过:var id = '<%=sessiongetAttribute("id")%>';java代码用单引号引起来,java中字符串变量用双引号。
示例我们可以做一个jsp简单的页面显示session的值:先将session值置为Imsession,然后显示。调用jsp代码来运行。
<html>
<head>
<title>自定义浏览页面</title>
<script type="text/javascript">
function x(){
<%sessionsetAttribute("id","Imsession");%>
var id = '<%=sessiongetAttribute("id")%>';
alert("session是"+id);
} </script>
</head>
<body>
<input type ="button" onClick="javascript:x();" value="session">
</body>
</html>
这样就可以获取所有数值了。
以上就是关于如何在java普通类中获取session全部的内容,包括:如何在java普通类中获取session、java如何获取sessionid、如何在Java的普通类中获取Session以及request对象等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)