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

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

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

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

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

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

  1. @Controller
  2. public class MyController {
  3. @RequestMapping("/hello.htm")
  4. public ModelAndView sayGreeting(){
  5. String msg="Hi,Welcome to Spring MVC 3.2";
  6. return new ModelAndView("WEB-INF/jsp/hello.jsp","message",msg);
  7. }
  8. }

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

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

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

  1. @RequestMapping(value = "/redirect",method = RequestMethod.GET)
  2. public String redirect() {
  3. return "redirect:finalPage";
  4. }

要么

  1. @RequestMapping(value = "/redirect",method = RequestMethod.GET)
  2. public ModelAndView redirect() {
  3. return new ModelAndView("redirect:finalPage");
  4. }

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

猜你在找的Spring相关文章