基于SSM框架下的分页系统

基于SSM框架下的分页系统,根据视频学习的案例,这里可提供下载,方便研究。

下载链接:https://download.csdn.net/download/qq_33575618/10554497

ps:本文所写的项目为以前的项目进行修改,与案例项目不同,建议参考案例中的项目进行研究,案例中的SSM框架也是相对完善的。

首先需要用到自定义标签的使用。

1)页面文件标识

<!-- 自定义标签 -->
<%@ taglib prefix="itcast" uri="http://itcast.cn/common/"%>

 2)定义工具类

NavigationTag.java

package util;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Map;

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

/**
 * 显示格式 上一页 1 2 3 4 5 下一页
 */
public class NavigationTag extends TagSupport {
	static final long serialVersionUID = 2372405317744358833L;

	/**
	 * request 中用于保存Page<E> 对象的变量名,默认为“page”
	 */
	private String bean = "page";

	/**
	 * 分页跳转的url地址,此属性必须
	 */
	private String url = null;

	/**
	 * 显示页码数量
	 */
	private int number = 5;

	@Override
	public int doStartTag() throws JspException {
		JspWriter writer = pageContext.getOut();
		HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
		Page page = (Page) request.getAttribute(bean);
		if (page == null)
			return SKIP_BODY;
		url = resolveUrl(url, pageContext);
		try {
			// 计算总页数
			int pageCount = page.getTotal() / page.getSize();
			if (page.getTotal() % page.getSize() > 0) {
				pageCount++;
			}
			writer.print("<nav><ul class=\"pagination\">");
			// 显示“上一页”按钮
			if (page.getPage() > 1) {
				String preUrl = append(url, "page", page.getPage() - 1);
				preUrl = append(preUrl, "rows", page.getSize());
				writer.print("<li><a href=\"" + preUrl + "\">上一页</a></li>");
			} else {
				writer.print("<li class=\"disabled\"><a href=\"#\">上一页</a></li>");
			}
			// 显示当前页码的前2页码和后两页码
			// 若1 则 1 2 3 4 5, 若2 则 1 2 3 4 5, 若3 则1 2 3 4 5,
			// 若4 则 2 3 4 5 6 ,若10 则 8 9 10 11 12
			int indexPage = (page.getPage() - 2 > 0) ? page.getPage() - 2 : 1;
			for (int i = 1; i <= number && indexPage <= pageCount; indexPage++, i++) {
				if (indexPage == page.getPage()) {
					writer.print("<li class=\"active\"><a href=\"#\">" + indexPage
							+ "<span class=\"sr-only\">(current)</span></a></li>");
					continue;
				}
				String pageUrl = append(url, "page", indexPage);
				pageUrl = append(pageUrl, "rows", page.getSize());
				writer.print("<li><a href=\"" + pageUrl + "\">" + indexPage + "</a></li>");
			}
			// 显示“下一页”按钮
			if (page.getPage() < pageCount) {
				String nextUrl = append(url, "page", page.getPage() + 1);
				nextUrl = append(nextUrl, "rows", page.getSize());
				writer.print("<li><a href=\"" + nextUrl + "\">下一页</a></li>");
			} else {
				writer.print("<li class=\"disabled\"><a href=\"#\">下一页</a></li>");
			}
			writer.print("</nav>");
		} catch (IOException e) {
			e.printStackTrace();
		}
		return SKIP_BODY;
	}

	private String append(String url, String key, int value) {

		return append(url, key, String.valueOf(value));
	}

	/**
	 * 为url 参加参数对儿
	 * 
	 * @param url
	 * @param key
	 * @param value
	 * @return
	 */
	private String append(String url, String key, String value) {
		if (url == null || url.trim().length() == 0) {
			return "";
		}

		if (url.indexOf("?") == -1) {
			url = url + "?" + key + "=" + value;
		} else {
			if (url.endsWith("?")) {
				url = url + key + "=" + value;
			} else {
				url = url + "&amp;" + key + "=" + value;
			}
		}

		return url;
	}

	/**
	 * 为url 添加翻页请求参数
	 * 
	 * @param url
	 * @param pageContext
	 * @return
	 * @throws javax.servlet.jsp.JspException
	 */
	private String resolveUrl(String url, javax.servlet.jsp.PageContext pageContext) throws JspException {
		// UrlSupport.resolveUrl(url, context, pageContext)
		Map params = pageContext.getRequest().getParameterMap();
		for (Object key : params.keySet()) {
			if ("page".equals(key) || "rows".equals(key))
				continue;
			Object value = params.get(key);
			if (value == null)
				continue;
			try {
				if (value.getClass().isArray()) {
					// 解决GET乱码问题
					// value = new String(((String[])
					// value)[0].getBytes("ISO-8859-1"), "UTF-8");

					value = ((String[]) value)[0];
					url = append(url, key.toString(), value.toString());
				} else if (value instanceof String) {
					// 解决GET乱码问题
					// value = new String(((String)
					// value).getBytes("ISO-8859-1"), "UTF-8");
					value = (String) value;
					url = append(url, key.toString(), value.toString());
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return url;
	}

	/**
	 * @return the bean
	 */
	public String getBean() {
		return bean;
	}

	/**
	 * @param bean
	 *            the bean to set
	 */
	public void setBean(String bean) {
		this.bean = bean;
	}

	/**
	 * @return the url
	 */
	public String getUrl() {
		return url;
	}

	/**
	 * @param url
	 *            the url to set
	 */
	public void setUrl(String url) {
		this.url = url;
	}

	public void setNumber(int number) {
		this.number = number;
	}

}

 Page.java

package util;

import java.util.List;

public class Page<T> {
	/**
	 * 
	 * @param total
	 *            查询数据总条数
	 * @param page
	 *            当前页码数
	 * @param size
	 *            每页显示数据条数
	 * @param rows
	 *            查询结果集
	 */
	
	private int total;
	private int page;
	private int size;
	private List<T> rows;

	public Page() {
		super();
	}

	public Page(int total, int page, int size, List<T> rows) {
		super();
		this.total = total;
		this.page = page;
		this.size = size;
		this.rows = rows;
	}

	public int getTotal() {
		return total;
	}

	public void setTotal(int total) {
		this.total = total;
	}

	public int getPage() {
		return page;
	}

	public void setPage(int page) {
		this.page = page;
	}

	public int getSize() {
		return size;
	}

	public void setSize(int size) {
		this.size = size;
	}

	public List<T> getRows() {
		return rows;
	}

	public void setRows(List<T> rows) {
		this.rows = rows;
	}

}

 3)commons.tld

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE taglib
  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
  "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
	<tlib-version>2.0</tlib-version>
	<jsp-version>1.2</jsp-version>
	<short-name>common</short-name>
	<uri>http://itcast.cn/common/</uri>
	<display-name>Common Tag</display-name>
	<description>Common Tag library</description>

	<tag>
		<name>page</name>
		<tag-class>util.NavigationTag</tag-class>
		<body-content>JSP</body-content>
		<description>create navigation for paging</description>
		<attribute>
			<name>bean</name>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>number</name>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>url</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
	</tag>
</taglib>

一:创建pojo成员变量

1)businesses.java

package number;

public class businesses {
	private int ID;
	private String boss_name;
	private String business_name;
	private String reward;
	private String time;
	private String number;
	private String place;
	private String add_time;
	private boolean or_top;
	private String reward_style;
	private String business_detail;

	@Override
	public String toString() {
		return "businesses [ID=" + ID + ", boss_name=" + boss_name + ", business_name=" + business_name + ", reward="
				+ reward + ", time=" + time + ", number=" + number + ", place=" + place + ", add_time=" + add_time
				+ ", or_top=" + or_top + ", reward_style=" + reward_style + ", business_detail=" + business_detail
				+ "]";
	}

	public int getID() {
		return ID;
	}

	public void setID(int iD) {
		ID = iD;
	}

	public String getBoss_name() {
		return boss_name;
	}

	public void setBoss_name(String boss_name) {
		this.boss_name = boss_name;
	}

	public String getBusiness_name() {
		return business_name;
	}

	public void setBusiness_name(String business_name) {
		this.business_name = business_name;
	}

	public String getReward() {
		return reward;
	}

	public void setReward(String reward) {
		this.reward = reward;
	}

	public String getTime() {
		return time;
	}

	public void setTime(String time) {
		this.time = time;
	}

	public String getNumber() {
		return number;
	}

	public void setNumber(String number) {
		this.number = number;
	}

	public String getPlace() {
		return place;
	}

	public void setPlace(String place) {
		this.place = place;
	}

	public String getAdd_time() {
		return add_time;
	}

	public void setAdd_time(String add_time) {
		this.add_time = add_time;
	}

	public boolean isOr_top() {
		return or_top;
	}

	public void setOr_top(boolean or_top) {
		this.or_top = or_top;
	}

	public String getReward_style() {
		return reward_style;
	}

	public void setReward_style(String reward_style) {
		this.reward_style = reward_style;
	}

	public String getBusiness_detail() {
		return business_detail;
	}

	public void setBusiness_detail(String business_detail) {
		this.business_detail = business_detail;
	}

}

 

2)QueryVo.java(包含查询条件和分页数据)

package number;

public class QueryVo {
	//根据兼职名查询
	private String business_name;
	// 当前页码数
	private Integer page = 1;
	// 数据库从哪一条数据开始查
	private Integer start;
	// 每页显示数据条数
	private Integer rows = 10;
	public String getBusiness_name() {
		return business_name;
	}
	public void setBusiness_name(String business_name) {
		this.business_name = business_name;
	}
	public Integer getPage() {
		return page;
	}
	public void setPage(Integer page) {
		this.page = page;
	}
	public Integer getStart() {
		return start;
	}
	public void setStart(Integer start) {
		this.start = start;
	}
	public Integer getRows() {
		return rows;
	}
	public void setRows(Integer rows) {
		this.rows = rows;
	}
	@Override
	public String toString() {
		return "QueryVo [business_name=" + business_name + ", page=" + page + ", start=" + start + ", rows=" + rows
				+ "]";
	}
	
}

 

二:实现Dao层

1)businessMapper.java

package mapper;

import java.util.List;

import number.QueryVo;
import number.businesses;

public interface businessMapper {

	/**
	 * 分页查询所有兼职
	 * @return
	 */
	public List<businesses> Allbusiness(QueryVo vo);
	/**
	 * 所有数据总记录数
	 * @return
	 */
	public Integer getCount(QueryVo vo);
	
	/**
	 * 分页查询所有兼职根据兼职名
	 * @return
	 */
	public List<businesses> findByName(QueryVo vo);
	/**
	 * 总记录数根据兼职名
	 * @return
	 */
	public Integer getCountByName(QueryVo vo);
}

 

2)businessMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper.businessMapper">
	<!-- 分页查询所有数据 -->
	<select id="Allbusiness" parameterType="QueryVo" resultType="businesses">
		select * from business order by add_time desc limit #{start}, #{rows};
	</select>
	<!-- 查询总记录数 -->
	<select id="getCount" parameterType="QueryVo" resultType="int">
		select count(*) from business 
	</select>
	<!-- 分页根据兼职名查询 -->
	<select id="findByName" parameterType="QueryVo" resultType="businesses">
		select * from business 
		<where>
			<if test="business_name != null and business_name != ''">
				and business_name like '%${business_name}%'
			</if>
		</where>
		order by add_time desc
		limit #{start}, #{rows}
	</select>
	<!-- 根据兼职名查询得到的数据总数 -->
	<select id="getCountByName" parameterType="QueryVo" resultType="int">
		select count(*) from business where business_name like '%${business_name}%'
	</select>
</mapper>

 

三:实现Service层
1)businessService.java

package service;

import java.util.List;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import mapper.businessMapper;
import number.QueryVo;
import number.businesses;
import number.users;
import util.Page;
@Service
public class businessServiceimpl {
	@Autowired
	businessMapper businessmapper;
	
	//分页查询
	public Page<businesses> getUsersByPage(QueryVo vo){
		//计算分页查询从哪条记录开始
		vo.setStart((vo.getPage() - 1) * vo.getRows());
		
		//查询总记录数
		Integer total = businessmapper.getCount(vo);
		
		//查询每页的数据列表
		List<businesses> list = businessmapper.Allbusiness(vo);
		
		//包装分页数据
		Page<businesses> page = new Page<businesses>(total,vo.getPage(),vo.getRows(),list);
		
		return page;
	}
	
	//分页查询根据兼职名
		public Page<businesses> getBusinessByName(QueryVo vo){
			//计算分页查询从哪条记录开始
			vo.setStart((vo.getPage() - 1) * vo.getRows());
			
			//查询总记录数
			Integer total = businessmapper.getCountByName(vo);
			
			//查询每页的数据列表
			List<businesses> list = businessmapper.findByName(vo);
			
			//包装分页数据
			Page<businesses> page = new Page<businesses>(total,vo.getPage(),vo.getRows(),list);
//			System.out.println("total:"+page.getTotal()+"page:"+page.getPage());
			return page;
		}
}

四:实现Controller

1)businessController.java

package controller;

import java.io.IOException;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import number.QueryVo;
import number.businesses;
import number.users;
import service.businessService;
import util.Page;

@Controller
public class businessController {
	@Autowired
	businessService businessservice;

	@RequestMapping("Allbusinesses.do")
	public String list(Model model,QueryVo vo,HttpServletResponse response,HttpServletRequest request) {
		request.setAttribute("turn","turn");
		//跟踪查询条件分页查询用户表
		Page<businesses> page = businessservice.getUsersByPage(vo);
		//设置分页数据返回
		model.addAttribute("page",page);
		//返回分页条件
		model.addAttribute("vo",vo);
//		System.out.println("All");
		return "homePage";	
	}

	@RequestMapping("findToThing.do")
	public String listByName(Model model,QueryVo vo) {
		//跟踪查询条件分页查询用户表
		Page<businesses> page = businessservice.getBusinessByName(vo);
		//设置分页数据返回
		model.addAttribute("page",page);
		//返回分页条件
		model.addAttribute("vo",vo);
//		System.out.println("ByName");
		return "homePage2";
	}
	
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值