`

自定义分页标签结合spring mvc、bootstrap、mybatis、mysql的使用

 
阅读更多

pager.tld

<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
	version="2.0">
	<description>Pager</description>
	<tlib-version>1.0</tlib-version>
	<short-name>page</short-name>
	<uri></uri>
	<tag>
		<name>createPager</name>
		<tag-class>com.test.utils.Pager</tag-class>
		<body-content>JSP</body-content>
		<attribute>
			<name>curPage</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
			<type>java.lang.Integer</type>
		</attribute>
		<attribute>
			<name>totalPage</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
			<type>java.lang.Integer</type>
		</attribute>
		<attribute>
			<name>pageSize</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
			<type>java.lang.Integer</type>
		</attribute>
		<attribute>
			<name>totalCount</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
			<type>java.lang.Integer</type>
		</attribute>
		<attribute>
			<name>formId</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
			<type>java.lang.String</type>
		</attribute>
	</tag>
</taglib>

 Pager.java

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

/***
 * 分页控件
 * @author 花非花雾非雾
 */
public class Pager extends TagSupport {

	private static final long serialVersionUID = 1L;

	private Integer curPage;
	private Integer totalPage;
	private Integer pageSize = TestConstance.pageSize;
	private Integer totalCount = 0;
	private String formId;

	public void setCurPage(Integer curPage) {
		this.curPage = curPage;
	}

	public void setPageSize(Integer pageSize) {
		this.pageSize = pageSize;
	}

	public void setTotalPage(Integer totalPage) {
		this.totalPage = totalPage;
	}

	public void setFormId(String formId) {
		this.formId = formId;
	}
	
	public Integer getTotalCount() {
		return totalCount;
	}

	public void setTotalCount(Integer totalCount) {
		this.totalCount = totalCount;
	}

	public int doStartTag() throws JspException {
		
		JspWriter out = pageContext.getOut();

		int pageNumber = 0;
		if (totalPage%pageSize==0) {
			pageNumber = totalPage/pageSize;
		} else {
			pageNumber = (totalPage/pageSize)+1;
		}
		if (curPage < 1) {
			curPage = 1;
		}

		try {
			if (pageNumber > 0) {
				out.print("<script type='text/javascript'>" + 
						  		"function go(pageNum){" + 
						  			"var f = document.getElementById('" + formId + "');"+
						  			"f.action = f.action + '?pageNum=' + pageNum + '&pageSize="+pageSize+"';"+
						  			"f.submit();"+
		  						"}" + 
						  "</script>");
				
				out.print("<div class='pagination'><ul>");
				int start = 1;
				int end = totalPage;
				for(int i=4;i>=1;i--){
					if((curPage-i)>=1){
						start = curPage-i;
						break;
					}
				}
				for(int i=4;i>=1;i--){
					if((curPage+i)<=totalPage){
						end = curPage+i;
						break;
					}
				}
				//如果小于9则右侧补齐
				if(end-start+1<=9){
					Integer padLen = 9-(end-start+1);
					for(int i=padLen;i>=1;i--){
						if((end+i)<=totalPage){
							end = end+i;
							break;
						}
					}
				}
				
				//如果还小于9左侧补齐
				if(end-start+1<=9){
					Integer padLen = 9-(end-start+1);
					for(int i=padLen;i>=1;i--){
						if((start-i)>=1){
							start = start-i;
							break;
						}
					}
				}
				
				if(curPage>1){
					if(start>1){
						out.print("<li><a href='javascript:go(1)'>首页</a></li>");
					}
					out.print("<li><a href='javascript:go("+(curPage-1)+")'>上一页</a></li>");
				}
				
				for(int i=start;i<=end;i++){
					if(i==curPage){
						out.print("<li class='active'><a href='#'>" + i + "</a></li>");
					}else{
						out.print("<li><a href='javascript:go("+i+")'>" + i + "</a></li>");
					}
				}
				if(curPage<totalPage){
					out.print("<li><a href='javascript:go("+(curPage+1)+")'>下一页</a></li>");
					if(end<totalPage){
						out.print("<li><a href='javascript:go("+totalPage+")'>尾页</a></li>");
					}
				}
				out.print("<li><a href='javascript:void(0)'>共" + totalPage + "页" + this.totalCount + "条</a></li>");
				out.print("</ul>");
			}

		} catch (IOException e) {
			e.printStackTrace();
		}

		return super.doStartTag();

	}
	
	public static Integer getStartIndex(Integer pageNum, Integer pageSize){
		Integer res = 0;
		if(pageNum>0){
			res = (pageNum-1)*pageSize;
		}
		return res;
	}

}

 BaseController

import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.springframework.ui.Model;

public class BaseController {

	//初始化分页相关信息
	protected void initPage(Map<String,Object> map, Integer pageNum, Integer pageSize, Integer totalCount){
		if(null==pageSize || pageSize.equals("")){
			pageSize = FundTestConstance.pageSize;
		}
		if(pageSize>50){
			pageSize = 50;
		}
		Integer totalPage = (totalCount+pageSize-1)/pageSize;
		if(null==pageNum){
			pageNum = 1;
		}else if(pageNum>totalPage){
			pageNum = totalPage;
		}
		map.put("startIndex", Pager.getStartIndex(pageNum, pageSize));
		map.put("pageNum", pageNum);
		map.put("totalPage", totalPage);
		map.put("pageSize", pageSize);
		map.put("totalCount", totalCount);
		
	}
	
	//将相关数据放入model
	protected void initResult(Model model, List<Object> list, Map<String,Object> map){
		model.addAttribute("list", list);
		Iterator it = map.entrySet().iterator(); 
		while(it.hasNext()){ 
			Map.Entry m = (Map.Entry)it.next(); 
			model.addAttribute(m.getKey().toString(), m.getValue());
	   } 
	}
	
}

 TestController.java

@Controller
public class TestController extends BaseController{
	
	@Autowired
	private TestService testService;
	
	public TestService getTestService() {
		return testService;
	}

	public void setTestService(TestService testService) {
		this.testService = testService;
	}

	@RequestMapping("/test")
	public String test(Model model, @RequestParam(required=false) String type, @RequestParam(required=false) Integer pageNum, 
			@RequestParam(required=false) Integer pageSize) {	
		
		Map<String,Object> map = new HashMap<String,Object>();
		map.put("type", type);
		Integer totalCount = this.testService.getTestsCount(map);
		
		this.initPage(map, pageNum, pageSize, totalCount);
		
		List list = this.testService.getTests(map);
		this.initResult(model, list, map);
		
		return "test";
	}
	
	@RequestMapping("/test/add")
	public String testAdd(@RequestParam String type,Model model) {
		Test test = new Test();
		test.setType(type);
		this.testService.addTest(test);
		return this.test(model,null,null,null);
	}
	
	@RequestMapping("/test/del")
	public String testDel(@RequestParam(required=true) Integer id, @RequestParam(required=false) Integer pageNum, 
			@RequestParam(required=false) Integer pageSize, Model model) {
		this.testService.delTest(id);
		return this.test(model, null, pageNum, pageSize);
	}
	
	@RequestMapping("/test/toEdit")
	public String testToEdit(@RequestParam(required=true) Integer id, Model model) {
		Test test = this.testService.getTestById(id);
		model.addAttribute("test", test);
		return "testEdit";
	}
	
	@RequestMapping("/test/edit")
	public String testedit(@RequestParam(required=true) Integer id,
						  @RequestParam String type,
					      @RequestParam(required=false) Integer pageNum, 
						  @RequestParam(required=false) Integer pageSize,
						  Model model) {
		Test test = new Test();
		test.setType(type);
		this.testService.editTest(test);
		return this.test(model, null, pageNum, pageNum);
	}
	
}

 TestMapper.xml

<select id="getTests"  resultMap="baseResultMap" parameterType="map">
		SELECT id, name, type, create_date, update_date
		FROM test
		WHERE 1=1
			<if test="type!=null and type!=''">
				AND type = #{type}
			</if>
		limit #{startIndex},#{pageSize}
</select>
	
<select id="getTestsCount" resultType="java.lang.Integer" parameterType="map">
		SELECT COUNT(1)
		FROM test
		WHERE 1=1
		<if test="type!=null and type!=''">
			AND type = #{type}
		</if>
</select>

 

分享到:
评论
1 楼 北雁南飞33 2016-04-05  
有源码分享吗

相关推荐

    Spring+Spring MVC+Mybatis+Maven搭建多模块的web项目

    Spring + Spring MVC + Mybatis + Maven搭建多模块的web项目 里面包含了很多配置方面的注释,方便日后维护。 采用了通用Mapper封装了单表的增删改查操作 github地址:https://gitee.com/free/Mapper 采用了分页...

    ssm(spring+spring mvc+mybatis)+bootstrap开发预警后台管理系统

    自己花5天时间写的,带分页查询 模糊查询 按时间查询 js验证手机 验证身份 验证姓名, ... 运行环境 jdk7+tomcat7+mysql+eclipse+maven 项目技术(必填) ...spring+spring mvc+mybatis+bootstrap+jquery+jsp

    ssm(spring mvc+mybatis)+jsp开发javaWeb学生信息与选课系统

    包含源码、数据库文件、演示视频、相关参考论文。 由SpringMVC+MyBatis为主要框架,前端主要由bootstrap完成。数据库交互查询用到分页。...spring+spring mvc+mybatis+JavaScript、jQuery、bootstrap4、particles.js

    ssm(spring+spring mvc+mybatis)+bootstrap开发的报警后台管理系统

    自己花5天时间写的,带分页查询 模糊查询 按时间查询 js验证...spring+spring mvc+mybatis+bootstrap+jquery+jsp http://localhost:8080/demoSSM/index.jsp http://localhost:8080/demoSSM/login.jsp 账号 2 密码 2

    Spring+SpringMVC+Mybatis+Maven+bootstrap+ajax+jQuery整合开发简单的员工后台管理系统

    在本项目中,"Spring+SpringMVC+Mybatis+Maven+bootstrap+ajax+jQuery整合开发简单的员工后台管理系统",我们看到一个基于Java技术栈的Web应用开发实例。这个系统利用了多个核心技术来构建一个功能完备的员工管理...

    springcloud集成mysql+mybatis+分页可运行demo

    【SpringCloud集成MySQL+MyBatis+分页可运行Demo详解】 在当今的微服务架构中,SpringCloud作为主流的微服务治理框架,被广泛应用于各种复杂系统的构建。本示例是一个基于SpringCloud的后端服务,它整合了MySQL...

    mybatis分页(struts2+spring+mybatis)

    本项目“mybatis分页(struts2+spring+mybatis)”演示了如何在Java Web应用中实现基于MyBatis的分页功能,结合Struts2和Spring框架,提供了一个完整的解决方案。下面将详细解释这个项目涉及的知识点。 1. **...

    mybatis分页完整的项目

    该项目结合了Spring和MyBatis两大流行框架,提供了从数据库查询数据并进行分页显示的全套解决方案。 【描述】提到,此项目包括了SQL语句文件,这些文件是为MySQL数据库设计的。用户需要先根据提供的SQL创建相应的...

    基于Springboot+Mybatis+ SpringMvc+springsecrity+Redis完整网站后台管理系统

    项目描述 说明: spring security 全注解式的权限管理 动态配置权限,角色和资源,权限控制到...Springboot+Mybatis+ SpringMvc+springsecrity+Redis+bootstrap+jquery 数据库文件 压缩包内 jar包文件 maven搭建

    spring4 MVC +maven + mysql数据库 + mybatis+根据后台json前台动态生成table

    在本项目中,我们主要探讨的是如何利用Spring4 MVC、Maven、MySQL数据库、MyBatis框架以及前端JSON数据来动态生成表格。这是一个常见的Web应用开发模式,它可以帮助开发者快速构建数据驱动的Web应用程序。 首先,...

    由Spring-SpringMVC-MyBatis-MySQL数据库开发的一个博客系统源码.zip

    由Spring-SpringMVC-MyBatis-MySQL数据库开发的一个博客系统 技术 后端 Spring Spring MVC MyBatis druid-数据库连接池 PageHelper-Mybatis通用分页插件 FreeMarker-模板引擎 前端 Bootstrap jQuery jQuery Form Vue...

    基于ssm开发的***报警后台管理系统

    ssm(spring+spring mvc+mybatis)+bootstrap开发***报警后台管理系统 项目描述 自己花5天时间写的,带分页查询 模糊查询 按时间查询 js验证手机 验证身份证 验证姓名, 配置文件把jdbc密码改成自己的就可以用了 ...

    Springboot+MyBatis+MyBatisPlus+MySQL+Bootstrap增删改查登录分页

    在本教程中,我们将探讨如何使用Spring Boot、MyBatis、MyBatisPlus、MySQL和Bootstrap来构建一个完整的Web应用,包括用户登录功能和用户管理模块,实现增删改查及分页显示。以下是各个技术组件在项目中的作用和实现...

    java SSM实现小区业主管理系统,支持在线js电子签名

    本项目是高质量的在线js电子签名SSM实现增删改查及分页查询实例,非常值得学习,使用了spring MVC+spring+mybatis 框架,mysql数据库,电子签名的数据使用base64存储于数据库,上传图片在前端进行压缩将base64上传至...

    JAVA Maven Spring Boot Mybatis bootstrap增删改查分页实战

    在本项目中,我们主要探讨的是使用JAVA技术栈,结合Maven、Spring Boot、Mybatis以及Bootstrap进行Web应用开发中的增删改查(CRUD)和分页功能的实现。以下将详细介绍这些技术及其在实战中的应用。 1. **JAVA**:...

    基于ssm的学生宿舍管理系统

    ssm学生宿舍管理系统,maven多模块搭建,实现用户分角色登录+分页等技术 项目描述 maven分模块项目+SSM宿舍管理系统+spring mvc+jquery...spring+spring mvc+mybatis+bootstrap+jquery+jsp jar包文件 maven多模块搭建

    JAVA基于SSM框架开发的客户管理系统源码+数据库,后台使用SSM框架,前台使用Bootstrap和jquery框架

    基于spring+spring MVC+MyBatis的BOOT客户管理系统,后台使用SSM框架进行编写,前台页面使用Bootstrap和jquery框架完成的页面展示功能 系统主要实现两大功能模块:用户登录和客户管理 用户登录包含:用户登录,退出...

    (源码)基于SSM框架的员工管理系统.zip

    本项目是一个基于Spring、Spring MVC和MyBatis(SSM)框架的员工管理系统。系统主要实现了对员工和部门信息的增删改查(CRUD)操作。前端使用了Bootstrap和jQuery框架,数据库采用MySQL。项目通过Maven进行构建,并...

    (源码)基于SSM框架的客户管理系统.zip

    系统使用LayUI和Bootstrap进行前端页面的构建,后端采用Spring MVC进行请求处理,MyBatis进行数据库操作,数据库使用MySQL,运行在Tomcat 9服务器上。系统实现了用户的登录验证以及对客户信息的增删改查功能。 ## ...

    一个简单的在线考试系统

    后台 试卷管理(增、删、改、查) 题库管理(增、删、改、查) ...本地准备开发工具IDE,建议使用eclipse 或者springSTS 安装JDK1.8,并配置环境变量 安装maven,并配置本地仓库 安装mysql5.X并配置

Global site tag (gtag.js) - Google Analytics