java获取session对象(java根据sessionid获取session)
java如何通过sessionid获取session对象
这个功能老版本servlet规范中有,新版本中好像被屏蔽了。可以换一种做法,写一个session监听。创建时将session id与session对象构造一个hashMap放到 application中去,销毁时从application中移除。然后你就可以获取了。
大神们,请教下,java如何获取session的东西
一般情况下
用Session.getAttibute(String
key)来获得
Session对象
中含有的关键字是key的对象。key
是通过Session.setAttibute(String
key
,Object
obj)自己设定的一个索引关键字!Session对象怎么来的的呢
可以通过request.getSession()来获得!
所以现在就明白了:通过request.getsession()获得session
对象
再调用它的getAttibute(String
key)方法来获得含有关键字“PASSPORT_NICKNAME”的对象
例子:
UserID = (String) request.getSession().getAttribute("UserID");
如何在Java的普通类中获取Session以及request对象
你是指你的 web 项目中使用到一个工具性的类,它的形参中没有 HttpRequest 或 HttpSession 参数?
如果是这样的话,我们需要使用一个 ThreadLocal 变量,我们把当前 ?request 的变量绑定到里面,在一个 request 请求的生命周期内我们在方法调用的各个更深的层次中都可以直接使用它而不需要在每个方法中都传递这个 request 参数,保存在某个地方就容易导致因为多个请求共用同一个实例而出问题,所有 context 相关的变量不保存在任何业务类相关并且可能被多线程共用的对象实例中才是保证不会出现线程安全问题的途径。
例如,这个例子中我们只要把 web.xml 中配置好 ContextFilter 后它就会自动在请求开始时绑定一个 context,结束后自动销毁,在这中间的任何时刻我们都可以通过 MyWebContext.getCurrentContext() 得到我们的 HttpServletRequest 实例和其它相关的 context 变量:
//?MyWebContext?记录当前?Request?的所有?context?变量。因为?servlet?是一个请求绑定一个线程的,我们用?ThreadLocal?不会有线程安全问题。
class?MyWebContext?{
????private?static?final?ThreadLocal?contexts?=?new?ThreadLocal();
????
????//?拿出当前线程绑定的?context
????public?static?MyWebContext?getCurrentContext()?{
????????return?(MyWebContext)?contexts.get();
????}
????public?static?MyWebContext?createContext()?{
????????return?new?MyWebContext();
????}
????
????//?绑定一个?context?到当前线程?
????public?static?void?setContext(MyWebContext?context)?{
????????contexts.set(context);
????}
????public?static?void?clearContext()?{
????????contexts.set(null);
????}
????
????private?HttpRequest?request;
????public?void?setRequest(HttpRequest?request)?{
????????this.request?=?request;
????}
????public?HttpRequest?getRequest()?{
????????return?this.request;
????}
}
class?ContextFilter?implements?Filter?{
????public?void?doFilter(ServletRequest,?SerlvetResponse,?FilterChain?chain)?{
????????//?创建并绑定我们的?context
????????MyWebContext?context?=?MyWebContext.createContext();
????????context.setRequest(request);
????????MyWebContext.setContext(context);
????????try?{
????????????chain.doFilter(request,?response);
????????}?finally?{
????????????//?销毁?context
????????????MyWebContext.clearContext();
????????}
????}
}
class?MyToolClassWithoutRequestParameter?{
????public?static?String?getFileUploadPath()?{
????????//?其它方法只要它是工作在?servlet?请求调用键中间的某个时刻,它就肯定能拿到?Filter?绑定进去的?Request,这样我们就不必要在每次方法调用中都额外地传递一个?HttpRequest?参数,当调用层次很深时这能明显减少复杂性。
????????
????????MyWebContext?contex?=?MyWebContext.getCurrentContext();
????????
????????HttpRequest?request?=?context.getRequest();
????????
????????HttpServletContext?servletContext?=?...;
????????HttpSession?session?=?request.getSession(false);
????????...
????????
????}
}
java怎么获取session中所有的值
session是后台服务器端的变量,而js是前段脚本,在js中是没有现成的方法获取session的值的,需要通过服务器语言来获取。
比如java就可以用来获取session的值,再赋值给js变量。以jsp为例,通过:var id = '%=session.getAttribute("id")%';java代码用单引号引起来,java中字符串变量用双引号。
示例我们可以做一个jsp简单的页面显示session的值:先将session值置为Imsession,然后显示。调用jsp代码来运行。
html ?
head ?
title自定义浏览页面/title ?
script type="text/javascript" ? ?
function x(){
%session.setAttribute("id","Imsession");%
var id = '%=session.getAttribute("id")%'; ?
alert("session是"+id);
} /script ?
/head ?
body ?
input type ="button" onClick="javascript:x();" value="session" ? ? ?
/body ?
/html ?
这样就可以获取所有数值了。
如何在java普通类中获取session
在Servlet或者是在Struts1中获取当前用户的Session方法是:
HttpSession?session?=?request.getSession(true);
注意:request的类型是:HttpServletRequest.?
如果是在Struts2中的Action中获取Session.方法是:
Map?session?=?ActionContext.getContext().getSession();
JAVA中怎么使用session
不考虑框架下,在JAVA中使用session
大概有以下几种使用方法:
1、前台设置:利用jsp的内置对象session进行设置。
%
session.setAttribute("username",?username);
%
2、后台设置:
(1)Filter设置:
public?class?MyFilter?implements?Filter?{
@Override
public?void?doFilter(ServletRequest?arg0,?ServletResponse?arg1,?FilterChain?chain)?throws?IOException,?ServletException?{
//把请求和响应对象强制转换为HttpServlet域对象
HttpServletRequest?request?=?(HttpServletRequest)arg0;
HttpServletResponse?responce?=?(HttpServletResponse)arg1;
HttpSession?session?=?request.getSession(false);
session.setAttribute("username",?username);
}
}
(2)Servlet设置:
public?class?MyServlet?extends?HttpServlet?{
//doGet()与doPost()任选
public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)?throws?ServletException,?IOException?{
//创建session对象
HttpSession?session?=?request.getSession(false);
session.setAttribute("username",?username);
}
}
扩展资料:
Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session
对象存储特定用户会话所需的属性及配置信息。
这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session
对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。
当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web
服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。
Session
对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在 Session 对象中。
有关使用
Session 对象的详细信息,请参阅“ASP 应用程序”部分的“管理会话”。注意 会话状态仅在支持 cookie 的浏览器中保留。
session的工作原理:
1、当一个session第一次被启用时,一个唯一的标识被存储于本地的cookie中。
2、首先使用session_start()函数,PHP从session仓库中加载已经存储的session变量。
3、当执行PHP脚本时,通过使用session_register()函数注册session变量。
4、当PHP脚本执行结束时,未被销毁的session变量会被自动保存在本地一定路径下的session库中,这个路径可以通过php.ini文件中的session.save_path指定,下次浏览网页时可以加载使用。
参考资料:百度百科 ------ session