在mvc配置文件里添加一个配置
<mvc:interceptors> <bean class="xxx.xxx.SystemInterceptor" /> </mvc:interceptors>
实现类
/** * 全局在线用户验证与赋值处理 * @author lee * */ public class SystemInterceptor extends HandlerInterceptorAdapter{ @SuppressWarnings("unchecked") @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { UserInfo userinfo = UserContext.getCurUser(); request.getSession().setAttribute("isLogin", userinfo!=null); request.getSession().setAttribute("onlineUser", userinfo); //添加用户菜单 if(userinfo!=null){ List<MenuItem> menus = (List<MenuItem>) CacheUtil.get("userMenu", userinfo.getUserId()); if(menus==null){ MyMenuService myMenuService = (MyMenuService) ContextHolder.getBean("myMenuService"); menus =myMenuService.findAllUserMenuChild(userinfo, MenuItem.ROOT_CODE); CacheUtil.put("userMenu", userinfo.getUserId(), menus); } request.getSession().setAttribute("menu", menus); } return super.preHandle(request, response, handler); } }
UserInfo userinfo = UserContext.getCurUser();这个根据自己的session用户处理。
这样mvc所有页面都可以接收当前用户信息了