MVC模式使得应用程序的输入输出处理分割开来。本文是在MVC模式下为实现了的图书管理系统增加一个分页功能,以满足个性化的需求而且不需要大规模地修改代码。
效果:
点击首页
点击下一页
第一步:在接口里增加两个方法,
public Interface BookService{ // ................................ ................................. int getRecordSize(); List<Book> getBookListByPage(int pageNow,int pageSize); }
a、上面的接口有很多方法,用。。。。。表示,本次添加这两个方法,来实现分页的目的。
b、接口里面的方法都是public abstract 的,可以省略不写。
c、第一个方法是得到记录数,从表中查找;第二个方法是得到某一页的记录数,它必须提供当前是第几页(pageNow),pageSize(每页的记录条数)。来得到对应的,List集合。(注意不要用set集合,因为它是无序的)
第二步:在实现接口的类里面实现这两个方法
public class BookServiceImpl implements BookService{ Dbconnection db=new Dbconnection(); ResultSet rs=null; public int getRecordSize() {//使用sql语句得到记录数 // TODO Auto-generated method stub int count=0; String strSql="select count(*) from bookbiao2"; rs=db.executeQuery(strSql); try { while(rs.next()){ count=rs.getInt(1); break; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return count; } public List<Book> getBookListByPage(int pageNow, int pageSize) { // TODO Auto-generated method stub List<Book> books=new ArrayList<Book>(); String strSql="select top "+pageSize+" * from bookbiao2 where " +"bookID not in (select top "+(pageNow-1)*pageSize+" bookID from bookbiao2)"; rs=db.executeQuery(strSql); try { while(rs.next()){ Book book=new Book(); book.setBookID(rs.getInt("BookID")); book.setIsbn(rs.getString("Isbn")); book.setTitle(rs.getString("Title")); book.setPrice(rs.getString("Price")); books.add(book); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return books; } //实现其它方法 。。。。。。。。 。。。。。。。。。 }
分析
a、成员变量,是ResultSet。多条记录,可以查api文档。类似于android
SQLite里面的cursour一样。
b、Dbconnection是一个工具类,它实现了用jdbc连接数据库的方法。而jdbc是sun公司提供的规范,sqlserver实现了这些规范(我们在使用eclipse连数据库时要加载驱动)。
c、getRecordSize(),通过rs.next对记录遍历,统计出了记录的多少。
d、getBookListByPage(int pageNow, int pageSize)
sql语句的解读为在bookbiao选择前pageSize行,且主键bookid不在前pagenow-1行里。
3、接下来,在核心代码实现后就要关心如果在界面层里操作,然后你的操作会返回到核心代码里进行处理了。(利用struts2框架,也近似与MVC)
a、jsp页面里,有四个链接
<a href='<s:url action="Page" ><s:param name="pageNow" value="1"/></s:url>'>首页</a> <a href='<s:url action="Page" ><s:param name="pageNow" value="pageNow-1"/></s:url>'>上一页</a> <a href='<s:url action="Page" ><s:param name="pageNow" value="pageNow+1"/></s:url>'>下一页</a> <a href='<s:url action="Page" ><s:param name="pageNow" value="pageCount"/></s:url>'>末页</a>
b、struts2.xml
<action name="Page" class="com.lin.test.BookManagementAction" method="getBooksByPage"> <result name="success" >/boolcurp/BookList.jsp</result> <result name="fail">/error.jsp</result> </action>
解读为:点击某个链接,会到Action为Page里的struts2.xml里查找,并且传递出了一个参数,最后找到对应的方法处理,界面也会跳转到result节点给的路径。名字必须统一为pageNow这样在java代码里才能保证是对同一个数据进行操作。而value的值也很好理解:首页,上一页,下一页,末页。
c、最后需要的就是在BookManagementAction里面完成struts2里面给Page的处理方法getBooksByPage
package com.lin.test; public class BookManagementAction{ int pageSize=3;//每一页显示了集团记录 int recordSize=0;//这个表一共有多少条记录 int pageCount=0;//一共有多少页 int pageNow=1;//当前是第几页 public int getPageCount() { return pageCount; } public void setPageCount(int pageCount) { this.pageCount = pageCount; } public int getPageNow() { return pageNow; } public void setPageNow(int pageNow) { this.pageNow = pageNow; } public String getBooksByPage(){ recordSize=bs.getRecordSize();// if(recordSize*pageSize==0){//通过总记录和每页的记录数,得到页数 pageCount=recordSize/pageSize; }else{ pageCount=recordSize/pageSize+1; } if(pageNow<1){//防止越界 pageNow=1; } if(pageNow>pageCount){ pageNow=pageCount; } booksList=bs.getBookListByPage(pageNow,pageSize); if(booksList.size()!=0){ str="success"; } return str; } }
分析:pageNow和pageCount,是在jsp里引入了的,所以设计getset方法,里面的代码应该很好理解。
相关推荐
基于Jsp+JavaBean+Servlet实现MVC模式的分页模板 分页没有css,但分页功能齐全 对初学者应该有帮助 分三层编写dao层 service层 web层 数据库可以用ms server2005 或者 mysql5.0 脚本为ms2005.sql 、mysql.sql 切换...
本篇文章将详细讲解如何在基于ASP.NET MVC框架的应用中实现分页功能,以Visual Studio 2008(VSS2008)为开发环境。 **一、MVC模式简介** MVC(Model-View-Controller)是一种设计模式,广泛应用于Web应用开发。它...
在实际开发中,可以使用各种库或内置方法来实现分页,例如在Java的Spring MVC框架中,可以利用`Pageable`接口和`Page`对象来实现分页。 在SSH框架(Struts2、Spring、Hibernate)中,分页通常由Spring整合Hibernate...
首先,我们需要了解MVC模式,它包括模型(Model)、视图(View)和控制器(Controller)三个部分。在这个分页场景中,模型负责数据的获取和处理,控制器处理用户请求并传递数据到视图,视图则展示给用户看。 1. **...
**MVC模式详解** 1. **模型(Model)**:模型是应用程序的核心,负责处理业务逻辑和数据管理。它与数据库或其他数据源交互,获取或存储数据,并在需要时更新视图。 2. **视图(View)**:视图是用户界面,用于展示...
本话题我们将深入探讨在MVC模式下实现分页功能的细节。 **模型(Model)** 在分页上下文中,模型通常包含与数据库交互的部分。这涉及到查询数据库以获取特定页面的数据。例如,如果我们有一个用户表,我们可能需要...
MVC模式包括模型(Model)、视图(View)和控制器(Controller),它们各自负责处理业务逻辑、数据呈现和用户交互。 在ASP.NET MVC中实现无刷新分页,我们需要以下几个关键组件: 1. **控制器(Controller)**:控制...
在这个场景中,我们讨论的是如何在MVC框架下实现分页功能,这对于处理大量数据的网页应用至关重要。分页可以帮助提高用户体验,减少服务器负载,并使数据浏览更加高效。 首先,让我们理解MVC的三个主要组成部分: ...
首先,理解MVC模式(Model-View-Controller)的基础是至关重要的。在ASP.NET MVC中,模型(Model)负责数据管理,视图(View)用于展示数据,而控制器(Controller)处理用户请求并协调模型与视图之间的交互。 在...
**无刷新分页技术在MVC架构中的应用** 在现代Web开发中,用户对界面交互体验的要求越来越高,其中,无刷新分页(Ajax Pagination)...在实际项目中,可以根据具体需求选择合适的库和框架,灵活地实现无刷新分页功能。
ASP.NET MVC5 实现分页查询的示例代码 ASP.NET MVC5 是一个基于 ASP.NET 的Model-View-Controller(MVC)模式的Web应用程序开发框架。该框架提供了一个结构化的开发方式,帮助开发者快速构建Web应用程序。其中,...
这个"mvc扩展方法分页"主题涉及到的是如何在MVC应用中实现高效且用户友好的分页功能,同时支持关键词搜索。 分页是大型数据集管理的关键技术,它允许用户逐步浏览大量信息,而不是一次性加载所有内容,从而提高页面...
此外,还有一些现成的分页库和组件,如在Java Spring MVC中,我们可以使用Spring Data JPA的Pageable接口,或者MyBatis的PageHelper插件,它们提供了方便的分页API,使得开发者可以更高效地实现分页功能。...
这有助于加深对MVC模式的理解,提高Web开发技能。** 综上所述,"MVC案例,支持分页"是一个很好的实践项目,它结合了MVC架构、数据库操作(通过EF)以及实用的分页功能,非常适合初学者作为入门教程。通过分析和实现...
当我们结合这两者来实现分页条时,可以创建一个高效的、无刷新的页面,使用户能够轻松浏览大量数据。 **1. MVC模式解析** - **Model(模型)**:负责处理业务逻辑和数据操作,如从数据库中获取分页数据。 - **View...
本篇将详细讲解如何在MVC(Model-View-Controller)架构下结合JQuery Pager实现高效、友好的分页功能。 **一、MVC框架基础** MVC是一种设计模式,它将应用程序分为三个核心部分:模型(Model)、视图(View)和...
在"asp.net mvc3 分页 + 搜索"的场景中,我们将探讨如何在ASP.NET MVC3应用中实现分页和搜索功能,以达到类似博客园的效果。 **分页** 在大型数据集的展示中,分页是必不可少的,它可以提高用户体验,避免一次性...
为了实现分页,我们需要编写SQL语句,包含LIMIT或OFFSET关键字(Oracle中使用ROWNUM和子查询实现类似功能),以限制返回的记录数量。 在Controller层,Spring MVC提供了一个处理HTTP请求并返回响应的机制。在这里,...
在这个项目中,我们将探讨如何在MVC3环境中集成和实现分页功能,以便在处理大量数据时提高用户体验。 **1. MVC3框架介绍** ASP.NET MVC是微软提供的一种轻量级、模型驱动的Web开发框架,它允许开发者使用测试驱动的...
MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码,尤其是ScottGu的PagedList类和相关方法,经过站长不断完善和改进后推出的...