JSP+Servlet培训班作业管理系统[5]–加载角色对应菜单

简介: 本文目录1. 本章任务2. 菜单存储结构3. 登录后将菜单放入Session4. 页面显示菜单列表5. 测试

1. 本章任务

之前已经实现了登录、登录后跳转管理后台、管理后台显示登录人信息的功能。


本章节实现根据登录用户角色(校长master、教师teacher、学生student),左侧菜单栏显示角色对应菜单的功能。


2. 菜单存储结构

如果菜单比较多,而且是灵活定制的,则最好保存在数据库中。此处的培训班作业管理系统比较简单,每个角色拥有的菜单都是固定的,所以可以直接将菜单信息放入静态变量中保存。


定义常量类Constants,代码如下:


package org.maoge.utils;

import java.util.HashMap;

public class Constants {

// 用于保存角色及对应的菜单信息

public static HashMap<String, String[][]> roleMenuMap = new HashMap<String, String[][]>();

static { // 使用static代码块对roleMenuMap进行初始化

 // 注意,二位数组中的每一组表示一个菜单的信息,又通过map建立了角色名和菜单直接的对应关系

 roleMenuMap.put("student", new String[][] { { "页面1", "page1.jsp" }, { "页面2", "page2.jsp" }, { "不存在页面", "xxxx.jsp" }});

}

}

1

2

3

4

5

6

7

8

9

10

解释下,student角色拥有2个菜单,第一个菜单是页面1,对应jsp是page1.jsp;第二个菜单是页面2,对应jsp是page2.jsp。


3. 登录后将菜单放入Session

登录成功后,根据登录用户的角色信息获取对应的菜单,并放入Session便于前端jsp页面取用。


  user = lc.checkLogin(userName, userPassword);

  if (user == null) {

   // 跳转到错误提示页面,并提示用户不存在

   tipInfo = "用户不存在";

   page = "tip.jsp";

  } else {

   // 登录成功,记录用户信息到Session,同时跳转管理后台页面

   request.getSession().setAttribute("loginUser", user);

   page = "index.jsp";

   // 设置菜单

   String[][] loginMenus = Constants.roleMenuMap.get(user.getUserRole());

   request.getSession().setAttribute("loginMenus", loginMenus);

  }

1

2

3

4

5

6

7

8

9

10

11

12

13

此处要稍微了解下Map(键值对)这种数据结构,否则容易看不懂代码。


4. 页面显示菜单列表

此时我们已经将登录用户的菜单信息放入Session中,名为loginMenus,直接取出显示到页面即可。


 <div id="left">

  <ul>

   <c:forEach items="${loginMenus}" var="menu">

    <li>

    <a href="/HomeworkSystem/RouteServlet?childPage=${menu[1]}">${menu[0]}</a>

    </li>

   </c:forEach>

  </ul>

 </div>

1

2

3

4

5

6

7

8

9

解释下,<c:forEach>标签可以遍历loginRoleMenu,menu是代表数组中的每一项。${menu[0]和${menu[1]位置由于使用$,所以会被替换为对应值。


5. 测试

如下图显示了我们设置在常量中的菜单,其中页面1和页面2可以正常跳转。

image.png


相关文章
|
4月前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
5月前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
Java服务器端技术:Servlet与JSP的集成与扩展
57 3
|
5月前
|
存储 缓存 前端开发
Servlet与JSP在Java Web应用中的性能调优策略
Servlet与JSP在Java Web应用中的性能调优策略
53 1
|
5月前
|
安全 Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+jsp实现的健身房管理系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术实现的健身房管理系统。随着健康生活观念的普及,健身房成为日常锻炼的重要场所,高效管理会员信息、课程安排等变得尤为重要。该系统旨在通过简洁的操作界面帮助管理者轻松处理日常运营挑战。技术栈包括:JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Shiro、Spring Boot 2.0等。系统功能覆盖登录、会员管理(如会员列表、充值管理)、教练管理、课程管理、器材管理、物品遗失管理、商品管理及信息统计等多方面。
|
5月前
|
供应链 前端开发 Java
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
这篇文章通过一个服装库存管理系统的实例,展示了在Spring Boot项目中使用Ajax、JSON、layui、MVC架构和iframe等技术,涵盖了注册登录、权限管理、用户管理、库存管理等功能,并提供了系统运行环境和技术要求的详细说明。
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
|
5月前
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
基于Servlet和JSP的Java Web应用开发指南
137 0
|
5月前
|
前端开发 安全 Java
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
37 0
|
5月前
|
监控 前端开发 Java
揭秘Web开发神器:Servlet、过滤器、拦截器、监听器如何联手打造无敌博客系统,让你的用户欲罢不能!
【8月更文挑战第24天】在Java Web开发中,Servlet、过滤器(Filter)、拦截器(Interceptor,特指Spring MVC中的)及监听器(Listener)协同工作,实现复杂应用逻辑。以博客系统为例,Servlet处理文章详情请求,过滤器(如LoginFilter)检查登录状态并重定向,Spring MVC拦截器(如LoggingInterceptor)提供细粒度控制(如日志记录),监听器(如SessionListener)监控会话生命周期事件。这些组件共同构建出高效、有序的Web应用程序。
47 0
|
7月前
|
自然语言处理 前端开发 Java
Servlet与JSP:Java Web开发的基石技术详解
【6月更文挑战第23天】Java Web的Servlet与JSP是动态网页的核心。Servlet是服务器端的Java应用,处理HTTP请求并响应;JSP则是结合HTML与Java代码的页面,用于动态内容生成。Servlet通过生命周期方法如`init()`、`service()`和`destroy()`工作,而JSP在执行时编译成Servlet。两者在MVC架构中分工,Servlet处理逻辑,JSP展示数据。尽管有Spring MVC等框架,Servlet和JSP仍是理解Web开发基础的关键。
134 12
|
7月前
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
【6月更文挑战第23天】构建Java Web应用,Servlet与JSP携手打造在线图书管理系统,涵盖需求分析、设计、编码到测试。通过实例展示了Servlet如何处理用户登录(如`LoginServlet`),JSP负责页面展示(如`login.jsp`和`bookList.jsp`)。应用基于MySQL数据库,包含用户和图书表。登录失败显示错误信息,成功后展示图书列表。部署到Tomcat服务器测试功能。此基础教程为深入Java Web开发奠定了基础。
153 10