컨트롤러 메서드가 ModelAndView
을 반환하지만 클라이언트에 쿠키를 다시 써야한다는 요구 사항이 있습니다. 봄에 할 수 있습니까? 감사.봄 mvc 3, ModelAndView 반환하는 동안 쿠키를 작성하는 방법?
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")
}
자바
@RequestMapping("/example")
private ModelAndView exampleHandler(HttpServletResponse response) {
response.addCookie(new Cookie("COOKIENAME", "The cookie's value"));
return new ModelAndView("viewname");
}
10
ModelAndView
의 일부로 아니지만, 컨트롤러 메소드로 전달 된 HttpServletResponse
개체에 add the cookie directly 수 있습니다. 당신이 당신의 처리기 메서드에 매개 변수로 응답을 추가하는 경우
5
모델에서 모든 쿠키 인스턴스를 가져 와서 적절한 쿠키 헤더를 생성하는 HandlerInterceptor
을 작성할 수 있습니다. 이렇게하면 컨트롤러를 청결하게 유지하고 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 구성)으로 등록하는 것을 잊지 마십시오. 자바 8
0
RustyX의 솔루션 :
@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. 봄 MVC 3 SimpleFormController
- 2. 스프링 MVC 3 : 새 탭에서 ModelAndView 열기
- 3. 봄 3 MVC : 양식에서 € 기호를 저장하는 방법?
- 4. 봄 3 - 봄 3를 사용 NoSuchRequestHandlingMethodException
- 5. Jquery 쿠키를 작성하는 방법
- 6. parent.window.location from spring mvc modelandview
- 7. 봄 3 MVC 리디렉션은 : 다른 컨트롤러에
- 8. 봄 MVC 3 -> 유효성 검사
- 9. 봄 MVC : € 문자를 저장하는 방법?
- 10. 봄 mvc
- 11. 컨트롤러에서 Spring MVC, Return ModelAndView 문이 무시됩니다.
- 12. 봄 3 MVC 유효성 검사 (최대 절전 모드), hasErrors 이후 오류?
- 13. LINQ에서 여러 개체를 반환하는 방법 - asp.net mvc 3
- 14. ASP.NET MVC 3 AsyncControllers for MSpec을 작성하는 방법
- 15. 봄 3 mvc 응용 프로그램에서 최대 절전 모드를 사용하는 단계
- 16. 봄 3 교체 isDisabledInThisEnvironment
- 17. 봄 3 주석
- 18. 봄 mvc 선택 버튼
- 19. 레일 3 앱에서 쿠키를 설정하는 방법
- 20. 봄 3 MVC JSR-303 유효성 검사 오류가 표시되지 않습니다
- 21. IEnumerable을 반환하는 메서드에 대한 테스트를 작성하는 방법
- 22. 봄 @MVC 및 @RequestParam 검증
- 23. Intellisense XAML을 작성하는 동안
- 24. 봄 MVC 웹 위젯
- 25. 봄 mvc 서블릿 초기화
- 26. 봄 MVC - 선택적인 포맷팅
- 27. 봄 MVC 아랍어 언어
- 28. 봄 mvc 체크 박스
- 29. 봄 3 초보자 - NoSuchBeanDefinitionException - 내가 무엇을 놓쳤는가?
- 30. 봄 MVC 3 <form:Select> 태그 다중 선택
은 때로는'cookie.setPath ("XXX")를 호출 할 필요가, 당신이 요청 사이의 쿠키를 공유 할 경우'. –