`
hzs0502030128
  • 浏览: 23910 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

smile开发类库——JSP分页标签

阅读更多

                      smile 开发类库—— JSP 分页标签

 

本文章将对 smile 中对 jsp 分页标签的支持进行一个详细的介绍:

 

首先来看一个简单的分页的例子:

 

Action 中的代码:

 

import org.smile.pager.jsptags.JspTagsPager;
 

 

 

 

public String queryAllUser() throws Exception{

      userService .queryAllUser( new JspTagsPager( request ));

      return "success" ;

} 
 

 

Dao 中的代码:

 

 

public PageModel queryAllUser(Pager pager) throws SQLException {

      StringBuffer sql= new StringBuffer( "select id,name,age   from Test where 1=1 " );

      String name=pager.getRequest().getParameter( "name" );

      if (name!= null &&! "" .equals(name.trim())){

        sql.append( " and name like '" +name+ "'" );

      }

      return PagerQueryUtils.queryPageSQL ( ds .getConnection(),sql.toString(),pager,Dialect. HSQL );

   } 
 

 

至于 action 中是怎么调用 dao 的在这里就没有必要详细描述了。

 

Jsp 中的主要代码

 

 

<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<%@ taglib uri = "http://smile.org/jsp/jstl/tag/pager" prefix = "pg" %>
< table >
    < tr >< td > ID </ td >< td > 名称 </ td >< td > 年龄 </ td ></ tr >
    < c:forEach items = "${pageModel.rows} " var = "v" >
        < tr >
           < td > ${v.id } </ td >< td > ${v.name } </ td >< td > ${v.age } </ td >
           </ tr >
    </ c:forEach >
    </ table >
      < pg:pager url = "${path} /jsp/queryAllUserAction.do " maxPageItems = "${pageModel.size} " items = "${pageModel.total} ">
       每页显示 < pg:sizes /> 条
       < pg:common />
      </ pg:pager > 
 

 

 

 

结果:

 

 

 

 

 

现在来分析一下这个例子:

 

 

JspTagsPager是实现接口

 

package org.smile.pager;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.smile.db.PageModel;
/**
 * 分页参数
 * @author strive
 *
 */
public interface Pager {
	public HttpServletRequest getRequest();
	public int getPage();
	public int getSize();
	public void commitResult(PageModel pageModel);
	public Map getParameterMap();
}

 

   这里我使用的数据库是HSQL 所以数据查询的方言指定Dialect.HSQL;

 

return PagerQueryUtils.queryPageSQL ( ds .getConnection(),sql.toString(),pager,Dialect. HSQL );

 

    JspTagsPager只是指定了一个request,所以此查询的每页显示的数据也是跟据request中的参数改变的

 

userService .queryAllUser( new JspTagsPager( request ));

    如果不想让每页显示的条数随着request中提交参数改变 ,那么就为它指定一个每页显示条数,那么就使用:

 

userService .queryAllUser( new JspTagsPager( request ,20));

 

   <pg:common /> 是提供了一个通用的分页工具条 :

 

   可以通过参数来配置哪此是要显示的内容(此例子的结果是显示了所有的内容)

   参数有以下几个:

 

 

/**
	 * 是否存在首页和末页
	 */
	private boolean hasFirstLast=true;
	/**
	 * 是否存在前一页和后一页
	 */
	private boolean hasPrevNext=true;
	/**
	 * 是否存在页码
	 */
	private boolean hasPages=true;
	/**
	 * 第一个页面、最后一个页码 与中间页面集合 的省略间距 
	 */
	private int omitCount=0;
	/**
	 * 是否存在第一个页码和最后一个页码
	 */
	private boolean hasPageFirstLast=true;
	/**
	 * 是否存在详细信息
	 */
	private boolean hasDescript=true;
	
	private String firstHtml="首页";
	
	private String lastHtml="末页";
	
	private String prevHtml="上一页";
	
	private String nextHtml="下一页";
	
	private String currentHtml="<font color=\"red\">{0}</font>";
	
	private String description="  当前是{0}/{1}页 共{2}条数据 每页显示{3}条 当前显示第{4}至第{5}条";
	/**
	 * 是否动态隐藏 首页、前一页 ……
	 */
	private boolean dynamicHide=false;

 

   比如 要让首页显示的是一个图片,而不是文字 刚可以 :

 

 

<pg:common firstHtml="<img src='${path}/images/table_buttom_first.gif'/>" />

 

   这样就可以把首页这个链接变成一个图片了。

 

   如果不要显示首页和末页的链接:

<pg:common hasFirstLast="false" />

 

   设置descript 来改变描述文字:

 

<pg:common descript="total:{2}  show{4} to {5}" />

 

 

   可以通过参数设置,和多种标签灵活运用,可以构建出自己想要的分页条。

 

  当然我们还可以不使用common这个标签而使用定制页面:

 

<pg:pager url="${path} /jsp/queryAllUserAction.do" maxPageItems="${pageModel.size}" items="${pageModel.total}" export="currentPageNumber=pageNumber" maxIndexPages="7">
						<pg:first>
							<a href="${pageUrl}">首页</a>
						</pg:first>
						<pg:prev>
							<a href="${pageUrl }"><img src="${path}




/images/tzgg_page_left.gif" alt="前一页" /></a>
						</pg:prev>
						<pg:pageFirst>
							<a href="${pageUrl}">${pageNumber }</a>...
						</pg:pageFirst>
						<pg:pages>
							<c:choose>
								<c:when test="${currentPageNumber eq pageNumber }">
								<font color="red">${pageNumber }</font>
								</c:when>
								<c:otherwise>
									<a href="${pageUrl }">${pageNumber }</a>
								</c:otherwise>
							</c:choose>
						</pg:pages>
						<pg:pageLast >
							...<a href="${pageUrl }">${pageNumber }</a>
						</pg:pageLast>
						<pg:next>
							<a href="${pageUrl }"><img src="${path}



/images/tzgg_page_right.gif" alt="后一页" /></a>
						</pg:next>
						<pg:last>
							<a href="${pageUrl }">尾页</a>
						</pg:last>
						       当前是第 ${pageModel.page}/${pageModel.totalPages } 页 共 ${pageModel.totals} 条数据
						    
</pg:pager>

 

    有时候我们需求传递一些查询参数到后台,可以使用 <pg:param /> 和<pa:params /> 标签来实现

 

<pg:pager url="${path} /jsp/queryAllUserAction.do" maxPageItems="${pageModel.size}" items="${pageModel.total}">
		<pg:param name="name" value="${name}"/>
		<pg:common />
</pg:pager>
 

   或者

 

<pg:pager url="${path} /jsp/queryAllUserAction.do" maxPageItems="${pageModel.size}" items="${pageModel.total}">
        <pg:params paramMap="${queryParam}"/>
        <pg:common />
    </pg:pager>
 
queryParam  是一个封闭了查询参数的map 如 {name=胡,age=14}

  
【smile-1.0.jar下载】http://hzs0502030128.iteye.com/blog/1471505

  • 大小: 91.8 KB
分享到:
评论

相关推荐

    一个C#写的类库及调用例子

    总的来说,这个项目提供了C#类库开发和使用的实际案例,对于学习和理解C#编程,特别是类库的创建和调用流程,是非常有价值的。通过学习这些资源,开发者可以提升自己的C#技能,并了解如何在实际项目中复用和集成...

    smile一个快速而全面的机器学习系统

    "smile"是一个快速且全面的机器学习系统,它的全称是"Statistical Machine Intelligence and Learning Engine"。...在标签"Java开发-机器学习"的指引下,Smile成为了Java开发者在机器学习领域的得力助手。

    Smile参考文献生成工具

    该工具以MFC(Microsoft Foundation Classes)作为开发框架,利用这一强大的Windows应用程序开发库,实现了用户友好的界面和高效的性能。 MFC是微软提供的一套面向对象的类库,它封装了Windows API,使得开发者可以...

    hibernate+jsp交友管理系统

    这个系统利用了Java后端的强大框架Hibernate和前端展示技术JSP,帮助开发者理解和实践Web应用程序的开发流程。 Hibernate是一个流行的ORM(对象关系映射)框架,它允许开发者用面向对象的方式来处理数据库操作,...

    jackson-dataformat-smile-2.10.0-API文档-中文版.zip

    标签:fasterxml、jackson、dataformat、smile、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和...

    我的smile头像

    另外,考虑到标签"smile 头像",这可能意味着设计的目标是创建一系列与微笑相关、风格统一的头像,用于网站或应用的不同用户角色,或者作为品牌的一部分。这样的系列设计需要保持一致的设计语言,包括颜色、形状、...

    jackson-dataformat-smile-2.8.10-API文档-中英对照版.zip

    标签:fasterxml、jackson、dataformat、smile、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释...

    Algorithm-SMiLE.zip

    《算法SMiLE:探索多标签缺失分类的解决方案》 在信息技术领域,算法扮演着至关重要的角色,它们是计算机程序的基石,确保高效且全面地执行任务。"Algorithm-SMiLE.zip"是一个压缩包,其中包含了名为"SMiLE-master...

    JSP 网上报名系统

    2. **JSP指令**:如`&lt;%@ page %&gt;`, `&lt;%@ include %&gt;`, `&lt;%@ taglib %&gt;`等,它们分别用于设置页面属性、引入其他页面和导入自定义标签库。 3. **JSP动作元素**:如`&lt;jsp:include&gt;`, `&lt;jsp:forward&gt;`, `&lt;jsp:useBean&gt;...

    机器学习算法Java库smile.zip

    SmileMiner是一个包含各种现有的机器学习算法的Java库。主要组件包括:mile 机器学习的核心库SmileMath 数学函数、排序、随机数生成器、最优化、线性代数、统计分布、假设检验SmileData Parsers for ... 标签:smile

    haarcascade-smile.xml.zip

    标题中的"haarcascade-smile.xml.zip"是一个与计算机视觉相关的压缩文件,它包含了OpenCV库用到的级联分类器(Haar Cascade)配置文件。OpenCV是一个开源的计算机视觉和机器学习库,广泛应用于图像处理和模式识别...

    JSP 网上报名系统详细代码及数据库

    JSP通过内置的动作标签如`&lt;form&gt;`、`&lt;input&gt;`等来构建表单,使用POST或GET方法提交数据至服务器。 7. **会话管理**:为了保持用户状态,系统可能使用session对象。例如,当用户登录后,其信息会被存储在session中,...

    Android代码-smile

    Smile Smile (Statistical Machine Intelligence and Learning Engine) is a fast and comprehensive machine learning, NLP, linear algebra, graph, interpolation, and visualization system in Java and Scala...

    jackson-dataformat-smile/yam-2.11.4.jar

    jackson-dataformat-smile-2.11.4.jar jackson-dataformat-yam-2.11.4.jar 这俩jar包在服务运行的时候显示读取失败,拷贝到自己的maven仓库的 \com\fasterxml\jackson\dataformat\jackson-dataformat-smile\2.11.4 ...

    jsp+js购物车源码

    在Web开发领域,创建一个购物车系统是常见的实践项目,尤其对于初学者来说,它可以帮助理解和掌握MVC(Model-View-Controller)模式、JavaServer Pages (JSP) 和 JavaScript 的交互,以及持久层框架如Hibernate的...

    c-smile源码

    C-Smile源码是针对一种面向对象的脚本语言,其设计灵感来源于C++,但具有脚本语言的便捷性。这个语言的核心组件包括一个编译器、一个运行字节码的虚拟机以及一个可扩展的C++运行时环境。它的主要目标是支持独立且可...

    smile

    标题中的"smile"可能指的是一个项目或者工具的名称,而描述中提到的"过时的英伟达图表"和"Nvidia Helm Charts"是与GPU计算和 Kubernetes 集群管理相关的技术。Nvidia Helm Charts 是 NVIDIA 提供的一套用于简化在 ...

    Android-Android库路由XML在inflating布局文件时将标签从一个标签转移到另一个标签

    在Android开发过程中,布局文件是构建用户界面的关键组成部分。它们定义了UI元素的层次结构、属性和交互方式。XML文件通常用于创建这些布局,因为它们提供了可读性强、易于维护的结构。本篇文章将深入探讨如何在...

    data_me_test.rar_mnist_test_smile3ph_类MNIST数据集

    《类MNIST数据集——data_me_test.rar_mnist_test_smile3ph详解》 在机器学习领域,数据集是模型训练的基础,而MNIST数据集作为手写数字识别的基准,早已深入人心。本文将深入探讨一个名为"data_me_test.rar_mnist_...

    js类库下载

    js类库之parallax.min.js

Global site tag (gtag.js) - Google Analytics