JSP 分页
来源:互联网 发布:windows java进程监控 编辑:程序博客网 时间:2024/06/08 11:54
Oracle大记录数分页借助rownum
select * from ( select a.*, rownum num from (select * from
guestbook order by name desc) a where rownum <= 20 )
where num >=10;
Mysql大记录数分页借助rownum
select * from (select * from guestbook ) aa limit 0,10
借助Pager标签实现分页功能
<dependency>
<groupId>jsptags</groupId>
<artifactId>pager-taglib</artifactId>
<version>2.0</version>
</dependency>
使用方法:
1.MysqlPagination.java
2. GuestbookDAOJdbc.java
3.GetMessagesServlet.java
4.getMessages.jsp
select * from ( select a.*, rownum num from (select * from
guestbook order by name desc) a where rownum <= 20 )
where num >=10;
Mysql大记录数分页借助rownum
select * from (select * from guestbook ) aa limit 0,10
借助Pager标签实现分页功能
<dependency>
<groupId>jsptags</groupId>
<artifactId>pager-taglib</artifactId>
<version>2.0</version>
</dependency>
使用方法:
1.MysqlPagination.java
import java.sql.ResultSet;import java.sql.SQLException;import java.util.List;import java.util.regex.Pattern;import org.apache.commons.dbutils.ResultSetHandler;import org.apache.commons.dbutils.handlers.MapListHandler;public class MysqlPagination implements Pagination {private int pageSize = 3;private int pageNumber = 1;private int maxPages;private int maxElements;private String sql;private MysqlUtil db;public MysqlPagination(String sql) {this.sql = sql;init();}public MysqlPagination(String sql, int pageSize, int pageNumber) {this.sql = sql;this.pageSize = pageSize;this.pageNumber = pageNumber;init();this.setPageNumber(pageNumber);}private void init() {db = MysqlUtil.getInstance();setMaxElements();setMaxPages();}private void setMaxElements() {// select * from xxx order by desc// select count(1) from xxx order by descString regex = "select((.)+)from";Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);String[] s = p.split(this.sql);String newSql = "select count(1) as total from " + s[1];ResultSetHandler handler = new ResultSetHandler() {public Object handle(ResultSet rs) throws SQLException {if (rs.next()) {return new Integer(rs.getInt("total"));} else {return null;}}};this.maxElements = (Integer) db.query(newSql, null, handler);}private void setMaxPages() {if (maxElements != 0 && (maxElements % pageSize == 0)) {maxPages = maxElements / pageSize;} else {maxPages = maxElements / pageSize + 1;}}private String sqlModify(String source,int begin, int size){System.out.println(begin+", " + size);StringBuffer target = new StringBuffer(200);target.append("select * from (");target.append(sql);target.append(") aa limit ");target.append(begin);target.append(", ");target.append(size);return target.toString();}private int getEndElement() {int endElement = pageNumber * pageSize;if (endElement >= maxElements) {return maxElements;} else {return endElement;}}private int getBeginElement() {return (pageNumber - 1) * pageSize;}@Overridepublic List<Object> getList() {String newSql = this.sqlModify(this.sql, this.getBeginElement(), this.pageSize);return (List) db.query(newSql, null, new MapListHandler());}@Overridepublic int getMaxElements() {return maxElements;}@Overridepublic int getMaxPages() {return maxPages;}@Overridepublic int getNext() {if (pageNumber + 1 >= this.getMaxPages()) {return getMaxPages();}return pageNumber + 1;}@Overridepublic int getPageNumber() {return pageNumber;}@Overridepublic int getPageSize() {return pageSize;}@Overridepublic int getPrevious() {if(pageNumber-1<=1){return 1;}else{return pageNumber-1;}}@Overridepublic boolean hasNext() {return pageNumber<this.getMaxPages();}@Overridepublic boolean hasPrevious() {return pageNumber>1;}@Overridepublic boolean isFirst() {return pageNumber==1;}@Overridepublic boolean isLast() {return pageNumber>=this.getMaxPages();}@Overridepublic void setPageNumber(int pageNumber) {if(pageNumber>maxPages){this.pageNumber=maxPages;}else if(pageNumber<1){this.pageNumber=1;}else{this.pageNumber=pageNumber;}}@Overridepublic void setPageSize(int pageSize) {this.pageSize=pageSize;}// Pagination p = new OraclePagination(sql,20,3); //List list=p.getList();}
2. GuestbookDAOJdbc.java
private static final String SELECT_GUESTBOOKS_SQL="select * from guestbook order by id desc";@Overridepublic Pagination getGuestbookByPage(int pageSize, int pageNumber) {Pagination p = new MysqlPagination(SELECT_GUESTBOOKS_SQL,pageSize,pageNumber);return p;}
3.GetMessagesServlet.java
public class GetMessagesServlet extends HttpServlet {private static final long serialVersionUID = 5964428201228635704L;private int pageSize;public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {int pageNumber;try {pageNumber = Integer.parseInt(request.getParameter("p"));} catch (Exception e) {pageNumber = 1;}GuestbookDAO dao = new GuestbookDAOJdbc();Pagination pager=dao.getGuestbookByPage(pageSize, pageNumber);request.setAttribute("guestbook.pager", pager);request.getRequestDispatcher("/getMessages.jsp").forward(request, response);}public void init(ServletConfig config)throws ServletException{super.init(config);try{this.pageSize=Integer.parseInt(config.getServletContext().getInitParameter("pageSize"));}catch(Exception e){this.pageSize=10;}}}
4.getMessages.jsp
<%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg"%><pg:pager url="${ctx}/servlet/getMessages"items="${requestScope['guestbook.pager'].maxElements}"maxPageItems="${initParam.pageSize}" maxIndexPages="5"><pg:index><pg:first unless="current"><a href="${pageUrl}&p=${pageNumber}">首页</a></pg:first><pg:prev><a href="${pageUrl}&p=${pageNumber}">上一页(${pageNumber})</a></pg:prev><pg:pages><a href="${pageUrl}&p=${pageNumber}">${pageNumber}</a></pg:pages><pg:next><a href="${pageUrl}&p=${pageNumber}">下一页(${pageNumber})</a></pg:next><pg:last unless="current"><a href="${pageUrl}&p=${pageNumber}">尾页</a></pg:last></pg:index></pg:pager>
阅读全文
0 0
- jsp分页
- JSP分页
- Jsp分页
- jsp分页
- jsp分页
- JSP分页
- jsp 分页
- jsp分页
- jsp分页
- JSP分页
- JSP分页
- jsp分页
- jsp分页
- JSP 分页
- jsp分页
- Jsp分页
- jsp分页
- JSP分页
- [LintCode]102.带环链表
- nyoj 571 整数划分(三)(递归)
- Servlet过滤器
- 简单排序算法总结(C语言版)
- reduceByKeyAndWindow实现基于滑动窗口的热点搜索词实时统计(Java版本)
- JSP 分页
- Gson 的使用和GsonFormat插件的使用
- 百度/谷歌 高级搜索指令
- 数据源
- 开题报告完成,即将开始苦逼程序猿java实习...
- Jave web 中的乱码问题
- Java程序猿跳槽应该学哪些方面的技术
- 在树莓派3的ROS平台上发布sensor_msgs/Imu消息
- 学习之苦也正是学习之甜------知识的本质