Spring MVC 关于分页的简单实现

据本人了解,目前较常用的分页实现办法有两种:

  1.每次翻页都修改SQL,向SQL传入相关参数去数据库实时查出该页的数据并显示。

  2.查出数据库某张表的全部数据,再通过在业务逻辑里面进行处理去取得某些数据并显示。

  对于数据量并不大的简单的管理系统而言,第一种实现方法相对来说容易使用较少的代码实现分页这一功能,本文也正是为大家介绍这种方法:

 一、MyBatis数据表配置文件:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper
 3 PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
 4 "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
 5 <mapper namespace="ec.help.dao.UserDao">
 6
 7     <resultMap type="ec.help.bean.User" id="userResult" >
 8             <id column="id" javaType="string" />
 9             <result column="username" javaType="string" />
10             <result column="password" javaType="string" />
11     </resultMap>
12
13     <sql id="userColumn"> id, username, password</sql>
14
15     <select id="getUser" parameterType="map" resultType="ec.help.bean.User" >
16         select  * from User where username=#{0} and password=#{1}
17     </select>
18
19     <select id="getAllUser"  parameterType="map" resultType="ec.help.bean.User" >
20         select  * from User
21     </select>
22
23     <!-- 分页使用SQL -->
24     <select id="getUserByPage"  resultType="ec.help.bean.User" >
25         select * from user limit #{0},#{1}
26     </select>
27
28     <insert id="addUser" parameterType="ec.help.bean.User">
29         insert into User(id,username,password) values(#{id},#{username},#{password})
30     </insert>
31
32
33     <delete id="deleteUser" parameterType="String">
34         delete from User where id=#{id}
35     </delete>
36
37     <select id="showUser" parameterType="String" resultType="ec.help.bean.User" >
38         select  * from User where id=#{id}
39     </select>
40
41     <update id="updateUser" parameterType="map">
42         update User set username=#{0},password=#{1} where id=#{2}
43     </update>
44 </mapper>

SQL中传入的第一个参数为开始的行数,第二个参数为数据条数。

二、Controller中逻辑实现:

 1 @Value("#{configProperties[‘userPageSize‘]}")
 2     private String userPageSize;
 3
 4     @RequestMapping("/listUser.do")
 5     public ModelAndView listUser(String page,Model model){
 6
 7         //每页显示的条数
 8         int pageSize = Integer.parseInt(userPageSize);
 9
10         List<User> users = new ArrayList<User>();
11         users = this.userService.getAllUser();
12
13         //查到的总用户数
14         model.addAttribute("userNum", users.size());
15
16         //总页数
17         int pageTimes;
18         if(users.size()%pageSize == 0)
19         {
20             pageTimes = users.size()/pageSize;
21         }else
22         {
23             pageTimes = users.size()/pageSize + 1;
24         }
25         model.addAttribute("pageTimes", pageTimes);
26
27         //页面初始的时候page没有值
28         if(null == page)
29         {
30             page = "1";
31         }
32
33         //每页开始的第几条记录
34         int startRow = (Integer.parseInt(page)-1) * pageSize;
35         users = this.userService.getUserByPage(startRow, pageSize);
36
37         model.addAttribute("currentPage", Integer.parseInt(page));
38         model.addAttribute("users", users);
39
40         return new ModelAndView("user/listUser");
41     }

三、分页页面文件:

 1 <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
 2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 3 <div class="pagging">
 4         <div class="left">共${userNum}条记录</div>
 5         <div class="right">
 6         <c:if test="${currentPage == 1}">
 7             <span class="disabled"><< 前一页</span>
 8         </c:if>
 9         <c:if test="${currentPage != 1}">
10             <a href="listUser.do?page=${currentPage-1}"><< 前一页</a>
11         </c:if>
12         <c:if test="${currentPage == 1}">
13         <span class="current">1</span>
14         </c:if>
15         <c:if test="${currentPage != 1}">
16         <a href="listUser.do?page=1">1</a>
17         </c:if>
18         <%
19                 int pageTimes = (Integer)session.getAttribute("pageTimes");
20                 for(int i=1;i<pageTimes;i++)
21                 {
22                     request.setAttribute("page", i+1);
23         %>
24         <c:if test="${currentPage == page}">
25             <span class="current"><%=i+1%></span>
26         </c:if>
27         <c:if test="${currentPage != page}">
28              <a href="listUser.do?page=<%=i+1%>"><%=i+1%></a>
29         </c:if>
30         <%} %>
31
32         <c:if test="${currentPage == pageTimes}">
33             <span class="disabled">后一页 >></span>
34         </c:if>
35         <c:if test="${currentPage != pageTimes}">
36         <a href="listUser.do?page=${currentPage+1}">后一页 >></a>
37         </c:if>
38         </div>
39 </div> 

四、实现效果:

时间: 2024-12-11 10:46:48

Spring MVC 关于分页的简单实现的相关文章

mybatis Spring MVC添加分页拦截器

网上有很多封装的mybatis 分页拦截器,但是看起来都比较乱,不能直接套用,在这里贴出项目中的分页源码出来供大家参考. Controller 层: @RequestMapping("/channelList") public String channelList(HttpServletRequest request,AppMarket appMarket,Model model){ String pageNo = request.getParameter("pageNo&q

spring mvc+ajax分页

分页大致思路:页面每次把当前页传到后台并获得从后台传过来的json数据,解析后布局到这个页面上. 1.服务端代码: @Controller public class MemcachedContrller { @Autowired private MemcacheReadService memcacheRead ; private static final Logger LOG = Logger.getLogger(MemcachedContrller.class); //页面初始化 @Reque

spring mvc+mybatis+sql server简单配置

context.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframew

Spring MVC简介

Spring MVC框架是有一个MVC框架,通过实现Model-View-Controller模式来很好地将数据.业务与展现进行分离.从这样一个角度来说,Spring MVC和Struts.Struts2非常类似.Spring MVC的设计是围绕DispatcherServlet展开的,DispatcherServlet负责将请求派发到特定的handler.通过可配置的handler mappings.view resolution.locale以及theme resolution来处理请求并且

spring mvc 经典总结

概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Spring 2.5 又为 Spring MVC 引入了注解驱动功能.现在你无须让 Controller 继承任何接口,无需在 XML 配置文件中定义请求和 Controller 的映射关系,仅仅使用注解就可以让一个 POJO 具有 Controller 的绝大部分功能 —— Spring MVC 框架的易用性得到了进一步的增强.在框架灵活性.易用性和扩展性上,Spring MVC 已经全面超越了其它的 MVC 框架,伴随

Spring MVC学习

Spring MVC 使我们可以简单地,开发灵活且松耦合的Web项目. 在Servlet 2.5及以下,servlet类需要在web.xml文件中,配置<servlet>元素,才能访问这个Servlet. 但在Spring MVC + Servlet 3.0下,通过实现WebApplicationInitializer 接口,便可实现等同web.xml的配置,做到无web.xml.然后可以在WebApplicationInitializer实现类中,通过Spring MVC的 Dispatch

WEB开发技术框架利器之一 -- Spring MVC

A.介绍: Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的. Spring Web MVC也是服务到工作者模式的实现,但进行可优化.前端控制器是DispatcherServlet:应用控制器其实拆为处理器映射器(Handler Mapping)进行处理

Spring MVC基础入门

Spring MVC简介 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的. Spring Web MVC处理请求的流程: 具体执行步骤如下: 1.  首先用户发送请求到前端控制器,前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器进行处理并把

spring MVC上传附件

spring mvc为我们封装了十分简单的上传附件的方法,以下通过一个例子学习. 1.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%