控制器在Spring-MVC中反复调用自身

时间:2011-01-19 05:26:41

标签: java spring spring-mvc

我试图只是直接写入响应对象来输出我的请求。这对servlet非常有用,但是对于Spring-MVC,由于某些我无法理解的原因,我最终创建了一个无限循环。基本上控制器只是被反复调用。我甚至都不知道这是怎么可能的。

public ModelAndView handleRequest(
        HttpServletRequest request, HttpServletResponse response )
        throws ServletException, IOException
{
    System.out.println("I will get called infinitely");
    response.getWriter().print( "Hello World!");
    response.getWriter().close();
    return new ModelAndView();

}

所以问题是,是否有人知道为什么它会对此页面产生无限量的重新请求?它似乎只发生在我创建一个没有任何内容的ModelAndView()时。但在这种情况下,我不想要任何东西,只是一个空白页面。那么其次是否有办法实现这一目标?

2 个答案:

答案 0 :(得分:4)

尝试返回null而不是ModelAndView,并致电flush()而不是close()。像这样,

public ModelAndView handleRequest( HttpServletRequest request, HttpServletResponse response )
        throws ServletException, IOException {

    System.out.println("I will get called infinitely");
    response.getWriter().print( "Hello World!");
    response.getWriter().flush();
    return null;    
}

注意:我不确定close()是否会提交responseflush()是否会提交。

答案 1 :(得分:1)

ModelAndView类的空viewName可能会导致使用当前请求的视图。

您可以使用void@ResponseBody String作为返回类型。