- 浏览: 1168632 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (350)
- Ajax研究 (2)
- javascript (22)
- struts (15)
- hibernate (12)
- spring (8)
- 我的生活 (28)
- jsp (2)
- 我的随笔 (84)
- 脑筋急转弯 (1)
- struts2 (2)
- ibatis (1)
- groovy (1)
- json (4)
- flex (20)
- Html Css (5)
- lucene (11)
- solr研究 (2)
- nutch (25)
- ExtJs (3)
- linux (6)
- 正则表达式 (2)
- xml (1)
- jetty (0)
- 多线程 (1)
- hadoop (40)
- mapreduce (5)
- webservice (2)
- 云计算 (8)
- 创业计划 (1)
- android (8)
- jvm内存研究 (1)
- 新闻 (2)
- JPA (1)
- 搜索技术研究 (2)
- perl (1)
- awk (1)
- hive (7)
- jvm (1)
最新评论
-
pandaball:
支持一下,心如大海
做有气质的男人 -
recall992:
山东分公司的风格[color=brown]岁的法国电视[/co ...
solr是如何存储索引的 -
zhangsasa:
-services "services-config ...
flex中endpoint的作用是什么? -
来利强:
非常感谢
java使用json所需要的几个包 -
zhanglian520:
有参考价值。
hadoop部署错误之一:java.lang.IllegalArgumentException: Wrong FS
import java.util.List;
public class Page {
private boolean hasPrevPage;//是否存在上一页
private boolean hasNextPage;//是否存在下一页
private int pageSize;//每页容量
private int totalPage;//总页数
private int totalRow;//总记录数
private int curPage;//当前页
private int beginIndex;//当前页开始索引号
private String url;//该页URL地址
private String param;//参数以&分隔
private String pageToolBar;//分页工具条
private List result;//当前页结果集(记录集)
/**
* 功能:初始化数据(查询前)
* @param pageSize
* @param url
* @param param
*/
public Page(int pageSize,String url,String param) {
this.pageSize=pageSize;
this.url=(null==url)?"":url;
this.param=(null==param)?"":param;
}
/**
* 功能:初始化数据(查询后)
* @param hasPrevPage
* @param hasNextPage
* @param pageSize
* @param totalPage
* @param totalRow
* @param curPage
* @param beginIndex
* @param pageToolBar
*/
public Page(boolean hasPrevPage, boolean hasNextPage,int pageSize, int totalPage, int totalRow,int curPage, int beginIndex,String pageToolBar){
this.hasPrevPage=hasPrevPage;
this.hasNextPage=hasNextPage;
this.pageSize=pageSize;
this.totalPage=totalPage;
this.totalRow=totalRow;
this.curPage=curPage;
this.beginIndex=beginIndex;
this.pageToolBar=pageToolBar;
}
public List getResult() {
return result;
}
public void setResult(List result) {
this.result = result;
}
public int getBeginIndex() {
return beginIndex;
}
public void setBeginIndex(int beginIndex) {
this.beginIndex = beginIndex;
}
public int getCurPage() {
return curPage;
}
public void setCurPage(int curPage) {
this.curPage = curPage;
}
public boolean isHasNextPage() {
return hasNextPage;
}
public void setHasNextPage(boolean hasNextPage) {
this.hasNextPage = hasNextPage;
}
public boolean isHasPrevPage() {
return hasPrevPage;
}
public void setHasPrevPage(boolean hasPrevPage) {
this.hasPrevPage = hasPrevPage;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getTotalRow() {
return totalRow;
}
public void setTotalRow(int totalRow) {
this.totalRow = totalRow;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public String getPageToolBar() {
return pageToolBar;
}
public void setPageToolBar(String pageToolBar) {
this.pageToolBar = pageToolBar;
}
public String getParam() {
return param;
}
public void setParam(String param) {
this.param = param;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
建PageUtil类,用来构告Page类的数据
public class PageUtil {
private final static int DEF_PAGE_SIZE = 10;//默认当前页的容量
/**
* 功能:传入查询前初始化的page实例,创建一个新的Page实例
* @param page
* @param totalRow
* @return
*/
public static Page createPage(Page page, int totalRow) {
return createPage(page.getUrl(),page.getParam(),page.getPageSize(), page.getCurPage(), totalRow);
}
public static Page createPage(String url,String param,int pageSize, int curPage, int totalRow) {
pageSize = getpageSize(pageSize);
curPage = getcurPage(curPage);
int beginIndex = getBeginIndex(pageSize, curPage);
int totalPage = getTotalPage(pageSize, totalRow);
boolean hasNextPage = hasNextPage(curPage, totalPage);
boolean hasPrePage = hasPrePage(curPage);
String pageToolBar=getPageToolBar(url,param,hasPrePage, hasNextPage, pageSize, totalPage, totalRow,curPage);
return new Page(hasPrePage, hasNextPage, pageSize, totalPage, totalRow,
curPage, beginIndex,pageToolBar);
}
private static String getPageToolBar(String url,String param,boolean hasPrePage, boolean hasNextPage, int pageSize, int totalPage, int totalRow,int curPage){
StringBuffer strBuf=new StringBuffer();
boolean isHaveParam=false;
if(null!=param && !"".equals(param)){
isHaveParam = true;
}
strBuf.append("当前第"+curPage+"页/共"+totalPage+"页 总记录"+totalRow+"条");
if(hasPrePage){
strBuf.append(" <a href=\""+url+"?page=1"+((isHaveParam)?"&"+param:"")+"\">首页</a>");
strBuf.append(" <a href=\""+url+"?page="+(curPage - 1)+((isHaveParam)?"&"+param:"")+"\">上一页</a>");
}else{
strBuf.append(" 首页 上一页");
}
if(hasNextPage){
strBuf.append(" <a href=\""+url+"?page="+(curPage + 1)+((isHaveParam)?"&"+param:"")+"\">下一页</a>");
strBuf.append(" <a href=\""+url+"?page="+totalPage+((isHaveParam)?"&"+param:"")+"\">尾页</a>");
}else{
strBuf.append(" 下一页 尾页");
}
return strBuf.toString();
}
private static int getpageSize(int pageSize) {
return pageSize == 0 ? DEF_PAGE_SIZE : pageSize;
}
private static int getcurPage(int curPage) {
return curPage == 0 ? 1 : curPage;
}
private static int getBeginIndex(int pageSize, int curPage) {
return (curPage - 1) * pageSize;
}
private static int getTotalPage(int pageSize, int totalRow) {
int totalPage = 0;
if (totalRow % pageSize == 0)
totalPage = totalRow / pageSize;
else
totalPage = totalRow / pageSize + 1;
return totalPage;
}
private static boolean hasPrePage(int curPage) {
return curPage == 1 ? false : true;
}
private static boolean hasNextPage(int curPage, int totalPage) {
return curPage == totalPage || totalPage == 0 ? false : true;
}
}
以上二个类与业务层无关,接下来结合业务层应用,给出以下代码
用户操作业务的接口:
import com.note.comm.Page;
import com.note.dao.UsersDAO;
import com.note.model.Users;
public interface IUserService {
public UsersDAO getUsersDao();
public void setUsersDao(UsersDAO usersDao);
......
/**
* 功能:得到当前页的分页信息与当前页的记录集(存入在page的result属性中)
* @param page
* @return
*/
public Page listUsers(Page page);
......
}
用户操作业务的具体实现:
UserService
import java.util.List;
import com.note.bussies.service.IUserService;
import com.note.comm.Page;
import com.note.comm.PageUtil;
import com.note.dao.UsersDAO;
import com.note.model.Users;
public class UserService implements IUserService {
private UsersDAO usersDao;
public UsersDAO getUsersDao() {
return usersDao;
}
public void setUsersDao(UsersDAO usersDao) {
this.usersDao = usersDao;
}
......
public Page listUsers(Page page){
int totalRecords = this.usersDao.getUserCount();
page = PageUtil.createPage(page, totalRecords);
if(totalRecords == 0)return page;
List users = this.usersDao.getUsersByPage(page);
page.setResult(users);
return page;
}
}
UserService调用UserDao的方法实现分页,UserDao代码如下:
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.note.comm.Page;
import com.note.model.Users;
/**
* Data access object (DAO) for domain model class Users.
* @see com.note.dao.Users
* @author MyEclipse - Hibernate Tools
*/
public class UsersDAO extends HibernateDaoSupport {
private static final Log log = LogFactory.getLog(UsersDAO.class);
//property constants
public static final String USERNAME = "username";
public static final String PASSWORD = "password";
public static final String LEVEL = "level";
protected void initDao() {
//do nothing
}
......
public int getUserCount(){
int count = 0;
String querySentence = "SELECT count(*) FROM Users";
Session s=getSession();
Query query = s.createQuery(querySentence);
count = ((Integer)query.iterate().next()).intValue();
releaseSession(s);//注意,些处必须关闭Session
return count;
}
public List getUsersByPage(final Page page){
return getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session s){
Query query=s.createQuery("From Users AS users ORDER BY users.userid");
query.setFirstResult(page.getBeginIndex());
query.setMaxResults(page.getPageSize());
return query.list();
}
});
}
}
至此,一个完整的分页程序完成。下页给出Struts调用示例
action类:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.actions.DispatchAction;
import com.note.bussies.service.IUserService;
import com.note.comm.Page;
import com.note.comm.ParamUtil;
import com.note.model.Users;
import com.note.sys.Constant;
/**
* MyEclipse Struts
* Creation date: 10-09-2006
*
* XDoclet definition:
* @struts.action path="/user" name="userForm" input="/form/user.jsp" scope="request"
* @struts.action-forward name="success" path="/success.htm" redirect="false"
* @struts.action-forward name="fail" path="/fail.htm" redirect="false"
*/
public class UserAction extends DispatchAction {
private IUserService ius;
public IUserService getIus() {
return ius;
}
public void setIus(IUserService ius) {
this.ius = ius;
}
public ActionForward display(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
//获得url
String contextPath = request.getContextPath();
String PathName="listUser" + Constant.FILEPREFIX;
String url=contextPath+"/"+PathName;
//获得参数
int curPage = ParamUtil.getInt(request, "page", 1);
String method=ParamUtil.getString(request, "method", "display");
String param="method="+method;
Page page=new Page(3,url,param);
page.setCurPage(curPage);
page=this.ius.listUsers(page);
request.setAttribute("users",page);//保存到request中
return mapping.findForward("success");
}
}
view页面:
<logic:present name="users">
<table>
<logic:iterate id="user" name="users" indexId="number" property="result">
<tr>
<td>
<bean:write name="number" />
<bean:write name="user" property="userid" />
<bean:write name="user" property="username" />
</td>
</tr>
</logic:iterate>
</table>
<bean:write name="users" property="pageToolBar" filter="false" />
</logic:present>
发表评论
-
如何分段读取文件
2010-03-12 11:31 4065项目中使用到了读文件,但是有的文件很大。一下子加入到内存中再循 ... -
product static page
2010-03-02 17:36 790相信很多人都希望自己的页面越快越好,最好是能静态的,提高客户访 ... -
java中目录的properties如何来获得
2009-04-29 17:47 1110props.load(new FileInputStre ... -
Heritrix和SSH2结合使用
2009-04-15 23:12 1264Heritrix与struts2,hibernate,spri ... -
使用Jdom来把一棵完整的树生成XML
2009-02-03 16:51 1087public String parseXML() { ... -
struts2中表单重复提交的问题
2008-12-09 18:14 1498看了网上说的有关struts2不重复刷新有很多,基本上都是在同 ... -
struts2是怎么解决中文问题的
2008-12-09 17:42 2984<?xml version="1.0" ... -
关于struts2中传值的几个小问题。
2008-11-26 17:05 1373今天在用struts2在做项目时候,从一个action我想跳转 ... -
struts2中找不到action的解决办法
2008-10-08 12:01 5039刚看了一个星期的struts2就开始让动手做项目。实在是么办法 ... -
struts2标签的学习总结
2008-09-27 09:02 1970Struts2标签使用 (1):<s:textfield ... -
struts2的文档
2008-09-26 15:23 1001大家没事可以看看,好东西。 -
动态上传附件提交时遇到的一个错误
2008-06-05 10:18 1072ERROR - Servlet.service() for s ... -
关于struts标签怎么加入一个Id
2008-05-30 09:09 3101前天在项目当中为了要适应火狐浏览器。在选择日期控件时必须要加入 ... -
Deployment failure on Tomcat 5.x.
2008-05-27 11:59 4738今天我在发布项目的时候,突然遇到了: Deployment f ...
相关推荐
还不错的分页技术,,js 有兴趣的可以下载看一下,,
主要是三个配置文件 web.xml struts-config.xml applicationContext.xml 数据库是sql2000
Web程序设计课程中分阶段专题模式教学的改革与实践.pdf
Web 开发中分页是必须应用的技术,对查询结果不做分页处理几乎是不可思议的事情。在Java Web 技术中初学者一般会采用SQL 语句分页技术,并在这个基础的之上编写分页组件,页面传参数控制层(Servlet 或Action)调用...
分析Java Web中分页的技术,并对各种分页技术进行对比。具体说明了超大数据量的分页在MySQL、Or-acle中的实现方法,编写了针对Oracle数据库分页接口和实现类。
这是一个明了的工程,很简单只需要在你的tomcat服务器上发布就可以应用了,通过这个工程你可以学到目前流行的ssh技术,spring中分页技术。是不错的学习资料!
WEBOFFIC是北京点聚信息技术有限公司开发的一款文档编辑组件,其主要用户打开各种格式的文档。 目前支持的主流文件格式有:Word、Excel、WPS等编辑文档。 WEBOFFICE是标准的ACTIVEX组件,支持在应用开发平台中嵌入...
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...
WEBOFFIC是北京点聚信息技术有限公司开发的一款文档编辑组件,其主要用于打开各种格式的文档。 目前支持的主流文件格式有: Word、Excel、PowerPoint、WPS等编辑文档。 BMP、JPG、PNG、GIF等图片格式。 PDF...
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决Asp.Net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...