项目实战---数据库提取数据并展示在JSP

tech2023-02-05  99

JSTL标签的使用

设备单表查询:用户多表查询:预期结果:有两个表

设备单表查询:

在jsp页面开头写上所要用的标签库

<%@ taglib prefix="s" uri="/struts-tags"%> <%@ page import="java.io.*,java.util.*,java.sql.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

在body内写上链接所需数据,包括数据库连接所需的JDBC(MYSQL8.0和5.0有不一样的jar包和不一样的写法,此处是MYSQL8.0)还有账号和密码

<sql:setDataSource var="snapshot" driver="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://localhost:3306/equipmentmgr?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true" user="root" password="123456" />

采用sql标签取出对应数据:

<sql:query dataSource="${snapshot}" var="result"> SELECT distinct BUILD FROM `d_area` </sql:query>

因为区域信息中有重复的楼,所以说需要获取distinct buid 然后foreach循环:

<c:forEach var="row" items="${result.rows}"> <li class="layui"><c:out value="${row.build}"/>号楼 </li> </c:forEach>

就可以展示楼号 同理对应的全部信息是依靠来显示

<div class="layui-tab-content"> <div class="layui-tab-item layui-show"> <div class="table-responsive"> <table class="layui-table" lay-skin="line" lay-size="lg" id="table"> <thead> <tr> <th>楼号</th> <th>层数</th> <th>操作</th> </tr> </thead> <tbody> <sql:query dataSource="${snapshot}" var="result2"> SELECT * FROM `d_area` </sql:query> <c:forEach var="row" items="${result2.rows}"> <tr> <td><c:out value="${row.build}"/></td> <td><c:out value="${row.floor}"/></td> <td> <div class="layui-table-cell laytable-cell-1-0-10"> <a class="layui-btn layui-btn-normal layui-btn-xs">修改</a> <a class="layui-btn layui-btn-danger layui-btn-xs delete">删除</a> </div> </td> </tr> </c:forEach> </tbody> </table> </div> </div>

最后是根据不同楼号来显示不同层数信息

<c:forEach var="row1" items="${result.rows}"> <!-- 首先获得楼号数据 --> <sql:query dataSource="${snapshot}" var="result3"> SELECT FLOOR FROM `d_area` where BUILD=${row1.build} </sql:query> <!-- 在获取对应楼号的楼层信息 --> <div class="layui-tab-item"> <div class="table-responsive"> <table class="layui-table" lay-skin="line" lay-size="lg" id="table"> <thead> <tr> <th>楼号</th> <th>层数</th> <th>操作</th> </tr> </thead> <tbody> <c:forEach var="row2" items="${result3.rows}"> <tr> <td><c:out value="${row1.build}"/>号楼</td> <td><c:out value="${row2.floor}"/></td> <td> <div class="layui-table-cell laytable-cell-1-0-10"> <a class="layui-btn layui-btn-normal layui-btn-xs">修改</a> <a class="layui-btn layui-btn-danger layui-btn-xs delete">删除</a> </div> </td> </tr> </c:forEach> </tbody> </table> </div> </div> </c:forEach> <!-- foreach内循环foreach -->

用户多表查询:

预期结果:有两个表

有两个表role和user,user的user_role属性和role id相连接 期待结果是获取到所有role type=2的user name

<sql:query dataSource="${snapshot}" var="role"> SELECT * FROM `d_role` where TYPE='2' </sql:query> <div class="layui-tab layui-tab-card"> <ul class="layui-tab-title"> <li class="layui-this">全部</li> <c:forEach var="fix" items="${role.rows}"> <sql:query dataSource="${snapshot}" var="user"> SELECT * FROM `d_user` where USER_ROLE=${fix.ID} </sql:query> <c:forEach var="fixman" items="${user.rows}"> <li class="layui"><c:out value="${fixman.nickname}"/> </li> </c:forEach>> </c:forEach>

效果

最新回复(0)