jeesite项目理解.docxVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
jeesite项目理解要点

首先进入页面,看到了 目的是希望在建立一个菜单将我们自己的功能配置进取,所以需要熟悉整个项目的基础结构 接下来分析根据登陆进入的地址找到系统首页 我们找到首页 找到页面我们进行分析,分析的核心,找到特征代码,需要细心,将浏览器中呈现的代码同源代码进行对比。如果仅仅是寻找不需要详细的研究每一段代码。 当我们找到后找到对应的头部菜单连接地址?因为我们点击头部菜单,左侧栏会跟着变化。找到对应的url地址 根据导航的地址找到对应的controller所对应的类 然而我们发现这个conroller竟然没有任何业务,需要我们跳转到对应的页面 找到对应的页面进行持续的分析 认真地分析页面发现 div class=accordion id=menu-${param.parentId}c:set var=menuList value=${fns:getMenuList()}/c:set var=firstMenu value=true/c:forEach items=${menuList} var=menu varStatus=idxStatusc:if test=${menu.parent.id eq (not empty param.parentId ? param.parentId:1)menu.isShow eq 1} 我们刚才访问的url 是  HYPERLINK http://localhost:8080/jeesite/a/sys/menu/tree?parentId=27 http://localhost:8080/jeesite/a/sys/menu/tree?parentId=27 在这段代码中我们发现了整个div的样式控制时一个巧妙的组合,根据传入的id作为功能的父亲id ,同时根据${fns:getMenuList()} 根据自定义标签库从后台直接获取用户的所有菜单,然后看他的父节点id同传入参数是否一致,如果一致就进行循环遍历,核心是寻找fns:getMenuList() 需要找到对应的自定义标签,以及对应的类和方法。 首先找到 然后继续找到 最终找到对应的fnstld文件 在tld文件中找到 需要继续分析代码看他的业务流程 ListMenu menuList = (ListMenu)getCache(CACHE_MENU_LIST); if (menuList == null){ User user = getUser(); if (user.isAdmin()){ menuList = menuDao.findAllList(new Menu()); }else{ Menu m = new Menu(); m.setUserId(user.getId()); menuList = menuDao.findByUserId(m); } putCache(CACHE_MENU_LIST, menuList); } return menuList; 在这里里面代码的含义首先如果你已经读取了一次,那么直接从缓存中取。如果没有则得到当前的用户进行判断,看是否是管理人员,如果是则执行menuList = menuDao.findAllList(new Menu()); , 如果不是则执行menuDao.findByUserId(m);因为我们当前用户的角色是管理人员则,需要执行 menuList = menuDao.findAllList(new Menu()); 需要继续分析关于在jeesite中的dao层 menuList = menuDao.findAllList(new Menu()); private static MenuDao menuDao = SpringContextHolder.getBean(MenuDao.class); 当我们执行取出数据的时候,我们发现需要从spring容器中取出 同时需要了解知道beanFactory factoryBean 以及applicationContext和webApplicationContext的区别??? 由于我们使用了spring来管理项目,那当程序启动的时候会默认的情况下通过注解或者配置文件来将类实例化对象,然后将对象和对象之间的关系放入整个容器中。 需要继续寻找menuDao 我们发现了我们的menuDao,但是它的接口进行了注解,也就是说在通常情况下spring和mybatis集成 ,一般在dao层没有实现类,而是根据接口和mapper.xml文件生成接口对象的代理实现类。 我们发现没有这个方法,根据java的继承原理,如果自己没有方法,一般情况下会

文档评论(0)

dajuhyy + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档