我正在尝试使用 Spring 的“转发:”前缀将从一个控制器收到的请求转发到第二个控制器。但是,不是像我期望的那样将请求转发到第二个控制器,而是由第一个控制器一遍又一遍地处理请求(直到我收到 StackOverflowError)。这让我认为它可能会将“/app/pong”视为某种相对路径,但我不确定为什么会这样。我是否误解了“前进:”应该如何工作?有什么我在这里想念的吗?
控制器:
@Controller
public class ControllerOne {
@RequestMapping(value = "/ping", method = RequestMethod.GET)
public String doPing(HttpServletRequest request) {
log.debug("Ping?");
return "forward:/app/pong";
}
}
@Controller
public class ControllerTwo {
@RequestMapping(value = "/pong", method = RequestMethod.GET)
public String doPong(HttpServletRequest request) {
log.debug("Pong!");
return "pong";
}
}
servlet 映射:
<servlet-mapping>
<servlet-name>test-servlet</servlet-name>
<url-pattern>/app/*</url-pattern>
</servlet-mapping>
查看解析器:
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>