`

MVC模式实现分页功能

阅读更多



 

    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方法,里面的代码应该很好理解。

 

  

 

    

  • 大小: 8.4 KB
  • 大小: 5.8 KB
分享到:
评论

相关推荐

    基于Jsp+JavaBean+Servlet实现MVC模式的分页模板

    基于Jsp+JavaBean+Servlet实现MVC模式的分页模板 分页没有css,但分页功能齐全 对初学者应该有帮助 分三层编写dao层 service层 web层 数据库可以用ms server2005 或者 mysql5.0 脚本为ms2005.sql 、mysql.sql 切换...

    mvc实现分页功能--VSS2008

    本篇文章将详细讲解如何在基于ASP.NET MVC框架的应用中实现分页功能,以Visual Studio 2008(VSS2008)为开发环境。 **一、MVC模式简介** MVC(Model-View-Controller)是一种设计模式,广泛应用于Web应用开发。它...

    MVC框架和分页

    在实际开发中,可以使用各种库或内置方法来实现分页,例如在Java的Spring MVC框架中,可以利用`Pageable`接口和`Page`对象来实现分页。 在SSH框架(Struts2、Spring、Hibernate)中,分页通常由Spring整合Hibernate...

    可重用的MVC分页方法(ASP.NET MVC)

    首先,我们需要了解MVC模式,它包括模型(Model)、视图(View)和控制器(Controller)三个部分。在这个分页场景中,模型负责数据的获取和处理,控制器处理用户请求并传递数据到视图,视图则展示给用户看。 1. **...

    mvc模式下分页代码

    本话题我们将深入探讨在MVC模式下实现分页功能的细节。 **模型(Model)** 在分页上下文中,模型通常包含与数据库交互的部分。这涉及到查询数据库以获取特定页面的数据。例如,如果我们有一个用户表,我们可能需要...

    Mvc无刷新分页

    MVC模式包括模型(Model)、视图(View)和控制器(Controller),它们各自负责处理业务逻辑、数据呈现和用户交互。 在ASP.NET MVC中实现无刷新分页,我们需要以下几个关键组件: 1. **控制器(Controller)**:控制...

    用MVC实现的分页

    在这个场景中,我们讨论的是如何在MVC框架下实现分页功能,这对于处理大量数据的网页应用至关重要。分页可以帮助提高用户体验,减少服务器负载,并使数据浏览更加高效。 首先,让我们理解MVC的三个主要组成部分: ...

    ASP.NET MVC分页

    首先,理解MVC模式(Model-View-Controller)的基础是至关重要的。在ASP.NET MVC中,模型(Model)负责数据管理,视图(View)用于展示数据,而控制器(Controller)处理用户请求并协调模型与视图之间的交互。 在...

    mvc无刷新分页

    **无刷新分页技术在MVC架构中的应用** 在现代Web开发中,用户对界面交互体验的要求越来越高,其中,无刷新分页(Ajax Pagination)...在实际项目中,可以根据具体需求选择合适的库和框架,灵活地实现无刷新分页功能。

    【ASP.NET编程知识】ASP.NET MVC5 实现分页查询的示例代码.docx

    ASP.NET MVC5 实现分页查询的示例代码 ASP.NET MVC5 是一个基于 ASP.NET 的Model-View-Controller(MVC)模式的Web应用程序开发框架。该框架提供了一个结构化的开发方式,帮助开发者快速构建Web应用程序。其中,...

    mvc扩展方法分页分页

    这个"mvc扩展方法分页"主题涉及到的是如何在MVC应用中实现高效且用户友好的分页功能,同时支持关键词搜索。 分页是大型数据集管理的关键技术,它允许用户逐步浏览大量信息,而不是一次性加载所有内容,从而提高页面...

    简单的mvc分页实现

    此外,还有一些现成的分页库和组件,如在Java Spring MVC中,我们可以使用Spring Data JPA的Pageable接口,或者MyBatis的PageHelper插件,它们提供了方便的分页API,使得开发者可以更高效地实现分页功能。...

    MVC案例,支持分页

    这有助于加深对MVC模式的理解,提高Web开发技能。** 综上所述,"MVC案例,支持分页"是一个很好的实践项目,它结合了MVC架构、数据库操作(通过EF)以及实用的分页功能,非常适合初学者作为入门教程。通过分析和实现...

    mvc+(Ajax)分页条

    当我们结合这两者来实现分页条时,可以创建一个高效的、无刷新的页面,使用户能够轻松浏览大量数据。 **1. MVC模式解析** - **Model(模型)**:负责处理业务逻辑和数据操作,如从数据库中获取分页数据。 - **View...

    MVC 分页 JQuery Pager

    本篇将详细讲解如何在MVC(Model-View-Controller)架构下结合JQuery Pager实现高效、友好的分页功能。 **一、MVC框架基础** MVC是一种设计模式,它将应用程序分为三个核心部分:模型(Model)、视图(View)和...

    asp.net mvc3 分页 + 搜索

    在"asp.net mvc3 分页 + 搜索"的场景中,我们将探讨如何在ASP.NET MVC3应用中实现分页和搜索功能,以达到类似博客园的效果。 **分页** 在大型数据集的展示中,分页是必不可少的,它可以提高用户体验,避免一次性...

    spring mvc实现Oracle分页

    为了实现分页,我们需要编写SQL语句,包含LIMIT或OFFSET关键字(Oracle中使用ROWNUM和子查询实现类似功能),以限制返回的记录数量。 在Controller层,Spring MVC提供了一个处理HTTP请求并返回响应的机制。在这里,...

    MVC3分页打包项目

    在这个项目中,我们将探讨如何在MVC3环境中集成和实现分页功能,以便在处理大量数据时提高用户体验。 **1. MVC3框架介绍** ASP.NET MVC是微软提供的一种轻量级、模型驱动的Web开发框架,它允许开发者使用测试驱动的...

    MvcPager分页示例MVC2.0源码

    MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码,尤其是ScottGu的PagedList类和相关方法,经过站长不断完善和改进后推出的...

    MVC默认路由实现分页(PagerExtend.dll下载)

    2. 分页实现分析:实现分页功能时,需注意几个关键点: a. 需要验证各个数字参数,确保它们的有效性。例如,当前页码必须是大于等于1的整数,每页显示条数也必须是正整数。 b. 计算总页数时,如果数据总数和每页条...

Global site tag (gtag.js) - Google Analytics