在拦截器中使用Struts2会话,为什么它永远不会为null?

时间:2013-12-05 11:51:10

标签: session struts2

我使用Struts2框架,我有一个自定义拦截器。拦截器堆栈是defaultStack +我在底部的自定义拦截器(在操作之前)。在拦截方法中,我使用以下代码:

final ActionContext context = invocation.getInvocationContext ();
HttpServletRequest request = (HttpServletRequest) context.get(StrutsStatics.HTTP_REQUEST);
HttpSession session = request.getSession(true);

session.doSomething();

我想知道为什么使用的方法不会抛出任何异常,为什么没有必要检查if(session != null)。这些方法不可能无法获得实例化的会话吗?为什么? servlet-config拦截器与此有什么关系吗?如果会话 可以null,那会发生什么样的情况呢?

1 个答案:

答案 0 :(得分:2)

会话很少为空,因为:

  1. 除非特别配置,否则访问任何JSP页面都会创建一个会话,并且
  2. 您正在呼叫getSession(true)which creates a session if one doesn't exist
  3. 如果你在一个不会自动创建会话 的环境中运行,你可以添加一个"createSession"拦截器。 "servletConfig"没有直接参与。