JSTL标签和分页查询

作用: 替换java脚本, 配合EL标签式,

执行在服务器端执行, 把jstl执行之后的结果响应给客户端浏览器,

JSTL标签在Html标签之前执行

使用步骤:

1.导入jstl依赖:

2.在使用jstl标签的jsp页面, 使用 taglib指令,导入标签库

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

prefix: 前缀, 任意取名, 规范名: core标签库: c 比如: <c:div> 使用前缀区分html标签

core所有的标签名: <c:标签名>

uri: 对应jstl标签的url, 固定写法, 导入jstl标签库, 选择的是 jsp/jstl的标签库

3.直接使用jstl标签,

if标签: <c:if test="条件"> </c:if>

没有else标签,没有else if标签

choose标签:

​​​​​​​
<c:choose>
      <c:when test="${score >= 90}">
          <p>优秀</p>
      </c:when>
      <c:when test="${score >= 80}">
          <p>良好</p>
      </c:when>
      <c:when test="${score >= 60}">
          <p>及格</p>
      </c:when>
      <c:otherwise>
          <p>不及格</p>
      </c:otherwise>
  </c:choose>

foreach标签: for循环

fori循环:

<c:forEach var="i" begin="0" end="9" step="2">
      <h1>${i}</h1>
 </c:forEach>

增强for循环:

<c:forEach var="admin" items="${admins}">
    <tr>
        <th>${admin.id}</th>
        <th>${admin.username}</th>
        <th>${admin.password}</th>
    </tr>
</c:forEach>

for循环: 有一个varStatus="变量" , 得到for循环的循环状态对象

forEach标签还有一个属性:varStatus,这个属性用来指定接收“循环状态”的变量名,例如:<forEach varStatus=”vs” …/>,这时就可以使用vs这个变量来获取循环的状态了。

  • count:int类型,当前以遍历元素的个数; 第几次循环,从1开始

  • index:int类型,当前元素的下标; 从0开始

  • first:boolean类型,是否为第一个元素;

  • last:boolean类型,是否为最后一个元素;

分页查询 重要

分页查询的后台实现:

前端传递请求参数:

1.页码 数字

2.每页显示多少行 数字 (有的项目可以不需要传递, 后台给的默认值)

响应给前端的数据:

  1. 总记录数: 查询总条数 sql语句: select count(1) ...

  2. 当前页码: 当前显示第几页 请求参数

  3. 总页数: 计算出来, 根据总记录数与页容量求出的

    • 总页数 = 总记录数%页容量==0?总记录数/页容量:总记录数/页容量+1

  4. 页容量: 每页显示多少行 请求参数

  5. 当前页记录(集合), 当前页显示的数据: sql: select * from... limit 序号,页容量

    java面向对象, 封装, 把5个数据封装成一个对象: 分页实体类 Page

    序号 = (页码 -1) * 页容量

 

sql语句:

select count(1) ...

select * from... limit 序号,页容量

注意: Dao类的一个方法控制在只执行一条sql语句

<div>
        <nav aria-label="Page navigation">
            <ul class="pagination">
                <c:if test="${pb.currentPage == 1}">
                    <li class="disabled">
                        <span aria-hidden="true">&laquo;</span>
                    </li>
                </c:if>

                <c:if test="${pb.currentPage != 1}">
                    <li>
                        <a href="${pageContext.request.contextPath}/user/queryByPage?currentPage=${pb.currentPage - 1}" aria-label="Previous">
                            <span aria-hidden="true">&laquo;</span>
                        </a>
                  </li>
                </c:if>



                <c:forEach begin="1" end="${pb.totalPages}" var="i" >
                    <c:if test="${pb.currentPage == i}">
                        <li class="active"><span>${i}</span></li>
                    </c:if>
                    <c:if test="${pb.currentPage != i}">
                        <li><a href="${pageContext.request.contextPath}/user/queryByPage?currentPage=${i}">${i}</a></li>
                    </c:if>
                </c:forEach>

                <!--如果当前页 == 总页数 -->
                <c:if test="${pb.currentPage  == pb.totalPages}">
                     <li class="disabled">
                         <span aria-hidden="true">&raquo;</span>
                     </li>
                </c:if>
                    <!--如果当前页  < 总页数 -->
                <c:if test="${pb.currentPage < pb.totalPages}">
                    <li>
                        <a href="${pageContext.request.contextPath}/user/queryByPage?currentPage=${pb.currentPage + 1}" aria-label="Next">
                            <span aria-hidden="true">&raquo;</span>
                        </a>
                    </li>
                </c:if>

                <span style="font-size: 25px;margin-left: 5px;">
                    共${pb.count}条记录,共${pb.totalPages}页
                </span>
            </ul>
        </nav>
    </div>

 

高级查询(动态条件查询)带分页 必须掌握

前端条件是一个动态组合, 可能没有条件, 可能有五个条件,可能一个条件, 可能二个,可能三个...

后台接收这些条件, sql语句的条件动态的

根据条件查询的时候, 很多数据,使用分页, 当点击其他页码, 条件存在()

前端的页面改造

之前点击页码, 使用超链接直接发送请求给后台, 无条件查询表单无关系

修改之后: 点击页码,把点击页码值保存到查询表单中, 提交查询表单

 //分页查询
function query(currentPage){
    //console.log(currentPage);
    //给查询表单的隐藏域赋值
    $("#currentPageInput").val(currentPage);
    //提交查询表单
    $("#queryForm").submit();
}

动态sql:

根据UserCondition的对应属性的值是否有数据,有数据,添加条件, 没有: 不添加

java中sql语句: 字符串, 最终做字符串的拼接

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值