SpringMVC控制器能否同时返回HttpServletResponse和视图?
我现有的代码如下:SpringMVC控制器能否同时返回HttpServletResponse和视图?,spring,servlets,spring-mvc,Spring,Servlets,Spring Mvc,我现有的代码如下: String myController(@PathVariable someId, ModelMap map){ .... return "myViewName"; } 现在我想在某些情况下设置cookie,所以我需要获得HttpServletResponse对象。我可以将这样的响应obj添加到参数列表中,并在控制器中对其进行操作吗? 如果是这样,我想知道我自己的响应如何与解析“myViewName”的JSP生成的响应相协调 @RequestMapping public S
String myController(@PathVariable someId, ModelMap map){
....
return "myViewName";
}
现在我想在某些情况下设置cookie,所以我需要获得HttpServletResponse对象。我可以将这样的响应obj添加到参数列表中,并在控制器中对其进行操作吗?
如果是这样,我想知道我自己的响应如何与解析“myViewName”的JSP生成的响应相协调
@RequestMapping
public String myController(@PathVariable someId, ModelMap map, HttpServletResponse response) {
// Do what you need to do on the response, like set a cookie
return "myViewName";
}
关于您的另一个问题:“我自己的响应如何与解析“myViewName”的JSP生成的响应相协调。” 当您返回一个视图(比如“myViewName”)时,它将被解析为一个特定的资源(JSP视图、JSON视图或任何其他视图)。根据返回的内容获取该视图资源后,该视图将对响应进行渲染。此响应对象与传递给控制器函数(myController)的响应对象相同。因此,假设您在控制器函数中的响应上设置了一些cookie/头,则视图用于进行渲染的响应也将具有相同的属性 如果您想自己处理实际的呈现/响应,您可以始终获取响应的outputstream,然后写入并关闭该流。然后,您返回的视图将被忽略,因为调度器将检查响应是否已被处理,并且只执行后期处理 希望任何寻找它背后的调度逻辑的人都能明白这一点