- 浏览: 1185794 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 4130项目中使用到了读文件,但是有的文件很大。一下子加入到内存中再循 ... -
product static page
2010-03-02 17:36 846相信很多人都希望自己的页面越快越好,最好是能静态的,提高客户访 ... -
java中目录的properties如何来获得
2009-04-29 17:47 1158props.load(new FileInputStre ... -
Heritrix和SSH2结合使用
2009-04-15 23:12 1318Heritrix与struts2,hibernate,spri ... -
使用Jdom来把一棵完整的树生成XML
2009-02-03 16:51 1127public String parseXML() { ... -
struts2中表单重复提交的问题
2008-12-09 18:14 1550看了网上说的有关struts2不重复刷新有很多,基本上都是在同 ... -
struts2是怎么解决中文问题的
2008-12-09 17:42 3026<?xml version="1.0" ... -
关于struts2中传值的几个小问题。
2008-11-26 17:05 1422今天在用struts2在做项目时候,从一个action我想跳转 ... -
struts2中找不到action的解决办法
2008-10-08 12:01 5216刚看了一个星期的struts2就开始让动手做项目。实在是么办法 ... -
struts2标签的学习总结
2008-09-27 09:02 2011Struts2标签使用 (1):<s:textfield ... -
struts2的文档
2008-09-26 15:23 1047大家没事可以看看,好东西。 -
动态上传附件提交时遇到的一个错误
2008-06-05 10:18 1137ERROR - Servlet.service() for s ... -
关于struts标签怎么加入一个Id
2008-05-30 09:09 3136前天在项目当中为了要适应火狐浏览器。在选择日期控件时必须要加入 ... -
Deployment failure on Tomcat 5.x.
2008-05-27 11:59 4783今天我在发布项目的时候,突然遇到了: Deployment f ...
相关推荐
还不错的分页技术,,js 有兴趣的可以下载看一下,,
总的来说,基于Java的Jsp分页技术结合Struts框架和JSTL标签库,使得在Web应用中实现高效且易于维护的分页功能成为可能。通过以上步骤,开发者可以构建出一套完整的分页系统,为用户提供流畅的数据浏览体验。
在Java Web开发中,JSP(JavaServer Pages)和Servlet是两种常见的技术,它们用于创建动态网页和处理用户请求。本知识点将详细讲解如何在JSP中利用Bean实现分页显示,以及与数据库的交互。 首先,理解Bean的概念。...
SSH(Struts、Spring、Hibernate)是一个经典的Java Web开发框架,用于构建高效、可扩展的企业级应用程序。在这个小项目中,我们将重点讨论如何利用SSH来实现分页功能,这是一个常见的需求,特别是在处理大量数据时...
2. **技术更新快速**:Web技术迭代迅速,如Web2.0和Web3.0的发展,引入了AJAX、框架(如React、Vue.js、Angular)、响应式设计等新技术,要求学生不仅要掌握基础知识,还要不断学习最新的开发工具和技术。...
总结来说,Java Web中的分页技术有多种实现方式,选择哪种取决于具体需求和数据库支持。基于SQL的分页最简单,但效率较低;数据库API的分页效率更高,但可能需要熟悉特定数据库的语法;而使用第三方库则能提供更多的...
本文将详细介绍JavaWeb中的分页技术,并对比Web服务器端分页和数据库服务器端分页的不同实现方式。 #### 二、实现分页技术 ##### 2.1 典型的三层架构 在典型的三层架构中,包括表现层、业务逻辑层和数据访问层。...
在Web应用中,通常会通过设置每页显示的记录数量(如10条或20条)来实现。这样用户可以逐页浏览,而不是一次性加载所有记录,降低了服务器压力。 在MyEclipse中,我们可以使用JDBC(Java Database Connectivity)来...
Java分页技术是Web开发中的一个关键组成部分,尤其是在处理大数据量时,为了提高用户体验和系统性能,分页显得尤为重要。本资源"Java分页大全"集合了多种分页实现方式和最佳实践,对于Java Web开发者来说是一份宝贵...
WEBOFFIC是北京点聚信息技术有限公司开发的一款文档编辑组件,其主要用户打开各种格式的文档。 目前支持的主流文件格式有:Word、Excel、WPS等编辑文档。 WEBOFFICE是标准的ACTIVEX组件,支持在应用开发平台中嵌入...
在IT领域,特别是Web开发中,分页功能是提高用户体验、优化数据展示的关键技术之一。本文将基于给定文件中的代码片段,深入探讨如何利用`PagedDataSource`类实现分页效果,以及这一过程中的核心知识点。 ### 一、...
Java中的分页技术是Web开发中处理大数据量的关键方法,主要目的是提高用户体验和系统性能。在数据量较大的情况下,一次性加载所有数据不仅会消耗大量内存,也会使用户等待时间变长。因此,分页技术应运而生,它允许...
Ajax(Asynchronous JavaScript and XML)技术是现代Web开发中的关键组成部分,它允许在不刷新整个页面的情况下与服务器进行交互,提高了用户体验。本篇将深入探讨如何利用Ajax实现一个分页程序,这对于理解Web前端...
这在Web应用中尤其常见,如搜索引擎、电商网站等,用户通常会通过点击“下一页”或“上一页”来浏览更多内容。 二、SQL语句实现分页 在MySQL中,最常用的分页查询方式是使用`LIMIT`和`OFFSET`关键字。`LIMIT`用于...
通过上述分析,我们可以看到Java Web应用中分页技术的实现涉及了前端页面设计、后端业务逻辑处理、数据库查询优化等多个方面。开发者需要综合考虑这些因素,结合所使用的数据库和编程语言,构建出高效且用户友好的...
1. **教材课后要求**:在实验室中分两个阶段开发一个Web服务器。最终,将构建一个多线程Web服务器,能够并行处理多个同时的服务请求。应该能够证明Web服务器有能力将主页传递给Web浏览器。 2. **目的**:实现...
### Web程序攻击方式及其解决方法 #### 一、跨站脚本攻击(XSS) **攻击原理:** 跨站脚本攻击(Cross Site Scripting,简称XSS)是一种常见的Web安全漏洞,它允许攻击者在受害者的浏览器中执行恶意脚本。这通常...
本文将深入探讨Java中分页技术的实现及其不同模式。 首先,Java分页的基本原理是根据用户请求的页码和每页显示的数据数量,从数据库中查询对应的数据范围,然后返回给前端展示。在Java Web开发中,通常涉及后端...
综合来看,jbpm与OA项目的结合主要运用了jbpm框架在业务流程管理方面的优势,并且通过Java Web技术实现了OA系统中分页显示的功能。在编程实践中,涉及到多个层面的技术点,包括Web请求处理、分页逻辑实现、对象关系...
在“上中(中分为左右)下”的布局模式中,我们可以将页面划分为三个主要部分:顶部(header)、中部(main,进一步细分为左右两侧)和底部(footer)。 1. **顶部(Header)**:通常包含网站的品牌标识、导航菜单...