我的控制器方法正在返回一個ModelAndView
,但還需要將cookie寫回客戶端。春天可以做到嗎?謝謝。在spring mvc 3中,如何在返回一個ModelAndView的同時寫一個cookie?
23
A
回答
46
如果添加的響應作爲參數傳遞給你的處理方法(見flexible signatures of @RequestMapping
annotated methods - 同一節3.2.x,4.0.x,4.1.x,4.3.x,5.0.x),您可以add the cookie直接回應:
科特林
@RequestMapping(["/example"])
fun exampleHandler(response: HttpServletResponse): ModelAndView {
response.addCookie(Cookie("COOKIENAME", "The cookie's value"))
return ModelAndView("viewname")
}
的Java
@RequestMapping("/example")
private ModelAndView exampleHandler(HttpServletResponse response) {
response.addCookie(new Cookie("COOKIENAME", "The cookie's value"));
return new ModelAndView("viewname");
}
10
不作爲ModelAndView
的一部分,否,但您可以將add the cookie directly轉換爲傳遞到您的控制器方法的HttpServletResponse
對象。
5
您可以編寫一個HandlerInterceptor
,它將從您的模型中獲取所有Cookie實例並生成相應的Cookie標頭。通過這種方式,您可以保持控制器清潔並免受HttpServletResponse
的影響。
@Component
public class ModelCookieInterceptor extends HandlerInterceptorAdapter {
@Override
public void postHandle(HttpServletRequest req, HttpServletResponse res, Object handler, ModelAndView modelAndView) throws Exception {
if (modelAndView != null) {
for (Object value : modelAndView.getModel().values()) {
if (value instanceof Cookie)
res.addCookie((Cookie) value);
}
}
}
}
NB。不要忘記用<mvc:interceptors>
(XML配置)或WebMvcConfigurer.addInterceptors()
(Java配置)註冊攔截器。
+0
如果要配置是否將數據作爲Cookie,Header,JSON等進行配置並提供良好的問題分離,這特別有用。 – kuporific 2014-07-25 17:29:22
0
RustyX在Java的解決方案8:
@Component
public class ModelCookieInterceptor extends HandlerInterceptorAdapter {
@Override
public void postHandle(HttpServletRequest req, HttpServletResponse res, Object handler, ModelAndView modelAndView) throws Exception{
if (modelAndView != null) {
modelAndView.getModel().values().stream()
.filter(c -> c instanceof Cookie)
.map(c -> (Cookie) c)
.forEach(res::addCookie);
}
}
}
相關問題
- 1. 在Spring MVC中返回ModelAndView和返回String有什麼區別?
- 2. 返回@ResponseBody在一個案例和ModelAndView在另一個
- 3. Spring將ModelAndView返回給DispatcherServlet
- 4. 在asp.net MVC 3 applciation返回從同一個控制器動作
- 5. Spring MVC返回一個空白頁面
- 6. ModelAndView Spring MVC
- 7. 「返回新的ModelAndView(」redirect:surveys.html「);」和「返回新的ModelAndView(」surveys.html「);」
- 8. 我怎樣才能返回一個Spring MVC ModelAndView作爲字符串到一個JSONResponse對象?
- 9. 如何在控制器中返回錯誤消息,而不是在spring中返回modelAndView mvc
- 10. Spring MVC的3:返回一個Spring的數據頁的JSON - 與PagedResourcesAssembler
- 11. 在Swift中返回一個序列3
- 12. Hibernate Spring MVC 3 - 我在ModelAndView中使用的模型是什麼?
- 13. 返回JSON返回時的ModelAndView
- 14. 在本地寫一個cookie
- 15. 如何在Spring MVC中返回403 Forbidden?
- 16. JSON在asp.net的MVC一個jsonresult返回
- 17. Spring MVC 3:在新選項卡中打開ModelAndView
- 18. Spring MVC中返回一個請求幾個對象
- 19. 何時在Spring中使用ModelAndView vs Model?
- 20. Spring MVC的:在綁定錯誤自動返回到同一頁
- 21. 覆蓋攔截器的ModelAndView在Spring MVC
- 22. 在同一個列表中返回兩個不同的bean
- 23. 在ASP.NET MVC中創建一個Cookie
- 24. 如何編寫一個在ruby中返回字符串的塊
- 25. 彈簧MVC 3的ModelAndView:控制器方法返回幾個視圖
- 26. java在一次返回兩個值時如何返回一個值
- 27. 如何在LINQ中返回多個對象 - asp.net mvc 3
- 28. 如何在refcursor中返回一個boolen?
- 29. 如何在prolog中「返回」一個值?
- 30. 如何編寫一個返回另一個函數的函數?
有時你需要調用`cookie.setPath( 「XXX」);`如果你想分享請求之間的餅乾。 – 2016-12-07 06:55:20