Java 控制器在Spring MVC中重复调用自身

Java 控制器在Spring MVC中重复调用自身,java,spring,spring-mvc,Java,Spring,Spring Mvc,我试图通过直接写入响应对象来输出请求。这对servlet非常有效,但对于SpringMVC,我最终创建了一个无限循环,原因我不明白。基本上,控制器只是被反复调用。我甚至不知道这怎么可能 public ModelAndView handleRequest( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { Syst

我试图通过直接写入响应对象来输出请求。这对servlet非常有效,但对于SpringMVC,我最终创建了一个无限循环,原因我不明白。基本上,控制器只是被反复调用。我甚至不知道这怎么可能

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时发生。但在这种情况下,我不想要任何东西,只是一个空白页。那么第二种方法是什么呢?

尝试返回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是否会提交响应,但是flush会提交响应。

尝试返回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是否会提交响应,但flush会提交响应。

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


您可以使用void或@ResponseBody字符串作为返回类型。

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


您可以使用void或@ResponseBody字符串作为返回类型。

这取决于您的视图技术以及视图解析器的设置方式。是JSP吗?您是否在dispatcher servlet中手动配置了任何视图解析程序?这取决于您的视图技术以及视图解析程序的设置方式。是JSP吗?您是否在dispatcher servlet中手动配置了任何视图解析器?