对于?个系统??,系统功能是由程序员进?开发和实现的,菜单相对?较固定的;如果要新增?个菜单,则需要有对应的功能?撑,因此对于菜单的添加操作不会让管理员来实现,?是由程序员实现的。因此菜单信息管理功能 主要就是对菜单的展示。
文章图片
数据库操作代码实现查询所有的?级菜单查询所有的?级菜单根据?级菜单查询所有的?级菜单 1. 涉及数据表菜单信息表tb_menus2.SQL 指令-- 1查询所有?级菜单selectmenu_id,menu_code,menu_name,menu_order,menu_level,menu_iconfromtb_menuswheremenu_level = 1order bymenu_order;
-- 2查询所有的?级菜单selectmenu_id,menu_code,menu_name,menu_order,menu_level,parent_menu_code,menu_urlfromtb_menuswheremenu_level = 2order bymenu_order;
-- 3根据?级菜单 code 查询当前?级菜单下的?级菜单selectmenu_id,menu_code,menu_name,menu_order,menu_level,parent_menu_code,menu_urlfromtb_menuswhereparent_menu_code = '01'order bymenu_order;
3. 在 MenuDAO 类中实现数据库操作
package com.it.dao;
import com.it.entity.Menu1;
import com.it.entity.Menu2;
import com.it.untils.DruidUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import javax.sql.DataSource;
import java.sql.Array;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
//实现菜单的查询
public class MenuDAO {
//根据管理员ID查询对应的一级菜单
public List selectFirstLevelMenusById(String mgrId) throws SQLException {
List menu1List = new ArrayList<>();
String str="SELECT c.menu_id menuId,menu_code menuCode,menu_name menuName,menu_order menuOrder,menu_level menuLevel,menu_icon menuIcon FROM tb_mgr_role a " +
"INNER JOIN tb_role_menu b INNER JOIN tb_menus c ON a.role_id=b.role_id AND b.menu_id=c.menu_id WHERE a.mgr_id=? AND menu_level=1 ORDER BY c.menu_order";
QueryRunner queryRunner = new QueryRunner(DruidUtils.getDataSource());
menu1List= queryRunner.query(str, new BeanListHandler(Menu1.class), mgrId);
return menu1List;
}
//根据管理员ID和一级菜单ID,查询当前一级菜单所拥有的二级菜单
public List selectSecondLevelMenusByIdAndParentCode(String mgrId,String parentCode) throws SQLException {
List menu2List = new ArrayList<>();
String sql="SELECT c.menu_id menuId,menu_code menuCode,menu_name menuName,menu_order menuOrder,menu_level menuLevel,parent_menu_code parentMenuCode,menu_url menuUrl FROM tb_mgr_role a " +
"INNER JOIN tb_role_menu b INNER JOIN tb_menus c ON a.role_id=b.role_id AND b.menu_id=c.menu_id WHERE a.mgr_id=? AND menu_level=2 AND parent_menu_code=? ORDER BY c.menu_order";
QueryRunner queryRunner = new QueryRunner(DruidUtils.getDataSource());
menu2List=queryRunner.query(sql,new BeanListHandler(Menu2.class),mgrId,parentCode);
return menu2List;
}//查询所有的一级菜单
public List selectMenu1() throws SQLException {
Listmenu1List = new ArrayList<>();
String sql="SELECT menu_id menuId,menu_code menuCode,menu_name menuName,menu_order menuOrder,menu_level menuLevel,menu_icon menuIcon FROM tb_menus WHERE menu_level=1 ORDER BY menu_order";
QueryRunner queryRunner=new QueryRunner(DruidUtils.getDataSource());
menu1List= queryRunner.query(sql, new BeanListHandler(Menu1.class));
returnmenu1List;
}
//查询所有的二级菜单
public List selectMenu2() throws SQLException {
List menu2List=new ArrayList<>();
String sql="SELECT menu_id menuId,menu_code menuCode,menu_name menuName,menu_order menuOrder,menu_level menuLevel,parent_menu_code parentMenuCode,menu_url menuUrl FROM tb_menus WHERE menu_level=2 ORDER BY menu_code ";
QueryRunner queryRunner = new QueryRunner(DruidUtils.getDataSource());
menu2List = queryRunner.query(sql, new BeanListHandler(Menu2.class));
return menu2List;
}
//查询某一级菜单所拥有的二级菜单
public List selectMenu2ByMenu1Code(String parentMenuCode) throws SQLException {
List menu2List=new ArrayList<>();
String sql="SELECT menu_id menuId,menu_code menuCode,menu_name menuName,menu_order menuOrder,menu_level menuLevel,parent_menu_code parentMenuCode,menu_url menuUrl FROM tb_menus " +
"WHERE parent_menu_code=? AND menu_level=2 ORDER BY menu_code;
";
QueryRunner queryRunner = new QueryRunner(DruidUtils.getDataSource());
menu2List= queryRunner.query(sql, new BeanListHandler(Menu2.class), parentMenuCode);
return menu2List;
}
}
4业务逻辑层代码实现在 MenuService 中实现两个业务查询所有?级菜单和?级菜单根据?级菜单查询?级菜单
package com.it.service;
import com.it.dao.MenuDAO;
import com.it.entity.Menu1;
import com.it.entity.Menu2;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MenuService {
public List selectMenuByMgrId(String mgrId) throws SQLException {
MenuDAO menuDAO = new MenuDAO();
//根据管理员ID查询该管理员的一级菜单
List menu1List = menuDAO.selectFirstLevelMenusById(mgrId);
//查询每一个一级菜单中的二级菜单
for (int i = 0;
i < menu1List.size();
i++) {
Menu1 menu1 = menu1List.get(i);
List menu2s = menuDAO.selectSecondLevelMenusByIdAndParentCode(mgrId, menu1.getMenuCode());
menu1.setChildMenus(menu2s);
}
return menu1List;
}
//查询所有的一级二级菜单
public Map listMenus() throws SQLException {
Map mapMenus = new HashMap<>();
MenuDAO menuDAO = new MenuDAO();
List menu1List = menuDAO.selectMenu1();
List menu2List = menuDAO.selectMenu2();
mapMenus.put("menu1List",menu1List);
mapMenus.put("menu2List",menu2List);
return mapMenus;
}
//查询某个一级菜单所拥有的二级菜单
public List selectMenu2ByMenu1Code(String menu1Code) throws SQLException {
List menu2List = new ArrayList<>();
MenuDAO menuDAO = new MenuDAO();
menu2List = menuDAO.selectMenu2ByMenu1Code(menu1Code);
return menu2List;
}
}
5创建MenuListServlet类
package com.it.servlets;
import com.it.service.MenuService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
@WebServlet("/MenuListServlet")
public class MenuListServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
MenuService menuService = new MenuService();
try {
Map map = menuService.listMenus();
req.setAttribute("menu1List",map.get("menu1List"));
req.setAttribute("menu2List",map.get("menu2List"));
req.getRequestDispatcher("admin_menu_list.jsp").forward(req,resp);
} catch (SQLException e) {
e.printStackTrace();
}}
}
6.在admin_menu_list.jsp使? JSTL+EL 显示菜单信息
管理员 - 锐客网 一级菜单列表
- 全部管理员(13)
- ${menu1.menuName}
菜单编号
菜单名称
菜单排序
菜单级别
菜单编号
菜单URL
状态
操作
${menu2.menuCode}
${menu2.menuName}
${menu2.menuOrder}
${menu2.menuLevel}
${menu2.parentMenuCode}
${menu2.menuUrl}
已启用
文章图片
文章图片
【javaWeb|Javaweb菜单信息管理的一级菜单和二级菜单显示】
推荐阅读
- mysql|动态sql的标签语言
- sql|Mybtais动态SQL详解
- TcaplusDB|【深入理解TcaplusDB技术】详细介绍TDR表
- 系统开发|C#-学生公寓管理系统的实现
- 02django 框架ORM 操作数据库,字段的增删改查
- tomcat|Tomcat 线程池和ThreadLocal的爱恨情仇
- java|大文件的分片上传、断点续传及其相关拓展实践
- 笔记|Kotlin与Java的‘爱恨情仇‘
- Ontology|本体开发日记07-我与java分词组件的爱恨情仇-JiebaSegmenter类