Code Bye

Spring MVC 执行response.sendRedirect不跳转

下图是配置文件

<!-- 拦截器设置,处理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)

一点反应都没有

求指点。

@类上面挂上@Controller 

方法上面挂上@RequestMapping(“/xx/xxx”)


15分
哦 看错了 原来是filter

20分
看一下你的逻辑是否正解?
if (null != session) {
            //request.getRequestDispatcher(“/login.html”).forward(request, response);
            response.sendRedirect(“/login.html”);
            return false;
        }
这里执行了吗?
楼上几位,我可以确定,这个拦截器是把所有请求都拦截了的,方法里面的跳转也是执行了的
我在debug下是跟踪了的哈
执行了
if (null != session) {
            //request.getRequestDispatcher(“/login.html”).forward(request, response);
            response.sendRedirect(“/login.html”);
            return false;
        }
你看我写法null != session,就是登陆以后,存了session,session是不为null的,里面是会走的,这个只是为了测试 所以写成了null != session,后面自己会改逻辑,现在纠结的不是逻辑,而是跳转哦。。。他就是不跳啊
晕,现在我找到原因了,是由于请求都是ajax异步请求,拦截后跳转是没有办法的。。。现在原因是找到了,不知道各位有没有什么好点的建议

30分
后台返回值,js判断返回值是否跳转。
引用 7 楼 Acesidonu 的回复:

后台返回值,js判断返回值是否跳转。

这样的话很麻烦,有很多异步调用


15分
你发AJAX是用的JS框架还是原生态的?
引用 9 楼 zcwgogo 的回复:

你发AJAX是用的JS框架还是原生态的?

自己重写了ajax的方式,对返回值进行了加工处理,弄成自己想要的

很有可能是转发的时候路径不对:试试String path = request.getContextPath();
response.sendRedirect(path+”/login.jsp”);
login.html是实现跳转到login.jsp页面的吗?
可不可以在拦截器中先返回json数据到Ajax中,在页面的js判断是否有错误,让后利用js跳转到login.html
只有js判断
类上加上@Repository

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Spring MVC 执行response.sendRedirect不跳转