jsp网站分页技巧解析
第一种:在jsp页面敲入Java代码,这样的分页毫无意义。因为没有灵活性
第二种:stuts1和struts2都提供分页struts标签,只需要导入相应的分页架包进行配置。有灵活性,不具有可复用性。
第三种: hibernate有内置的分页方法,只需要进行hibernate方法的复写,就可以实现可复用的分页功能(适用struts和hibernate整合的项目)
注意:如是myeclipse10.0一下需要添加相应的架包
核心代码如下:
package com.mr.dao;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class ObjectDao<T> {
private static SessionFactory sessionFactory = null;
private Session session = null;//创建Session对象
Transaction tx = null;//创建事务管理对象
//连接数据库
static {
try {
// 加载Hibernate配置文件
Configuration cfg = new Configuration().configure();
sessionFactory = cfg.buildSessionFactory();
} catch (Exception e) {
System.err.println("创建会话工厂失败");
e.printStackTrace();
}
public List<T> queryList(String hql,
int showNumber, int beginNumber) {
session = sessionFactory.openSession();//开启Session
tx = session.beginTransaction();//开启事务
List<T> list = null;
try {
Query query=session.createQuery(hql);//利用hql语句进行查询
query.setMaxResults(showNumber);//设置查询结果的条数
query.setFirstResult(beginNumber);//设置查询的起始位置
list = query.list();//将返回的结果集转换成List集合
} catch (Exception e) {
e.printStackTrace();
}
tx.commit();//事务提交
session.close();//关闭Session
return list;//返回List集合
}
}
第四种:SSH通用的分页方法 具有以上分页所有优点,非常适合大型网站开发
package com.ssh.base;
import java.io.Serializable;
import java.util.List;
import com.ssh.common.PageView;
public interface BaseFinder<T> {
//按ID查询
public T findById(Class<T> entityClass,Serializable id);
//查询
public List<T> findAll(Class<T> entityClass,String xql);
//不带条件的分页查询
public PageView<T> findByPage(Class<T> entityClass,String xql,int pageNo,int pageSize);
//带条件的分页查询
public PageView<T> findByPage(Class<T> entityClass,String xql,Object key,int pageNo,int pageSize);
//带多个条件的查询
public PageView<T> findByPage(Class<T> entityClass,String xql,Object[] keys,int pageNo,int pageSize);
public T findByKey(Class<T> entityClass, String xql, Object[] keys);
}
pagemode方法 <!--映射分页实体->
package com.ssh.common;
public class PageModel {
private int totalPage;
private int previousPageNo;
private int nextPageNo;
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getPreviousPageNo() {
return previousPageNo;
}
public void setPreviousPageNo(int previousPageNo) {
this.previousPageNo = previousPageNo;
}
public int getNextPageNo() {
return nextPageNo;
}
public void setNextPageNo(int nextPageNo) {
this.nextPageNo = nextPageNo;
}
}
pageview代码如下:<!---实现翻页>
package com.ssh.common;
import java.util.List;
public class PageView<T> {
private List<T> pageList;
private int totalNo;
private int pageNo;
private int pageSize;
private int totalPage;
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public List<T> getPageList() {
return pageList;
}
public void setPageList(List<T> pageList) {
this.pageList = pageList;
}
public int getTotalNo() {
return totalNo;
}
public void setTotalNo(int totalNo) {
this.totalNo = totalNo;
}
public int getTotalPage()
{
int totalPage=0;
if(totalNo%pageSize==0)
{
totalPage=totalNo/pageSize;
}else {
totalPage=totalNo/pageSize+1;
}
return totalPage;
}
public int getPreviousPageNo()
{
if(pageNo<=1)
{
return pageNo;
}else {
return pageNo=-1;
}
}
public int getNextPageNo()
{
if(pageNo>=getTotalPage())
{
return getTotalPage();
}else {
return pageNo+1;
}
}
public int getBackPageNo()
{
return getTotalPage();
}
}