【发布时间】:2016-09-13 06:37:58
【问题描述】:
我创建了一个简单的 WebMVC 应用程序 - 配置了处理程序拦截器。拦截器的职责很简单——它应该检查 HttpRequest 中是否存在有效的会话——如果是,则重定向到注册页面。
我遇到的问题是在重定向时 - 浏览器正在抛出消息:
页面未正确重定向
Firefox 检测到服务器正在重定向请求 这个地址永远不会完成。
拦截器代码如下:
public class LoginInterceptor extends HandlerInterceptorAdapter{
// to be used checking session management for user.
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
System.out.println(" <interceptor> - this is pre handle");
return true;
}
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println(" <interceptor> - this is post handle");
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
System.out.println(" <interceptor> - session id is --> " + session.getId());
System.out.println(" <interceptor> - session create time is --> " + session.getCreationTime());
System.out.println(" <interceptor> - session last accessed time is --> " + session.getLastAccessedTime());
try {
System.out.println(" <interceptor> - user info is --> " + user.toString());
}catch(Exception e){
e.toString();
}
try{
if(session != null){
response.sendRedirect("register");
return;
}
}catch(Exception e){
e.toString();
}
}
public void afterCompletetion(){
System.out.println(" <interceptor> - this is after completion");
}
}
我试图将完整的请求上下文路径附加到重定向 - 以及根上下文 - 两者都失败了。我看不出我在这方面失败的地方 - 所以非常感谢任何帮助。
【问题讨论】:
-
不确定这是否只是 C&P 问题...但请检查最后一个方法...您拼错了... public void afterComplete(){ 应该是 public void afterCompletion(){ 并且不要不要忘记使用@Override,你自己发现了问题......
-
更改为
response.sendRedirect(request.getContextPath()+"/register");
标签: java spring spring-mvc filter handler