【Lehr】如何只依靠Jsp和Servlet实现网站的分页功能

分析问题

首先,要明确各个部分的数据需求:
在这里插入图片描述

Jsp

输入:总页码,该页的内容

总页码:知道了总的页码才能打印出对应的跳转页面的点击链接。

该页的内容:…这个当然要知道了

输出:跳转页码

跳转页码:告诉Servlet你要跳转到哪一页,后端才能提供对应的数据。

Servlet

输入:跳转页码

跳转页码:通过跳转页面,执行逻辑层业务,去数据库中取出对应的内容。

输出:总页码,该页的内容

总页码:让前端去打印。

该页的内容:让前端去打印。

数据库

输入:每页的文章数,跳转页码

每页的文章数:提取数据

跳转页码:提取数据

输出:该页的内容,总文章量

该页的内容:从后端再传给前端

总文章量:用来计算总页码的

Servlet部分的实现

代码


		int nowPage = 1;      //当前页码默认为第一页
		if(request.getParameter("nowPage")!=null)
		{
			nowPage = Integer.valueOf(request.getParameter("nowPage"));
		}      //如果前端传入了页码,那么就改为前端传入的
		int eachRow = 3;    //这里规定每页显示3篇文章
		int totalRow = 0;   //总的文章数
		int totalPage = 0;  //总的页数 
		
		//得到文章总数
		totalRow = dao.getTotalRow();
		//得到本页的文章内容
		List<Article> list = dao.getList(nowPage, eachRow);
		
		//文章放入session传给前端		
		request.getSession().setAttribute("List", list);
		
		//计算总页码
		if(totalRow%eachRow==0)   //如果刚好整除,就是那么多了
		{
			totalPage = totalRow/eachRow;
		}
		else      //如果每页还单独多了几页,那就多生成一页
		{
			totalPage = totalRow/eachRow+1;
		}
		
		//把页码数传给前端
		request.getSession().setAttribute("totalPage", totalPage);
		
		//跳转回到主页
		response.sendRedirect("View.jsp");
	}

说明

这里我们需要有四个参数:
nowPage,eachRow,totalRow,totalPage

其中nowPage由前端获得,结合eachRow到数据库中进行筛选(后面会讲)。而totalRow和totalPage则是基于数据库获取,用于计算总的页码。

数据库部分的实现

原理

从上面的代码里发现,我们需要从数据库里得到总的文章数和当前页的内容。
所以接下来分别讲解这两个语句的关键部分。(JDBC代码量太大了我就不贴了,只写sql语句了XD)

得到文章数

SELECT COUNT(*) AS NUM FROM XXX

获取当前页的内容

SELECT * FROM ARTICLE ORDER BY DATE DESC LIMIT ?, ?

这个我要好好谈下…

为了获取指定页的内容,需要用到Limit
Limit后面有两个参数,分别表示从X行开始读取X条数据

很显然,从X行开始 就是我们要的数据的开始位置,比如,我们现在要看第三页,(每页有3条数据),那么第三页的第一条消息也就是第7条,是当前页数-1乘以每页条数的加一。(在草稿本上画一下就知道了XD)。

读取X条数据其实就是我们规定的每页的条数。

所以,采集者的问号补充应该就是这样

			st.setInt(1,(nowPage-1)*eachRow);
			st.setInt(2,eachRow);

Jsp部分的实现

代码

利用JSTL配合EL表达式,前端部分的跳 转栏的代码可以简单的写成:

<div>	
	<ul>
		<c:forEach begin="1" end="${sessionScope.totalPage }" var = "i" >
				<li>
					<a href="ShowServlet?nowPage=${i}">${i}</a>
				</li>
			</c:forEach>
		</ul>	
	</div>	

说明

简单解释一下,首先从后端接受到总页数(totalPage),然后逐个打印,动态生成对应的超链接。其中每个超链接会向后端传递自己对应的页数。

就这样

没了!

实现效果

在这里插入图片描述

发布了33 篇原创文章 · 获赞 26 · 访问量 2623

猜你喜欢

转载自blog.csdn.net/qq_43948583/article/details/89601965
今日推荐