Javaweb首页的菜单列表根据不同用户的身份动态加载

根据不同管理员身份加载并显示当前管理员可以操作的菜单。

先查询出当前管理员的一级菜单,再根据管理员一级菜单的ID查询出当前一级菜单所拥有的的二级菜单。 

1.zhangsan用户业务员身份

2.admin用户,超级管理员身份

3.lisi普通管理员身份

数据库展示

核心代码展示

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 java.sql.Array;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

//实现菜单的查询
public class MenuDAO {
    public List<Menu1> selectFirstLevelMenusById(String mgrId) throws SQLException {
        List<Menu1> 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>(Menu1.class), mgrId);
        return menu1List;
    }

    public List<Menu2> selectSecondLevelMenusByIdAndParentCode(String mgrId,String parentCode) throws SQLException {
        List<Menu2> 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>(Menu2.class),mgrId,parentCode);
        return menu2List;
    }
}

 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.List;

public class MenuService {
    public List<Menu1> selectMenuByMgrId(String mgrId) throws SQLException {
        MenuDAO menuDAO = new MenuDAO();
        //根据管理员ID查询该管理员的一级菜单
        List<Menu1> menu1List = menuDAO.selectFirstLevelMenusById(mgrId);
        //查询每一个一级菜单中的二级菜单
        for (int i = 0; i < menu1List.size(); i++) {
            Menu1 menu1 = menu1List.get(i);
            List<Menu2> menu2s = menuDAO.selectSecondLevelMenusByIdAndParentCode(mgrId, menu1.getMenuCode());
            menu1.setChildMenus(menu2s);
        }
        return menu1List;
    }
}

IndexServlet类

package com.it.servlets;

import com.it.entity.Manager;
import com.it.entity.Menu1;
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 javax.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

@WebServlet("/IndexServlet")
public class IndexServlet extends HttpServlet {

    MenuService menuService=new MenuService();
    @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 {
        HttpSession session = req.getSession();
        Manager mgr = (Manager) session.getAttribute("mgr");
        String mgrId = mgr.getMgrId();
        try {
            List<Menu1> menu1List = menuService.selectMenuByMgrId(mgrId);
            req.setAttribute("menuList",menu1List);
            req.getRequestDispatcher("index.jsp").forward(req,resp);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

首先在项目添加jstl的jar包,JSP页面导入该jar包内容

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- 菜单2 -->
          <c:forEach items="${menuList}" var="menu1">
          <li>
            <a href="#" class="dropdown-toggle">
              <i class="${menu1.menuIcon}"></i>
              <span class="menu-text"> ${menu1.menuName} </span>
              <b class="arrow icon-angle-down"></b>
            </a>
            <ul class="submenu">
              <c:forEach items="${menu1.childMenus}" var="menu2"></c:forEach>
              <li class="home">
                <a  href="javascript:void(0)" name="${menu2.menuUrl}"  title="${menu2.menuName}" class="iframeurl">
                  <i class="icon-double-angle-right"></i>${menu2.menuName}
                </a>
              </li>
            </ul>
          </li>
          </c:forEach>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做一道光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值