Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SpringMVC控制器能否同时返回HttpServletResponse和视图?_Spring_Servlets_Spring Mvc - Fatal编程技术网

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,然后写入并关闭该流。然后,您返回的视图将被忽略,因为调度器将检查响应是否已被处理,并且只执行后期处理

希望任何寻找它背后的调度逻辑的人都能明白这一点