下图是配置文件 <!-- 拦截器设置,处理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”);的时候,不会发生跳转 一点反应都没有 求指点。 |
|
@类上面挂上@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判断返回值是否跳转。
|
这样的话很麻烦,有很多异步调用 |
|
15分 |
你发AJAX是用的JS框架还是原生态的?
|
自己重写了ajax的方式,对返回值进行了加工处理,弄成自己想要的 |
|
很有可能是转发的时候路径不对:试试String path = request.getContextPath();
response.sendRedirect(path+”/login.jsp”); |
|
login.html是实现跳转到login.jsp页面的吗?
可不可以在拦截器中先返回json数据到Ajax中,在页面的js判断是否有错误,让后利用js跳转到login.html |
|
只有js判断
|
|
类上加上@Repository
|