Phương pháp điều khiển của tôi trả về ModelAndView
, nhưng cũng có yêu cầu viết cookie lại cho khách hàng. Có thể làm điều đó trong mùa xuân? Cảm ơn.Vào mùa xuân mvc 3, cách viết cookie trong khi trả về ModelAndView?
Trả lời
Nếu bạn thêm các phản ứng như tham số để phương pháp xử lý của bạn (xem flexible signatures of @RequestMapping
annotated methods - cùng phần cho 3.2.x, 4.0.x, 4.1.x, 4.3.x, 5.0.x), bạn có thể add the cookie để phản ứng trực tiếp:
Kotlin
@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");
}
Không phải là một phần của ModelAndView
, không, nhưng bạn có thể add the cookie directly đối tượng HttpServletResponse
được chuyển vào phương pháp điều khiển của bạn.
Bạn có thể viết HandlerInterceptor
sẽ lấy tất cả các phiên bản Cookie từ mô hình của bạn và tạo ra các tiêu đề cookie thích hợp. Bằng cách này bạn có thể giữ cho bộ điều khiển của bạn sạch sẽ và miễn phí từ 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. Đừng quên đăng ký máy đánh chặn với <mvc:interceptors>
(cấu hình XML) hoặc WebMvcConfigurer.addInterceptors()
(cấu hình Java).
giải pháp RustyX trong 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. interceptor mùa xuân mvc: truy cập vào ResponseEntity trong postHandle
- 2. Đối tượng mặc định vào mùa xuân 3 mvc SessionAttributes khi phiên hết hạn
- 3. Khi nào nên sử dụng ModelAndView vs Model vào mùa xuân?
- 4. mùa xuân 3 namespace MVC và i18n Vấn đề
- 5. ExceptionHandler trở về JSON hay XML không làm việc trong MVC mùa xuân 3
- 6. Mùa xuân 3.x - làm cách nào để chuyển hướng từ bản đồ trả về dữ liệu?
- 7. Xử lý ngoại lệ MVC mùa xuân với HandlerExceptionResolver
- 8. Cách kế thừa RequestMappings trong API REST MVC của mùa xuân 3
- 9. DefaultAnnotationHandlerMapping qua ContextLoaderListener thay vì DispatcherServlet vào mùa xuân 3
- 10. Trường ẩn trong mùa xuân MVC
- 11. Mùa xuân 3 MVC truy cập HttpRequest từ bộ điều khiển
- 12. chế độ dev trong mùa xuân MVC
- 13. Gạch Apache hỗ trợ EL vào Mùa xuân 3
- 14. Nhiều chế độ xem giải quyết vào mùa xuân mvc
- 15. AspectJ vào mùa xuân
- 16. Kiểm tra tích hợp bộ điều khiển MVC mùa xuân 3 - Đưa hiệu trưởng vào phương thức
- 17. RedirectAttributes cho IllegalStateException trong mùa xuân 3,1
- 18. Mùa xuân 3 NPE với LazyConnectionDataSourceProxy autoCommit
- 19. Freemarker + Hướng dẫn mùa xuân MVC
- 20. Android mùa xuân: sử dụng RestTemplate với https và cookie
- 21. Làm thế nào để cấu hình mùa xuân RestTemplate với SSL (trong mùa xuân @MVC)
- 22. Bảo mật mùa xuân Dịch vụ RememberMe với Cookie phiên
- 23. Java: Bảo mật mùa xuân 3 Phân cấp vai trò
- 24. Kiểm tra MVC mùa xuân với MockMvc
- 25. Mùa xuân 3.1 MVC, Bảo mật mùa xuân 3.1 - Mã thông báo CSRF
- 26. mẫu mvc mùa xuân: chọn thẻ
- 27. Phương thức thực thi khi khởi động vào mùa xuân
- 28. Mùa xuân 3+ Cách tạo TestSuite khi JUnit không nhận ra nó
- 29. Xác thực mùa xuân MVC 3 - Không thể tìm thấy nhà cung cấp mặc định
- 30. mùa xuân BeanCreationException nhầm lẫn về bản đồ
Đôi khi bạn cần phải gọi 'cookie.setPath ("xxx"); 'nếu bạn muốn chia sẻ các tập tin cookie giữa các yêu cầu. –