使用jstl步骤:
- 导入四个jar包
- 在jsp页面中引用
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
jstl的一些简单标签
<!-- 输出文字到页面 ,不能使用el表达式-->
<c:out value="我们学习jstl"></c:out>
<!-- 给变量赋值 -->
<c:set value="tong0" var="name"></c:set>
<c:out value="我是:${name }"></c:out>
<!-- if标签 -->
<c:if test="${name == 'tong' }">
<h1>${name }你好</h1>
</c:if>
<!-- choose标签 实现多重判断 -->
<c:choose>
<c:when test="${name == 'tong' }">
<h1>tong 你请吃饭</h1>
</c:when>
<c:when test="${name == 'Jum' }">
<h1>jum 去k歌</h1>
</c:when>
<c:when test="${name == 'li' }">
<h1>li 来打游戏</h1>
</c:when>
<c:otherwise>
<h1>不好意思,你是谁?</h1>
</c:otherwise>
</c:choose>
<!-- 固定次数的循环 -->
<c:forEach var="i" begin="10" end="20" step="1">
<p style="font-size: ${i}px">这是段落${i }</p>
</c:forEach>
<%
IUserDAOImpl dao = new IUserDAOImpl();
List<User> users = dao.selectAllUsers();
pageContext.setAttribute("users", users);
%>
<c:forEach var="user" items="${users }">
<p>手机号:${user.user_tel },
密码:${user.user_password }
</c:forEach>
分页的实现
好处:提高加载速度,方便用户操作。
思路:
1)计算总的页数 = 总行数 / 每页条数
2)添加DAO层分页方法,使用limit关键字实现分页查询
查询总行数
3)在Service层添加分页方法,对分页数据进行封装
4)定义Servlet调用分页功能执行查询
5)JSP获得分页对象,绘制超链接
package com.wedding.bean;
import java.util.List;
/*
* 分页的包装类page
*/
public class Page<T> {
public static final int PAGE_SIZE = 10;
private List<T> data;
private int pageCount;
private int currentPage;
public List<T> getData() {
return data;
}
public void setData(List<T> data) {
this.data = data;
}
public int getPageCount() {
return pageCount;
}
public void setPageCount(int pageCount) {
this.pageCount = pageCount;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
}
@Override
public Page<Hotel> findHotelsByPage(int pageNo, int pageSize) {
int total = hotelDao.selectCount();
int pageCount = total % Page.PAGE_SIZE == 0 ?
total / Page.PAGE_SIZE : total/ Page.PAGE_SIZE + 1;
List<Hotel> hotels = hotelDao.selectHotelsByPage((pageNo - 1) * Page.PAGE_SIZE,pageSize);
Page<Hotel> page = new Page<Hotel>();
page.setCurrentPage(pageNo);
page.setData(hotels);
page.setPageCount(pageCount);
return page;
}
使用bootstrap优化分页
<div style="width:100%;text-align:center">
<nav aria-label="Page navigation">
<ul class="pagination">
<c:choose>
<c:when test="${page.currentPage == 1 }">
<li class="disabled">
</c:when>
<c:otherwise>
<li>
</c:otherwise>
</c:choose>
<a href="findHotelsByPage.do?pageNo=${page.currentPage-1 }" aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
<c:forEach var="i" begin="1" end="${page.pageCount }" step="1">
<c:choose>
<c:when test="${page.currentPage==i}">
<li class="active">
</c:when>
<c:otherwise>
<li>
</c:otherwise>
</c:choose>
<a href="findHotelsByPage.do?pageNo=${i }">${i }</a></li>
</c:forEach>
<c:choose>
<c:when test="${page.currentPage == page.pageCount }">
<li class="disabled">
</c:when>
<c:otherwise>
<li>
</c:otherwise>
</c:choose>
<a href="findHotelsByPage.do?pageNo=${page.currentPage+1 }" aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
</ul>
</nav>
</div>