├── .gitignore ├── ForestBlog ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── ssm │ │ │ └── blog │ │ │ ├── controller │ │ │ ├── admin │ │ │ │ ├── AdminController.java │ │ │ │ ├── BackArticleController.java │ │ │ │ ├── BackCategoryController.java │ │ │ │ ├── BackCommentController.java │ │ │ │ ├── BackLinkController.java │ │ │ │ ├── BackMenuController.java │ │ │ │ ├── BackNoticeController.java │ │ │ │ ├── BackOptionsController.java │ │ │ │ ├── BackPageController.java │ │ │ │ ├── BackTagController.java │ │ │ │ ├── BackUserController.java │ │ │ │ └── UploadFileController.java │ │ │ └── home │ │ │ │ ├── ArticleController.java │ │ │ │ ├── CategoryController.java │ │ │ │ ├── CommentController.java │ │ │ │ ├── IndexController.java │ │ │ │ ├── LinkController.java │ │ │ │ ├── NoticeController.java │ │ │ │ ├── PageController.java │ │ │ │ └── TagController.java │ │ │ ├── dto │ │ │ ├── ArticleParam.java │ │ │ ├── JsonResult.java │ │ │ ├── Response.java │ │ │ ├── ResultVO.java │ │ │ └── UploadFileVO.java │ │ │ ├── entity │ │ │ ├── Article.java │ │ │ ├── ArticleCategoryRef.java │ │ │ ├── ArticleTagRef.java │ │ │ ├── Category.java │ │ │ ├── Comment.java │ │ │ ├── Link.java │ │ │ ├── Menu.java │ │ │ ├── Notice.java │ │ │ ├── Options.java │ │ │ ├── Page.java │ │ │ ├── Tag.java │ │ │ └── User.java │ │ │ ├── enums │ │ │ ├── ArticleCommentStatus.java │ │ │ ├── ArticleStatus.java │ │ │ ├── CategoryStatus.java │ │ │ ├── LinkStatus.java │ │ │ ├── MenuLevel.java │ │ │ ├── NoticeStatus.java │ │ │ ├── PageStatus.java │ │ │ └── Role.java │ │ │ ├── interceptor │ │ │ ├── HomeResourceInterceptor.java │ │ │ └── SecurityInterceptor.java │ │ │ ├── mapper │ │ │ ├── ArticleCategoryRefMapper.java │ │ │ ├── ArticleMapper.java │ │ │ ├── ArticleTagRefMapper.java │ │ │ ├── CategoryMapper.java │ │ │ ├── CommentMapper.java │ │ │ ├── LinkMapper.java │ │ │ ├── MenuMapper.java │ │ │ ├── NoticeMapper.java │ │ │ ├── OptionsMapper.java │ │ │ ├── PageMapper.java │ │ │ ├── TagMapper.java │ │ │ └── UserMapper.java │ │ │ ├── service │ │ │ ├── ArticleService.java │ │ │ ├── CategoryService.java │ │ │ ├── CommentService.java │ │ │ ├── LinkService.java │ │ │ ├── MenuService.java │ │ │ ├── NoticeService.java │ │ │ ├── OptionsService.java │ │ │ ├── PageService.java │ │ │ ├── TagService.java │ │ │ ├── UserService.java │ │ │ └── impl │ │ │ │ ├── ArticleServiceImpl.java │ │ │ │ ├── CategoryServiceImpl.java │ │ │ │ ├── CommentServiceImpl.java │ │ │ │ ├── LinkServiceImpl.java │ │ │ │ ├── MenuServiceImpl.java │ │ │ │ ├── NoticeServiceImpl.java │ │ │ │ ├── OptionsServiceImpl.java │ │ │ │ ├── PageServiceImpl.java │ │ │ │ ├── TagServiceImpl.java │ │ │ │ └── UserServiceImpl.java │ │ │ └── util │ │ │ └── MyUtils.java │ ├── resources │ │ ├── db.properties │ │ ├── log4j.properties │ │ ├── mapper │ │ │ ├── ArticleCategoryRefMapper.xml │ │ │ ├── ArticleMapper.xml │ │ │ ├── ArticleTagRefMapper.xml │ │ │ ├── CategoryMapper.xml │ │ │ ├── CommentMapper.xml │ │ │ ├── LinkMapper.xml │ │ │ ├── MenuMapper.xml │ │ │ ├── NoticeMapper.xml │ │ │ ├── OptionsMapper.xml │ │ │ ├── PageMapper.xml │ │ │ ├── TagMapper.xml │ │ │ └── UserMapper.xml │ │ ├── mybatis │ │ │ └── mybatis-config.xml │ │ └── spring │ │ │ ├── spring-mvc.xml │ │ │ └── spring-mybatis.xml │ └── webapp │ │ ├── WEB-INF │ │ ├── view │ │ │ ├── Admin │ │ │ │ ├── Article │ │ │ │ │ ├── edit.jsp │ │ │ │ │ ├── index.jsp │ │ │ │ │ ├── insert.jsp │ │ │ │ │ └── search.jsp │ │ │ │ ├── Category │ │ │ │ │ ├── edit.jsp │ │ │ │ │ └── index.jsp │ │ │ │ ├── Comment │ │ │ │ │ ├── edit.jsp │ │ │ │ │ ├── index.jsp │ │ │ │ │ └── reply.jsp │ │ │ │ ├── Link │ │ │ │ │ ├── edit.jsp │ │ │ │ │ ├── index.jsp │ │ │ │ │ └── insert.jsp │ │ │ │ ├── Menu │ │ │ │ │ ├── edit.jsp │ │ │ │ │ └── index.jsp │ │ │ │ ├── Notice │ │ │ │ │ ├── edit.jsp │ │ │ │ │ ├── index.jsp │ │ │ │ │ └── insert.jsp │ │ │ │ ├── Options │ │ │ │ │ └── index.jsp │ │ │ │ ├── Page │ │ │ │ │ ├── edit.jsp │ │ │ │ │ ├── index.jsp │ │ │ │ │ └── insert.jsp │ │ │ │ ├── Public │ │ │ │ │ ├── framework.jsp │ │ │ │ │ └── paging.jsp │ │ │ │ ├── Tag │ │ │ │ │ ├── edit.jsp │ │ │ │ │ └── index.jsp │ │ │ │ ├── User │ │ │ │ │ ├── edit.jsp │ │ │ │ │ ├── editPwd.jsp │ │ │ │ │ └── profile.jsp │ │ │ │ ├── index.jsp │ │ │ │ └── login.jsp │ │ │ └── Home │ │ │ │ ├── Error │ │ │ │ ├── 404.jsp │ │ │ │ └── 500.jsp │ │ │ │ ├── Page │ │ │ │ ├── applyLink.jsp │ │ │ │ ├── articleDetail.jsp │ │ │ │ ├── articleFile.jsp │ │ │ │ ├── articleListByCategory.jsp │ │ │ │ ├── articleListByTag.jsp │ │ │ │ ├── noticeDetail.jsp │ │ │ │ ├── page.jsp │ │ │ │ ├── search.jsp │ │ │ │ └── siteMap.jsp │ │ │ │ ├── Public │ │ │ │ ├── framework.jsp │ │ │ │ └── part │ │ │ │ │ ├── footer.jsp │ │ │ │ │ ├── header.jsp │ │ │ │ │ ├── paging.jsp │ │ │ │ │ ├── sidebar-1.jsp │ │ │ │ │ ├── sidebar-2.jsp │ │ │ │ │ └── sidebar-3.jsp │ │ │ │ └── index.jsp │ │ └── web.xml │ │ └── resource │ │ └── assets │ │ ├── css │ │ ├── back.css │ │ ├── highlight.css │ │ └── style.css │ │ ├── img │ │ ├── loginBg.jpg │ │ ├── logo.png │ │ └── thumbnail │ │ │ └── random │ │ │ ├── img_0.jpg │ │ │ ├── img_1.jpg │ │ │ ├── img_10.jpg │ │ │ ├── img_11.jpg │ │ │ ├── img_12.jpg │ │ │ ├── img_13.jpg │ │ │ ├── img_14.jpg │ │ │ ├── img_2.jpg │ │ │ ├── img_3.jpg │ │ │ ├── img_4.jpg │ │ │ ├── img_5.jpg │ │ │ ├── img_6.jpg │ │ │ ├── img_7.jpg │ │ │ ├── img_8.jpg │ │ │ └── img_9.jpg │ │ ├── js │ │ ├── back.js │ │ ├── jquery.cookie.js │ │ ├── jquery.min.js │ │ ├── script.js │ │ ├── sticky.js │ │ └── superfish.js │ │ └── plugin │ │ ├── font-awesome │ │ ├── HELP-US-OUT.txt │ │ ├── css │ │ │ ├── font-awesome.css │ │ │ └── font-awesome.min.css │ │ ├── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ └── fontawesome-webfont.woff2 │ │ ├── less │ │ │ ├── animated.less │ │ │ ├── bordered-pulled.less │ │ │ ├── core.less │ │ │ ├── fixed-width.less │ │ │ ├── font-awesome.less │ │ │ ├── icons.less │ │ │ ├── larger.less │ │ │ ├── list.less │ │ │ ├── mixins.less │ │ │ ├── path.less │ │ │ ├── rotated-flipped.less │ │ │ ├── screen-reader.less │ │ │ ├── stacked.less │ │ │ └── variables.less │ │ └── scss │ │ │ ├── _animated.scss │ │ │ ├── _bordered-pulled.scss │ │ │ ├── _core.scss │ │ │ ├── _fixed-width.scss │ │ │ ├── _icons.scss │ │ │ ├── _larger.scss │ │ │ ├── _list.scss │ │ │ ├── _mixins.scss │ │ │ ├── _path.scss │ │ │ ├── _rotated-flipped.scss │ │ │ ├── _screen-reader.scss │ │ │ ├── _stacked.scss │ │ │ ├── _variables.scss │ │ │ └── font-awesome.scss │ │ ├── layui │ │ ├── css │ │ │ ├── layui.css │ │ │ ├── layui.mobile.css │ │ │ └── modules │ │ │ │ ├── code.css │ │ │ │ ├── laydate │ │ │ │ └── default │ │ │ │ │ └── laydate.css │ │ │ │ └── layer │ │ │ │ └── default │ │ │ │ ├── icon-ext.png │ │ │ │ ├── icon.png │ │ │ │ ├── layer.css │ │ │ │ ├── loading-0.gif │ │ │ │ ├── loading-1.gif │ │ │ │ └── loading-2.gif │ │ ├── font │ │ │ ├── iconfont.eot │ │ │ ├── iconfont.svg │ │ │ ├── iconfont.ttf │ │ │ └── iconfont.woff │ │ ├── images │ │ │ └── face │ │ │ │ ├── 0.gif │ │ │ │ ├── 1.gif │ │ │ │ ├── 10.gif │ │ │ │ ├── 11.gif │ │ │ │ ├── 12.gif │ │ │ │ ├── 13.gif │ │ │ │ ├── 14.gif │ │ │ │ ├── 15.gif │ │ │ │ ├── 16.gif │ │ │ │ ├── 17.gif │ │ │ │ ├── 18.gif │ │ │ │ ├── 19.gif │ │ │ │ ├── 2.gif │ │ │ │ ├── 20.gif │ │ │ │ ├── 21.gif │ │ │ │ ├── 22.gif │ │ │ │ ├── 23.gif │ │ │ │ ├── 24.gif │ │ │ │ ├── 25.gif │ │ │ │ ├── 26.gif │ │ │ │ ├── 27.gif │ │ │ │ ├── 28.gif │ │ │ │ ├── 29.gif │ │ │ │ ├── 3.gif │ │ │ │ ├── 30.gif │ │ │ │ ├── 31.gif │ │ │ │ ├── 32.gif │ │ │ │ ├── 33.gif │ │ │ │ ├── 34.gif │ │ │ │ ├── 35.gif │ │ │ │ ├── 36.gif │ │ │ │ ├── 37.gif │ │ │ │ ├── 38.gif │ │ │ │ ├── 39.gif │ │ │ │ ├── 4.gif │ │ │ │ ├── 40.gif │ │ │ │ ├── 41.gif │ │ │ │ ├── 42.gif │ │ │ │ ├── 43.gif │ │ │ │ ├── 44.gif │ │ │ │ ├── 45.gif │ │ │ │ ├── 46.gif │ │ │ │ ├── 47.gif │ │ │ │ ├── 48.gif │ │ │ │ ├── 49.gif │ │ │ │ ├── 5.gif │ │ │ │ ├── 50.gif │ │ │ │ ├── 51.gif │ │ │ │ ├── 52.gif │ │ │ │ ├── 53.gif │ │ │ │ ├── 54.gif │ │ │ │ ├── 55.gif │ │ │ │ ├── 56.gif │ │ │ │ ├── 57.gif │ │ │ │ ├── 58.gif │ │ │ │ ├── 59.gif │ │ │ │ ├── 6.gif │ │ │ │ ├── 60.gif │ │ │ │ ├── 61.gif │ │ │ │ ├── 62.gif │ │ │ │ ├── 63.gif │ │ │ │ ├── 64.gif │ │ │ │ ├── 65.gif │ │ │ │ ├── 66.gif │ │ │ │ ├── 67.gif │ │ │ │ ├── 68.gif │ │ │ │ ├── 69.gif │ │ │ │ ├── 7.gif │ │ │ │ ├── 70.gif │ │ │ │ ├── 71.gif │ │ │ │ ├── 8.gif │ │ │ │ └── 9.gif │ │ ├── lay │ │ │ └── modules │ │ │ │ ├── carousel.js │ │ │ │ ├── code.js │ │ │ │ ├── element.js │ │ │ │ ├── flow.js │ │ │ │ ├── form.js │ │ │ │ ├── jquery.js │ │ │ │ ├── laydate.js │ │ │ │ ├── layedit.js │ │ │ │ ├── layer.js │ │ │ │ ├── laypage.js │ │ │ │ ├── laytpl.js │ │ │ │ ├── mobile.js │ │ │ │ ├── table.js │ │ │ │ ├── tree.js │ │ │ │ ├── upload.js │ │ │ │ └── util.js │ │ ├── layer.js │ │ ├── layui.all.js │ │ ├── layui.js │ │ ├── mobile │ │ │ ├── layer.js │ │ │ └── need │ │ │ │ └── layer.css │ │ └── skin │ │ │ └── default │ │ │ ├── icon-ext.png │ │ │ ├── icon.png │ │ │ ├── layer.css │ │ │ ├── loading-0.gif │ │ │ ├── loading-1.gif │ │ │ └── loading-2.gif │ │ └── login │ │ ├── buttons.min.css │ │ ├── dashicons.min.css │ │ ├── forms.min.css │ │ ├── l10n.min.css │ │ └── login.min.css │ └── test │ ├── back │ ├── BackAdminFunctions.java │ ├── BackArticleFunctions.java │ ├── BackCommentFunctions.java │ ├── BackLinkFunctions.java │ ├── BackLoginAndLogout.java │ ├── BackMenuFunctions.java │ ├── BackNoticeFunctions.java │ ├── BackOptionsFunctions.java │ └── BackPageFunctions.java │ ├── geckodriver.exe │ └── home │ ├── HomeArticleFunction.java │ ├── HomeLinkFunction.java │ ├── HomeLinkFunction1.java │ ├── HomeLinkFunction2.java │ ├── HomeMenuAndSidebarFunction.java │ ├── HomeMenuAndSidebarFunction1.java │ └── HomeNoticeFunction.java ├── LICENSE ├── README.md ├── forest_blog.sql ├── image ├── automatedTest.gif ├── uploads.png ├── warexploded.png ├── 修改文件上传地址.png ├── 前台文章评论区.png ├── 前台查看文章.png ├── 前台首页.jpg ├── 后台修改密码.png ├── 后台修改用户信息.png ├── 后台写文章.png ├── 后台增加站点描述.png ├── 后台增加菜单.png ├── 后台控制台.png ├── 后台查找文章.png ├── 后台查看全部公告.png ├── 后台查看全部分类.png ├── 后台查看全部文章.png ├── 后台查看全部标签.png ├── 后台查看全部链接.png ├── 后台查看全部页面.png ├── 后台查看评论.png ├── 后台添加公告.png ├── 后台添加链接.png ├── 后台添加页面.png ├── 后台登录.png └── 后台设置博主信息.png └── uploads ├── 2019 ├── 8 │ ├── 2017032401571903086bdd06210e07c5f73a9254856c5e(1).jpg │ ├── 2017032401571903086bdd06210e07c5f73a9254856c5e(2).jpg │ ├── 2017032401571903086bdd06210e07c5f73a9254856c5e(3).jpg │ ├── 2017032401571903086bdd06210e07c5f73a9254856c5e(4).jpg │ ├── 2017032401571903086bdd06210e07c5f73a9254856c5e.jpg │ ├── p(1).jpg │ ├── p.jpg │ ├── z(1).jpg │ ├── z.jpg │ ├── 收款码(1).png │ └── 收款码.png ├── 9 │ ├── 20190914130133732.png │ ├── 2019091413023799.png │ ├── 20190914174541164.png │ ├── 20190914174706560.png │ ├── 2019091417532789.png │ ├── 20190914175516362.png │ ├── 20190914201500472.png │ ├── 20190914201536198.png │ ├── 20190914201951167.png │ ├── 20190914202218330.png │ ├── 20190914204049762.png │ ├── 20190914204100691.png │ ├── 20190914204511611.png │ ├── 20190914225927794.png │ ├── 20190914230625582.png │ ├── 20190914230825367.png │ ├── 20190914231507937.png │ ├── 20190915090929630.png │ ├── 20190915091612635.png │ ├── 20190915093359554.png │ ├── 20190915150118238.gif │ ├── 20190918094706198.jpg │ ├── 20190918095247277.jpg │ ├── 20190918095622101.jpg │ ├── 20190918105355884.jpg │ ├── 20190918110117226.jpg │ ├── 20190919213840682.png │ ├── 20190920210412778.png │ ├── 20190922143841757.png │ └── 2019092308193347.jpg └── 10 │ ├── 20191007153621950.png │ ├── 20191007153648208.png │ ├── 2019100715402014.png │ ├── 20191007154127663.png │ ├── 20191007154222212.jpg │ ├── 20191007154459334.png │ ├── 20191007155038568.png │ ├── 2019100715505630.png │ ├── 2019100715512437.jpg │ ├── 20191007155135604.jpg │ ├── 20191007155334244.png │ ├── 20191007155349805.png │ ├── 20191007155410485.png │ ├── 20191007155450773.png │ ├── 20191007155545742.png │ ├── 20191007155723341.png │ ├── 2019100717420134.png │ ├── 2019101011593518.jpg │ └── 20191010115953489.jpg ├── admin.png ├── home.png ├── tomcat.png └── tomcat2.png /.gitignore: -------------------------------------------------------------------------------- 1 | !.mvn/wrapper/maven-wrapper.jar 2 | target/ 3 | ### STS ### 4 | .apt_generated 5 | .classpath 6 | .factorypath 7 | .project 8 | .settings 9 | .springBeans 10 | 11 | ### IntelliJ IDEA ### 12 | .idea 13 | *.iws 14 | *.iml 15 | *.ipr 16 | 17 | ### NetBeans ### 18 | nbproject/private/ 19 | build/ 20 | nbbuild/ 21 | dist/ 22 | nbdist/ 23 | .nb-gradle/ 24 | 25 | #Mac 26 | .DS_Store -------------------------------------------------------------------------------- /ForestBlog/src/main/java/com/ssm/blog/controller/admin/BackMenuController.java: -------------------------------------------------------------------------------- 1 | package com.ssm.blog.controller.admin; 2 | 3 | import com.ssm.blog.entity.Menu; 4 | import com.ssm.blog.enums.MenuLevel; 5 | import com.ssm.blog.service.MenuService; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Controller; 8 | import org.springframework.ui.Model; 9 | import org.springframework.web.bind.annotation.PathVariable; 10 | import org.springframework.web.bind.annotation.RequestMapping; 11 | import org.springframework.web.bind.annotation.RequestMethod; 12 | import org.springframework.web.servlet.ModelAndView; 13 | 14 | import java.util.List; 15 | 16 | /** 17 | * 设置菜单界面 18 | */ 19 | @Controller 20 | @RequestMapping("/admin/menu") 21 | public class BackMenuController { 22 | 23 | @Autowired 24 | private MenuService menuService; 25 | 26 | /** 27 | * 后台菜单列表显示 28 | * 29 | * @return 30 | */ 31 | @RequestMapping(value = "") 32 | public String menuList(Model model) { 33 | List