日期:2014-05-18  浏览次数:20868 次

Spring MVC 拦截器,打死不跳转
下图是配置文件

<!-- 拦截器设置,处理session超时,自动跳转到登录页面  -->
<context:annotation-config />  
<context:component-scan base-package="com"/>  
      
<mvc:interceptors>  
<bean class="com.web.controller.newController.sessionController" />  
</mvc:interceptors>   
      
<bean id="jspViewResolver"  
class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />  
        <property name="prefix" value="/WEB-INF/jsp/" />  
        <property name="suffix" value=".jsp" />  
</bean> 


下面是拦截处理


package com.web.controller.newController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import com.web.vo.UserSessionDto;

public class sessionController extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
UserSessionDto session = (UserSessionDto) request.getSession()
.getAttribute("user");
System.out.println("pre Handle-->"+(null != session));
if (null != session) {
//request.getRequestDispatcher("/login.html").forward(request, response);
response.sendRedirect("/login.html");
return false;
}
return super.preHandle(request, response, handler);
}
}


现在的情况是这样,sessionController可以拦截到所有请求,但是执行response.sendRedirect("/login.html");的时候,不会发生跳转
我也试了request.getRequestDispatcher("").forward(request, response)

一点反应都没有

求指点。
Spring MVC session 拦截器 Adapter

------解决方案--------------------
哦 看错了 原来是filter
------解决方案--------------------
看一下你的逻辑是否正解?
if (null != session) {
            //request.getRequestDispatcher("/login.html").forward(request, response);
            response.sendRedirect("/login.html");
            return false;
        }
这里执行了吗?
------解决方案--------------------
后台返回值,js判断返回值是否跳转。
--