web.分页功能

一.分页主要在于数据库查询,数据库主要要查两个

1.查询数据

2.查询数据条数,在除每页的条数,返回页数

dao包的操作:

private Connection con;
	private PreparedStatement ps;
	private ResultSet rs;
	//分页查询
	int ts=5;
	public List<XW> c(String a,int ys){
//		int ys=1;
		int kt=1+((ys-1)*ts);
		int jw=ys*ts;
		List<XW> list=new ArrayList<>();
		try {
			con=DBHelper.getcon();
			ps=con.prepareStatement("select*from("
					+ "    select a.*,rownum from a3 a where Aname like ? "
					+ ")b where rownum between ? and ?");
			ps.setString(1,"%"+ a+"%");
			ps.setInt(2, kt);
			ps.setInt(3, jw);
			rs=ps.executeQuery();
			while(rs.next()) {
				XW xw=new XW();
				xw.setId(rs.getInt(1));
				xw.setName(rs.getString(2));
				xw.setNr(rs.getString(3));
				list.add(xw);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.close(con, ps, rs);
		}
		return list;
	}
//查条数,返回页数
	public int c1(String a) {
		int count=0;
		try {
			con=DBHelper.getcon();
			ps=con.prepareStatement("select count(Aid) from a3 where Aname like ?");
			ps.setString(1, "%"+a+"%");
			rs=ps.executeQuery();
			if(rs.next()) {
				count= rs.getInt(1);//拿到条数,拿rs第一列
			}
			return (int)Math.ceil(count/ts);//向上取整,强转为int
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.close(con, ps, rs);
		}
		return 1;
	}

1.select*from(
    select a.*,rownum from a3 a where Aname like '%%'
)b where rownum between 1 and 5

rownum(伪列x.*,rownum)     伪列变实列

2.(int)Math.ceil(count/ts);//向上取整,强转为int

二.页面操作

 <%
            String newName = request.getParameter("newName");
            //设定 当前用户进行分页的名字叫做page
            String index = request.getParameter("page");
            int n=1;//默认页数第一页
            if(index!=null){
                n=Integer.parseInt(index);//设置为你携带的页数
            }
            request.setCharacterEncoding("utf-8");

            //查询当前数据的对应页数
            int maxPage = new Dao().c1(newName);

            //根据页数查询数据,遍历
            for (News news : new Dao().c(newName,n)) {
        %>
           <!--将数据赋值到页面-->
           <a href="${pageContext.request.contextPath}/news/read.jsp?newId=<%=news.getNewsId()%>"
                   data-placement="bottom" data-toggle="tooltip" href="" title="<%=news.getNewsTitle()%>">
                    <%=news.getNewsTitle()%>
                </a>
}
<!--page=<%=Math.max(n - 1, 1)%>判断给的页数少于1为第一页-->
 <a href="index.jsp?page=<%=Math.max(n - 1, 1)%>&newName=<%=newName%>"><span>&laquo;</span></a>
        </li>
        <%
            //根据最大的页码 动态生成
            for(int i=1;i<=maxPage;i++){
        %>
        <li class="<%=i==n?"active":""%>"><a href="index.jsp?page=<%=i%>&newName=<%=newName%>"><%=i%></a></li>
        <%
            }
        %>
        <li>
<!--判断大于最大页为最大页-->
            <a href="index.jsp?page=<%=Math.min(n+1,maxPage)%>&newName=<%=newName%>"><span>&raquo;</span></a>

有几个非常值得注意的点:

1.page=<%=Math.max(n - 1, 1)%>往前一页n减一,总是拿最大值,n不会减到负数

2.class="<%=i==n?"active":""%>"当前页数是被选中的页数是给它添加active样式,当前页数的按钮颜色加深,更好确定处在哪个页数的页面

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
教学-传智播客-项目视频经典之作巴巴运动网106集-27实现Web层的分页功能源代码 所需要的jar文件: (一)、Hibernate: 位于 "\hibernate-distribution-3.3.2.GA" 目录下的jar文件: hibernate3.jar 位于 "\hibernate-distribution-3.3.2.GA\lib\required" 目录下的jar文件: (共7个) antlr-2.7.6.jar commons-collections-3.1.jar dom4j-1.6.1.jar javassist-3.9.0.GA.jar jta-1.1.jar slf4j-api-1.5.8.jar slf4j-nop-1.5.2.jar (二)、JPA: 位于 "\Hibernate\hibernate-entitymanager3.4.0.GA" 目录下的jar文件: hibernate-entitymanager.jar ejb3-persistence.jar hibernate-annotations.jar hibernate-commons-annotations.jar (三)、Spring: 位于 "\spring-framework-2.5.5\dist" 目录下的jar文件: spring.jar 位于 "\spring-framework-2.5.5\lib\aspectj" 目录下的jar文件: (共3个) aspectjrt.jar aspectjweaver.jar 位于 "\spring-framework-2.5.5\lib\cglib" 目录下的jar文件: (共1个) cglib-nodep-2.1_3.jar 位于 "\spring-framework-2.5.5\lib\j2ee\" 目录下的jar文件: common-annotations.jar 位于 "\spring-framework-2.5.5\lib\jakarta-commons" 目录下的jar文件: commons-dbcp.jar commons-pool.jar commons-logging.jar (四)、Struts: 位于 "\Struts\struts-1.3.10\struts-1.3.10-all\struts-1.3.10\lib" 目录下的jar文件: (共20个) antlr-2.7.2.jar(与Hibernate所含antlr-2.7.6.jar文件重复,删除) bsf-2.3.0.jar commons-beanutils-1.8.0.jar commons-chain-1.2.jar commons-digester-1.8.jar commons-fileupload-1.1.1.jar commons-io-1.1.jar commons-logging-1.0.4.jar commons-validator-1.3.1.jar jstl-1.0.2.jar(改为:\spring-framework-2.5.5\lib\j2ee\jstl.jar) oro-2.0.8.jar standard-1.0.6.jar(改为:\spring-framework-2.5.5\lib\jakarta-taglibs\standard.jar) struts-core-1.3.10.jar struts-el-1.3.10.jar struts-extras-1.3.10.jar struts-faces-1.3.10.jar struts-mailreader-dao-1.3.10.jar struts-scripting-1.3.10.jar struts-taglib-1.3.10.jar struts-tiles-1.3.10.jar (五)、Spring+Struts: \spring-framework-2.5.5\dist\modules\spring-webmvc-struts.jar MySQL: mysql-connector-java-5.1.16-bin.jar 运行: http://localhost:8090/control/center/main.do

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值