在servlet中获取session的方法是?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在servlet中获取session的方法是?相关的知识,希望对你有一定的参考价值。
HttpSession.session = request.getSession();
还是HttpSession.session = request.getHttpSession(true);?
这样,没有.
request.getSession() 自动调用了 request.getSession(true)而已 参考技术A public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
response.setContentType("text/html");
PrintWriter out = response.getWriter();
//通过request得到session
request.getSession().setAttribute(arg0, arg1);
如何获取handler里的session
在自定义类库CS文件里使用System.Web.HttpContext.Current.Session获取Session时提示错误:未将对象引用设置到对象的实例。一般情况下通过这种方式获取Session值不会有问题,不过应特别注意要使用session必须要page_load方法执行以建立了page对象以后才有session的使用目标,此时先检测Session是否为Null再调用值是不会提示错误的。如果直接在Page页面中定义一个全局变量取Session的值就会提示未设置实例的错误!使用Application,Cookie同理也需注意这个问题。在ASHX一般处理程序文件中如需调用Session必须继承System.Web.SessionState.IRequiresSessionState接口,才能实现Session读写!System.Web.SessionState的接口介绍:IReadOnlySessionState指定目标 HTTP处理程序只需要具有对会话状态值的读访问权限。这是一个标记接口,没有任何方法。IRequiresSessionState指定目标 HTTP处理程序需要对会话状态值具有读写访问权。这是一个标记接口,没有任何方法。自定义 HTTP 处理程序,从IHttpHandler继承,在写System.Web.HttpContext.Current.Session["Name"]的时候没有问题,但想将这个Session写到某个变量时,发现Session的值为NULL;MSDN中的解决方法为:“在自定义 HTTP 处理程序中实现 IRequiresSessionState 接口,以确定处理程序是否需要对会话状态值具有读写访问权”,在自定义的类上加上该接口后,Session值获取正常。例子:ashx文件要使用Session,必须实现Session接口;using System;using System.Web;using System.Web.SessionState; //第一步:导入此命名空间public class 类名 : IHttpHandler ,IRequiresSessionState //第二步:实现接口 到此就可以像平时一样用Session了 参考技术A 在自定义类库CS文件里使用System.Web.HttpContext.Current.Session
获取Session时提示错误:
未将对象引用设置到对象的实例。
一般情况下通过这种方式获取Session值不会有问题,不过应特别注意要使用session必须要
page_load方法执行以建立了page对象以后
才有session的使用目标,此时先检测Session是否为Null再调用值是不会提示错误的。
如果直接在Page页面中定义一个
全局变量取Session的值就会提示未设置实例
的错误!使用Application,Cookie同理也需注意这个问题。在ASHX一般处理程序文件中如需调用Session必须继承
System.Web.SessionState.IRequiresSessionState
接口,才能实现Session读写!
System.Web.SessionState的接口介绍:
IReadOnlySessionState
指定目标 HTTP
处理程序只需要具有对会话状态值的读访问权限。这是一个标记接口,没有任何方法。
IRequiresSessionState
指定目标 HTTP
处理程序需要对会话状态值具有读写访问权。这是一个标记接口,没有任何方法。
自定义 HTTP 处理程序,从IHttpHandler继承,在写System.Web.HttpContext.Current.Session["Name"]的时候没有问题,但想将这个Session写到某个变量时,发现Session的值为NULL;MSDN中的解决方法为:“在自定义 HTTP 处理程序中实现 IRequiresSessionState 接口,以确定处理程序是否需要对会话状态值具有读写访问权”,在自定义的类上加上该接口后,Session值获取正常。例子:
ashx文件要使用Session,必须实现Session接口;
using System;
using System.Web;
using System.Web.SessionState; //第一步:导入此命名空间
public class 类名 : IHttpHandler ,IRequiresSessionState //第二步:实现接口 到此就可以像平时一样用Session了
以上是关于在servlet中获取session的方法是?的主要内容,如果未能解决你的问题,请参考以下文章