求分页查询的代码。

Ansel-枫儿-Moe 2014-12-24 02:26:16
要写一个分页查询,页面是html5,后台是servlet写的,就是这个样子的,求大神给代码。
...全文
347 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ansel-枫儿-Moe 2015-01-04
  • 打赏
  • 举报
回复
引用 8 楼 u010442195 的回复:
数据库连接

package com.vanda.dao;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

import org.apache.log4j.Logger;

import java.sql.*;

public class DbConnection{
	private static final Logger log = Logger.getLogger(DbConnection.class);
	public static final String databasesource = "jdbc/JG_TALK";
	public static final String jdbcUrl="jdbc:oracle:thin:@192.168.1.2:1521:ORCL";
	public static final String username="JG_TALK";
	public static final String password="JJJJJJ";
	
	public static Connection getConnection(){
		Connection conn = null;
		try {
			Context initCtx = new InitialContext();
			Context envCtx = (Context) initCtx.lookup("java:comp/env");
			DataSource ds = (DataSource) envCtx.lookup(databasesource);
			conn = ds.getConnection();			
		} catch (SQLException e) {
			log.error("从连接池获取连接失败!" + e.getMessage());
			throw new NullPointerException("无法连接数据库!");
		} catch (NamingException e) {
			log.error("寻找数据源失败!" + e.getMessage());
			throw new NullPointerException("无法连接数据库!");
		} 
		return conn;
	}
	
	public static Connection getConnection2(){
		Connection conn=null;
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			conn= DriverManager.getConnection(jdbcUrl, username, password);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}
	
}

谢谢你啊~~
u010442195 2014-12-26
  • 打赏
  • 举报
回复
数据库连接

package com.vanda.dao;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

import org.apache.log4j.Logger;

import java.sql.*;

public class DbConnection{
	private static final Logger log = Logger.getLogger(DbConnection.class);
	public static final String databasesource = "jdbc/JG_TALK";
	public static final String jdbcUrl="jdbc:oracle:thin:@192.168.1.2:1521:ORCL";
	public static final String username="JG_TALK";
	public static final String password="JJJJJJ";
	
	public static Connection getConnection(){
		Connection conn = null;
		try {
			Context initCtx = new InitialContext();
			Context envCtx = (Context) initCtx.lookup("java:comp/env");
			DataSource ds = (DataSource) envCtx.lookup(databasesource);
			conn = ds.getConnection();			
		} catch (SQLException e) {
			log.error("从连接池获取连接失败!" + e.getMessage());
			throw new NullPointerException("无法连接数据库!");
		} catch (NamingException e) {
			log.error("寻找数据源失败!" + e.getMessage());
			throw new NullPointerException("无法连接数据库!");
		} 
		return conn;
	}
	
	public static Connection getConnection2(){
		Connection conn=null;
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			conn= DriverManager.getConnection(jdbcUrl, username, password);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}
	
}

u010442195 2014-12-26
  • 打赏
  • 举报
回复
javabean的内容

package com.vanda.bean;

public class PageBean {
	
	private int page;                //当前页
	private int rowCountPerpage;     //每页记录数
	private int totalRows;           //总记录数
	private int pageCount;           //总页数
	private int iBegin;              //当前页第一条记录行编号
	private int pageRowCount;        //当前页记录数
	private String sql;
	
	public PageBean(){}
	public PageBean(int page,int rowCountPerpage){
		this.page = page;
		this.rowCountPerpage = rowCountPerpage;
	}
	
	public int getPage() {
		return page;
	}

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

	public void setRowCountPerpage(int rowCountPerpage) {
		this.rowCountPerpage = rowCountPerpage;
	}
	
	public int getTotalRows() {
		return totalRows;
	}

	public void setTotalRows(int totalRows) {
		this.totalRows = totalRows;
	}
	
	public int getPageCount() {
		return pageCount;
	}

	public void setPageCount(int pageCount) {
		this.pageCount = pageCount;
	}
	
	public int getIBegin() {
		return iBegin;
	}

	public void setIBegin(int iBegin) {
		this.iBegin = iBegin;
	}
	
	public int getPageRowCount() {
		return pageRowCount;
	}

	public void setPageRowCount(int pageRowCount) {
		this.pageRowCount = pageRowCount;
	}
	public String getSql() {
		return sql;
	}
	public void setSql(String sql) {
		this.sql = sql;
	}

}

u010442195 2014-12-26
  • 打赏
  • 举报
回复
以前写的分页后台,主要获取各项参数,可以参考下

package com.vanda.dao;

import org.apache.log4j.Logger;
import java.sql.*;

import com.vanda.bean.PageBean;

public class QueryPage {
	
	private static final Logger log = Logger.getLogger(QueryPage.class);
	private String sql;              //查询sql
	private int page;                //当前页
	private int rowCountPerpage;     //每页记录数
	private int totalRows = 0;       //总页数
	private int pageCount = 0;       //页数
	private int iBegin = 0;          //
	private int pageRowCount = 0;    //当前页记录数
	
	public QueryPage(String sql,int page,int rowCountPerpage){
		this.sql = sql;
		this.page = page;
		this.rowCountPerpage = rowCountPerpage;
	}
	
	/**
	 * 查询总页数
	 */
	public void queryTotalRows(){
		String sql1 = "select count(1) from (" + sql + ")";
		Connection conn = null;
		PreparedStatement pstmt = null;
		log.info("开始执行 SQL:" + sql);
		try{
			conn = DbConnection.getConnection();
			conn.setAutoCommit(false);
			pstmt = conn.prepareStatement(sql1,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
			ResultSet rs = pstmt.executeQuery();
			//rs.last();
			//totalRows = rs.getRow();
			while(rs.next()){
				totalRows = rs.getInt(1);
			}
			rs.close();
		}catch(SQLException e){
			log.error("查找总记录数失败:" + e.getMessage()+"SQL:"+sql1);
			try{
				conn.rollback();
			}catch(SQLException ex){
				log.error("数据回滚失败:" + ex.getMessage());
			}
		}finally{
			try{
				pstmt.close();
				conn.close();
			}catch(SQLException ex1){
				log.error("关闭连接失败:" + ex1.getMessage());
			}
		}
	}
	/**
	 * 得出总页数
	 */
	public void queryPageCount(){
		pageCount = (totalRows + rowCountPerpage - 1)/rowCountPerpage;
		//int pageCount = (totalRows%rowCountPerpage)==0?(totalRows/rowCountPerpage):(totalRows/rowCountPerpage+1);
		if(pageCount < 1){
			pageCount = 1;
		}
	}
	
	/**
	 * 得到当前页数
	 */
	public void queryPage(){
		if(page < 1){
			page = 1;
		}
		if(page > pageCount){
			page = pageCount;
		}
	}
	/**
	 * 获取当前页第一条记录的行编号
	 */
	public void queryIBegin(){
		iBegin = rowCountPerpage * (page - 1) + 1;
	}
	/**
	 * 获取当前页记录数
	 */
	public void queryPageRowCount(){
		int num = totalRows - rowCountPerpage * (page - 1);
		pageRowCount = (num >= rowCountPerpage) ? rowCountPerpage : num;
	}
	
	/**
	 * 获取查询参数
	 * @return
	 */
	public PageBean query(){
		PageBean pageBean = new PageBean();
		this.queryTotalRows();//总记录数
		this.queryPageCount();//总页数
		this.queryPage();//当前页
		this.queryIBegin();//当前页第一条记录的行编号
		this.queryPageRowCount();//当前页记录数
		int iEnd = iBegin + pageRowCount;
		//解析sql,得到分页后查询sql
		String pageSql = "SELECT T2.* FROM (SELECT T1.*, ROWNUM AS RN FROM ( " + sql + " ) T1 ";
		pageSql = pageSql + " ) T2 WHERE ";
		pageSql = pageSql + " T2.RN < " + iEnd + " AND ";
		pageSql = pageSql + " T2.RN >=" + iBegin;
		
		//将参数封装在bean中
		pageBean.setTotalRows(totalRows);
		pageBean.setPageCount(pageCount);
		pageBean.setPage(page);
		pageBean.setIBegin(iBegin);
		pageBean.setPageRowCount(pageRowCount);
		pageBean.setSql(pageSql);
		return pageBean;
	}
	
}

Ansel-枫儿-Moe 2014-12-24
  • 打赏
  • 举报
回复
引用
你想要实现的是在Servlet里面逻辑实现分页,然后直接访问对应的Servlet时候返回相应的html静态页面对不? 其实对于分页这个问题,是很常见的一个问题,你可以系统地学习一下,要从下面几个方向考虑: 1:要实现分页的数据是关于什么的,总共有多少条数据 2:每页显示多少条数据,在总数据条数跟每页显示数据条数一定的条件下,页数如何计算(比如总共101条数据,每页显示10条等等这些细节问题) 3:对于每页来说它就表示10条数据,那么对于数据库来说如何对应起来,比如有一条是第三页的第五条数据,那么对应数据库里应该对应第几条(这一点是最关键的一点) 4:上面的对应关系确定后,如果是mysql可以用limit实现,那么oracle中如何实现呢 虽然目前有封装好的分页框架,但是它的实现方式无非就是上面那样,至于代码的话我就不给了,如果实在是想要的话联系我吧,1026555477
对啊,就是这样~
于大圣 2014-12-24
  • 打赏
  • 举报
回复
你想要实现的是在Servlet里面逻辑实现分页,然后直接访问对应的Servlet时候返回相应的html静态页面对不? 其实对于分页这个问题,是很常见的一个问题,你可以系统地学习一下,要从下面几个方向考虑: 1:要实现分页的数据是关于什么的,总共有多少条数据 2:每页显示多少条数据,在总数据条数跟每页显示数据条数一定的条件下,页数如何计算(比如总共101条数据,每页显示10条等等这些细节问题) 3:对于每页来说它就表示10条数据,那么对于数据库来说如何对应起来,比如有一条是第三页的第五条数据,那么对应数据库里应该对应第几条(这一点是最关键的一点) 4:上面的对应关系确定后,如果是mysql可以用limit实现,那么oracle中如何实现呢 虽然目前有封装好的分页框架,但是它的实现方式无非就是上面那样,至于代码的话我就不给了,如果实在是想要的话联系我吧,1026555477
Ansel-枫儿-Moe 2014-12-24
  • 打赏
  • 举报
回复
引用
JavaScript code function getChildProdPageInfo(childProdDescLink,newsCount,pageIdx,pageDivId) { var pageItemHtml=''; var pageForwardHtml = ''; var pageReverseHtml = ''; var isExtend = false; var pageInfoHtml=''; for(idx=0,len=newsCount;idx<len;idx++) { //判断是否第一页,如是,不加上一页链接,如不是,加上一页连接 if((idx+1)==(pageIdx-1)&&pageIdx!=1) { pageForwardHtml='<a href="#" target="_self" onclick="getChildProdPageInfo(\''+childProdDescLink+'\','+newsCount+','+(pageIdx-1)+',\''+pageDivId+'\')" >上一页</a>'; } //判断是否最后一页,如是,不加下一页链接,否则加上下一页链接 if(pageIdx<len&&(idx+1)==(pageIdx+1)) { pageReverseHtml='<a href="#" target="_self" onclick="getChildProdPageInfo(\''+childProdDescLink+'\','+newsCount+','+(pageIdx+1)+',\''+pageDivId+'\')" >下一页</a>'; } //判断是否超过6页,如果超过,加extend扩展,否则加每一页的连接 if(Math.abs(idx+1-pageIdx)>5&&isExtend==false) { pageItemHtml+='<a href="#" target="_self" onclick="getChildProdPageInfo(\''+childProdDescLink+'\','+newsCount+','+(idx+1)+',\''+pageDivId+'\')" >...</a>'; isExtend=true; } else { //当前页 if((idx+1)==pageIdx) { pageItemHtml+='<a href="#" target="_self" onclick="getChildProdPageInfo(\''+childProdDescLink+'\','+newsCount+','+(idx+1)+','+pageDivId+'\')" >'+'<font class="red">['+pageIdx+']</font>'+'</a>'; } else { pageItemHtml+='<a href="#" target="_self" onclick="getChildProdPageInfo(\''+childProdDescLink+'\','+newsCount+','+(idx+1)+',\''+pageDivId+'\')" >'+(idx+1)+'</a>'; } isExtend=false; } } //组合最终的分页信息并打开当前点击页的咨询连接 pageInfoHtml+='<div class="Page">'; pageInfoHtml+=pageForwardHtml; pageInfoHtml+=pageItemHtml; pageInfoHtml+=pageReverseHtml; pageInfoHtml+='</div>'; $('#'+pageDivId).html(pageInfoHtml); //刷新静态化html咨询页面 var index = childProdDescLink.indexOf('html'); var htmlPath = '/webfin/'+childProdDescLink.substr(0,(index-1))+'_'+pageIdx+'.html'; window.open(htmlPath,"prodDetailHtmliFrame"); } 参考如上,之前写的,支持"上一页2,3,4,5...下一页"这种,当前页高亮显示,传的数据格式自己定,前端分页
看不太懂,不过还是谢谢你!想要后台分页的。
qingyuan18 2014-12-24
  • 打赏
  • 举报
回复

function getChildProdPageInfo(childProdDescLink,newsCount,pageIdx,pageDivId)
{
	var pageItemHtml='';
	var pageForwardHtml = '';
	var pageReverseHtml = '';
	var isExtend = false;
	var pageInfoHtml='';
	for(idx=0,len=newsCount;idx<len;idx++)
	{
		//判断是否第一页,如是,不加上一页链接,如不是,加上一页连接
		if((idx+1)==(pageIdx-1)&&pageIdx!=1)
		{
			pageForwardHtml='<a href="#" target="_self" onclick="getChildProdPageInfo(\''+childProdDescLink+'\','+newsCount+','+(pageIdx-1)+',\''+pageDivId+'\')" >上一页</a>';
		}
		//判断是否最后一页,如是,不加下一页链接,否则加上下一页链接
		if(pageIdx<len&&(idx+1)==(pageIdx+1))
		{
			pageReverseHtml='<a href="#" target="_self" onclick="getChildProdPageInfo(\''+childProdDescLink+'\','+newsCount+','+(pageIdx+1)+',\''+pageDivId+'\')" >下一页</a>';
		}
		//判断是否超过6页,如果超过,加extend扩展,否则加每一页的连接
		if(Math.abs(idx+1-pageIdx)>5&&isExtend==false)
		{
			
			pageItemHtml+='<a href="#" target="_self" onclick="getChildProdPageInfo(\''+childProdDescLink+'\','+newsCount+','+(idx+1)+',\''+pageDivId+'\')" >...</a>';
			isExtend=true;
		}
		else
		{
			//当前页
			if((idx+1)==pageIdx)
			{
				pageItemHtml+='<a href="#" target="_self" onclick="getChildProdPageInfo(\''+childProdDescLink+'\','+newsCount+','+(idx+1)+','+pageDivId+'\')" >'+'<font class="red">['+pageIdx+']</font>'+'</a>';
			}
			else
			{
				pageItemHtml+='<a href="#" target="_self" onclick="getChildProdPageInfo(\''+childProdDescLink+'\','+newsCount+','+(idx+1)+',\''+pageDivId+'\')" >'+(idx+1)+'</a>';
			}
			isExtend=false;
		}	
	}
	
	//组合最终的分页信息并打开当前点击页的咨询连接
	pageInfoHtml+='<div class="Page">';
	pageInfoHtml+=pageForwardHtml;
	pageInfoHtml+=pageItemHtml;
	pageInfoHtml+=pageReverseHtml;
	pageInfoHtml+='</div>';
	$('#'+pageDivId).html(pageInfoHtml);
	//刷新静态化html咨询页面
	var index = childProdDescLink.indexOf('html');
	var htmlPath = '/webfin/'+childProdDescLink.substr(0,(index-1))+'_'+pageIdx+'.html';
	window.open(htmlPath,"prodDetailHtmliFrame");

}
参考如上,之前写的,支持"上一页2,3,4,5...下一页"这种,当前页高亮显示,传的数据格式自己定,前端分页
Ansel-枫儿-Moe 2014-12-24
  • 打赏
  • 举报
回复
大神们快快现身啊~~帮帮小女子吧~~

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧