봄 MVC 3에서는 ModelAndView를 반환하면서 쿠키를 작성하는 방법은 무엇입니까?
컨트롤러 메서드가 반환하는 것은ModelAndView
단, cookie를 클라이언트에 회신해야 하는 요건도 있습니다.봄에 할 수 있을까요?감사해요.
핸들러 메서드에 응답을 파라미터로 추가하는 경우(3.2.x, 4.0.x, 4.1.x, 4.3.x, 5.x.x의 경우 주석 첨부 메서드의 유연한 시그니처 참조) 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");
}
의 일부가 아닌ModelAndView
, 아니요, 하지만 cookie를 직접 추가할 수 있습니다.HttpServletResponse
컨트롤러 메서드에 전달되는 객체입니다.
를 쓸 수 있습니다.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의 LustyX 솔루션:
@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);
}
}
}
언급URL : https://stackoverflow.com/questions/4888456/in-spring-mvc-3-how-to-write-a-cookie-while-returning-a-modelandview
'programing' 카테고리의 다른 글
개체를 JSON에 직렬화하는 방법 (0) | 2023.02.15 |
---|---|
Wordpress 플러그인 API로 .htaccess를 편집하시겠습니까? (0) | 2023.02.15 |
다중 인수가 있는 각도 ng-if=" (0) | 2023.02.15 |
형태와 함께 Proptype 배열 반응 (0) | 2023.02.15 |
Angular에서 서버에서 텍스트/csv 콘텐츠를 파일로 다운로드 (0) | 2023.02.11 |