jsp 根据数据库内容循环生成二级菜单
时间: 2024-05-08 18:17:31 浏览: 120
纯jsp实现3级联动菜单
3星 · 编辑精心推荐
假设你有一个数据库表,里面包含了一些一级菜单和二级菜单的信息,可以采用以下的步骤来循环生成二级菜单:
1. 首先连接数据库,查询需要的数据。
2. 遍历查询结果,将一级菜单和二级菜单分别保存到不同的数组中。
3. 利用循环语句,依次输出一级菜单的名字,并在其下方生成对应的二级菜单。
4. 在生成二级菜单时,需要判断该二级菜单是否属于当前的一级菜单,如果是则输出。
下面是一个简单的示例代码:
```
<%
// 连接数据库,查询数据
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "123456";
conn = DriverManager.getConnection(url, username, password);
stmt = conn.createStatement();
String sql = "SELECT * FROM menu";
rs = stmt.executeQuery(sql);
// 将一级菜单和二级菜单分别保存到数组中
ArrayList<String> parentMenus = new ArrayList<String>();
ArrayList<String[]> subMenus = new ArrayList<String[]>();
while (rs.next()) {
String parentMenu = rs.getString("parent_menu");
String subMenu = rs.getString("sub_menu");
parentMenus.add(parentMenu);
subMenus.add(subMenu.split(","));
}
// 循环输出一级菜单和对应的二级菜单
for (int i = 0; i < parentMenus.size(); i++) {
String parentMenu = parentMenus.get(i);
out.println("<li>" + parentMenu + "</li>");
String[] subMenuArr = subMenus.get(i);
out.println("<ul>");
for (String subMenu : subMenuArr) {
if (subMenu.startsWith(parentMenu + "-")) {
out.println("<li>" + subMenu.split("-")[1] + "</li>");
}
}
out.println("</ul>");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭数据库连接
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
%>
```
上面的代码中,我们首先连接数据库,查询所有的菜单信息,并将一级菜单和二级菜单分别保存到 `parentMenus` 和 `subMenus` 数组中。然后我们使用循环语句依次输出每个一级菜单,并在其下方生成对应的二级菜单。在生成二级菜单时,我们使用了一个判断,判断该二级菜单是否属于当前的一级菜单,如果是则输出。最后,我们关闭了数据库连接。
需要注意的是,上面的代码仅仅是一个示例,实际情况下需要根据具体的需求进行修改。例如,如果菜单比较多,可以考虑采用分页的方式进行显示;如果需要对菜单进行操作(例如添加、修改、删除等),则需要编写相应的代码来实现。
阅读全文