如果会话无效,我想重定向到主页。 我的spring-servlet.xml是
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
<mvc:interceptor>
<mvc:mapping path="/**" />
<bean class="com.xxx.MyInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
拦截器:
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
if ((null == request.getSession(false))
|| (null == request.getSession(false).getAttribute(
"user"))) {
System.out.println("user logged out...");
RequestDispatcher rd = request.getRequestDispatcher("loginForm.htm");
rd.forward(request, response);
return false;
}
return super.preHandle(request, response, handler);
}
但它不起作用...... 每当应用程序开始时,消息会被多次打印,最后它会导致堆栈溢出..
谢谢。
答案 0 :(得分:1)
似乎问题出现在您的映射路径中。由于它与/**
映射,因此您的loginForm.htm也会被截获。您有两种解决方案可以解决此问题。
定义<mvc:resources location="/resources/" mapping="/resources/**" />
以便不会拦截* .htm请求。根据* .htm文件所在的路径替换位置和映射值。
另一种选择是使用类似/*.do
或其他内容的方式更改截距中的映射。
希望这会对你有所帮助。欢呼声。