请求: Web 菜单数据的获取与返回

linteyue 2016-12-08 09:19:30
本人新手, 想东西不够全面, 还望各位高手指点, 谢谢!

开发环境是: MySql + SpringMVC + Mybatis + shiro+ Jsp
问题: 网站左侧的菜单获取问题
我现在的做法是, 自定义一个拦截器, 当有请求时,
从数据库中查询菜单信息, 然后填充到域对象中,
然后jsp页面再循环这样菜单数据, 显示出来.

这样子做的问题有:
1. 每一个请求都会被拦截, 然后会去数据库查询菜单数据,

但以我现在的水平, 只能写出这个样子, 请问各位高手有没有更好的方法?



public class RequestInterceptor implements HandlerInterceptor {

@Autowired
private SysNavbarService sysNavbarService;

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
return true;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// 如果访问的url是静态资路径, 则不执行以下代码
if (request.getRequestURI().indexOf(request.getContextPath() + "/assets/") == -1) {

// 以下model只要存入登录的用户、菜单、权限信息
ActiveUser activeUser = new ActiveUser();
// 取出登录用户的信息
Subject subject = SecurityUtils.getSubject();
activeUser = (ActiveUser) subject.getPrincipal();
// 从数据库中取出菜单数据
List<SysNavbar> menus = sysNavbarService.getMenu();
// 将菜单数据添加到 model中
activeUser.setMenus(menus);
modelAndView.addObject("activeUser", activeUser);
}

}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub
}
}
...全文
237 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
navyzhengyj 2016-12-17
  • 打赏
  • 举报
回复
个人感觉用ajax比较好
游一游走一走 2016-12-08
  • 打赏
  • 举报
回复
将页面分为变和不变的部分。 顶部,左侧是不便的,中间区域可以用iframe或者ajax实现
_Kem 2016-12-08
  • 打赏
  • 举报
回复
建议楼主学习一下用ajax来加载你的菜单数据,那样体验效果会好很多
专坑队友 2016-12-08
  • 打赏
  • 举报
回复
加个缓存,只有用户登录的时候才去获取拥有的菜单,并将数据缓存起来,每次页面跳转的时候直接去缓存容器中找

67,511

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧