如何在使用Spring MVC时使用send.redirect()

前端之家收集整理的这篇文章主要介绍了如何在使用Spring MVC时使用send.redirect()前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我试图从Interceptor和Handler Mapping程序重定向到动态页面.我已经定义了一个控制器,它通过模型处理和重定向(/hello.htm)(我的程序中只有这个控制器).在此之前,它工作正常.除此之外,我注册了一个处理程序,一旦满足某些条件,它将重定向页面.

public class WorkingHoursInterceptor extends HandlerInterceptorAdapter  {
@Override
public boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handler) throws Exception {
    System.out.println("In Working Hours Interceptor-pre");
    Calendar c=Calendar.getInstance();
    if(c.get(Calendar.HOUR_OF_DAY)<10||c.get(Calendar.HOUR_OF_DAY)>20){
        response.sendRedirect("/WEB-INF/jsp/failure.jsp");
                        return false;
    }
    return true;
..............
..............
} 

但是一旦涉及到response.sendRedirect,即使提到的页面存在,它也显示未找到的资源.我试图重定向到“WEB-INF / jsp / hello.jsp”,但仍然显示相同的错误.如果不满足拦截器中的条件,则程序正常.

下面显示了程序中唯一存在的控制器.

@Controller
public class MyController {
@RequestMapping("/hello.htm")
public ModelAndView sayGreeting(){
    String msg="Hi,Welcome to Spring MVC 3.2";
    return new ModelAndView("WEB-INF/jsp/hello.jsp","message",msg);

    }

}

(如果我改变拦截器条件,处理hello.html的控制器工作正常)

如果我只是在控制台中打印一条消息,该程序可以正常工作,而不是重定向.但是一旦涉及到重定向,就会显示错误.我是否需要指定一个单独的控制器来处理此请求?这个重定向请求会转到dispatcher-servlet吗?

最佳答案
您需要在视图名称添加redirect:前缀,重定向代码如下所示:

@RequestMapping(value = "/redirect",method = RequestMethod.GET)
   public String redirect() {

      return "redirect:finalPage";
   }

要么

@RequestMapping(value = "/redirect",method = RequestMethod.GET)
public ModelAndView redirect() {

  return new ModelAndView("redirect:finalPage");
}

您可以从这里获得详细说明:
enter link description here

猜你在找的Spring相关文章