【发布时间】:2016-06-29 09:11:41
【问题描述】:
我试图从会话中获取价值但失败了。 Session 中的值已在 JSP 页面中成功设置,但无法在 Java 类中检索。 请帮忙解决:
下面是sn-p代码:
servlet-context.xml 文件中的拦截器条目:
<interceptor>
<mapping path="/**" />
<exclude-mapping path="/tabservice/pdfCreation/**"/>
<beans:bean class="com.mastek.ems.filter.ExecuteTimeInterceptor"></beans:bean>
</interceptor>
在jsp页面中设置会话值: index.jsp
//intiate session and set value
request.getSession(true).setAttribute("user", "my_user");
System.out.println("inside jsp : ssn.getAttrbute : " + request.getSession(false).getAttribute("user"));
errorPage = false;
if(!errorPage){
String encStr = "encodeValue";
response.sendRedirect("http://localhost/Test/index.html#detailsPage?en1="+encStr);
} else {
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/Error.jsp");
dispatcher.forward(request, response);
}
尝试获取 Interceptor 中的值: 执行时间拦截器:
System.out.println("Session Object:"+request.getSession(false)); // Prints null
System.out.println("Session ObjectID1:"+request.getSession(false).getId()); // Throws NullPointerException
long startTime = System.currentTimeMillis();
if(request.getSession(false) != null){
System.out.println("inside if : Ssn Data:"+request.getSession(false).getAttribute("user"));
if( request.getSession(false).getAttribute("user") != null ){
request.setAttribute("startTime", startTime);
System.out.println("Start Time::with Valid Session:1:"+(new SimpleDateFormat("dd/MM/YYYY:hh:mm:ss:SSSS")).format(new Date(System.currentTimeMillis())));
return true;
}
} else{
System.out.println("Start Time::with Invalid Session::"+(new SimpleDateFormat("dd/MM/YYYY:hh:mm:ss:SSSS")).format(new Date(System.currentTimeMillis())));
}
request.setAttribute("startTime", startTime);
Utility.setResponseError(response, "sessiontimedout");
return false;
【问题讨论】:
-
很难猜,但我假设一个页面在会话创建之前触发了拦截器。当会话为空时,您应该在拦截器中显示
request.getRequestURL()。
标签: java jsp spring-mvc session