【问题标题】:spring: add session attribute in every controller modelspring:在每个控制器模型中添加会话属性
【发布时间】:2015-07-19 11:56:58
【问题描述】:

我想在模型中为每个控制器添加常用属性。

【问题讨论】:

  • 你的问题是?有什么例子吗?
  • @home 我找到了解决方案,只是误用了#include 和#parse。所以我删除了不敬的描述并在下面自己回答。无论如何,谢谢。
  • 在@ControllerAdvice 中使用@SessionAttribute 怎么样?

标签: java spring spring-boot velocity


【解决方案1】:

HandlerInterceptorAdapter 可以用来拦截请求。例如,您可以重写 preHandle 来验证会话,并在 postHandle 中将用户添加到模型中。

public class SessionValidator extends HandlerInterceptorAdapter{

@Override
public boolean preHandle(HttpServletRequest request,
                         HttpServletResponse response, Object handler) throws Exception {
    HttpSession session = request.getSession();
    if (session == null || session.getAttribute("user") == null) {
        return false;
    }
    return super.preHandle(request, response, handler);
}


@Override
public void postHandle(HttpServletRequest request,
                       HttpServletResponse response, Object handler,
                       ModelAndView modelAndView) throws Exception {
    HttpSession session = request.getSession();

    if (modelAndView != null) {
        modelAndView.getModelMap().addAttribute("user", session.getAttribute("user"));
    }
}

}

【讨论】:

    猜你喜欢
    • 2011-11-13
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 2015-01-03
    • 2017-11-06
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    相关资源
    最近更新 更多