发现在系统中有好多写得很好的代码,也不知道是哪位前辈留下来的.整理一下...
自定义分页标签库

1:在配置文件中配置

一个相当好的自定义标签---分页<!-- self Tag Library Descriptors -->
一个相当好的自定义标签---分页  
<taglib>
一个相当好的自定义标签---分页    
<taglib-uri>/WEB-INF/self-html.tld</taglib-uri>
一个相当好的自定义标签---分页    
<taglib-location>/WEB-INF/self-html.tld</taglib-location>
一个相当好的自定义标签---分页  
</taglib>


2:在self-html.tld中page标签的配置

一个相当好的自定义标签---分页<tag>
一个相当好的自定义标签---分页        
<name>page</name>
一个相当好的自定义标签---分页        
<tagclass>com.jbbis.netedu.common.util.taglib.PageTag</tagclass>
一个相当好的自定义标签---分页        
<bodycontent>empty</bodycontent>
一个相当好的自定义标签---分页        
<info>tag here</info>
一个相当好的自定义标签---分页        
<attribute>
一个相当好的自定义标签---分页        
<name>name</name>
一个相当好的自定义标签---分页        
<required>true</required>
一个相当好的自定义标签---分页        
<rtexprvalue>false</rtexprvalue>
一个相当好的自定义标签---分页        
</attribute>    
一个相当好的自定义标签---分页        
<attribute>
一个相当好的自定义标签---分页        
<name>pageNum</name>
一个相当好的自定义标签---分页        
<required>false</required>
一个相当好的自定义标签---分页        
<rtexprvalue>false</rtexprvalue>
一个相当好的自定义标签---分页        
</attribute>        
一个相当好的自定义标签---分页        
<attribute>
一个相当好的自定义标签---分页        
<name>method</name>
一个相当好的自定义标签---分页        
<required>false</required>
一个相当好的自定义标签---分页        
<rtexprvalue>false</rtexprvalue>
一个相当好的自定义标签---分页        
</attribute>    
一个相当好的自定义标签---分页        
<attribute>
一个相当好的自定义标签---分页        
<name>methodValue</name>
一个相当好的自定义标签---分页        
<required>false</required>
一个相当好的自定义标签---分页        
<rtexprvalue>true</rtexprvalue>
一个相当好的自定义标签---分页        
</attribute>    
一个相当好的自定义标签---分页        
<attribute>
一个相当好的自定义标签---分页        
<name>form</name>
一个相当好的自定义标签---分页        
<required>true</required>
一个相当好的自定义标签---分页        
<rtexprvalue>false</rtexprvalue>
一个相当好的自定义标签---分页        
</attribute>        
一个相当好的自定义标签---分页        
<attribute>
一个相当好的自定义标签---分页        
<name>action</name>
一个相当好的自定义标签---分页        
<required>flase</required>
一个相当好的自定义标签---分页        
<rtexprvalue>true</rtexprvalue>
一个相当好的自定义标签---分页        
</attribute>
一个相当好的自定义标签---分页        
<attribute>
一个相当好的自定义标签---分页        
<name>returnLevel</name>
一个相当好的自定义标签---分页        
<required>flase</required>
一个相当好的自定义标签---分页        
<rtexprvalue>true</rtexprvalue>
一个相当好的自定义标签---分页        
</attribute>                                    
一个相当好的自定义标签---分页    
</tag>


其实从这儿也可以看到在PageTag文件中是一些什么值了...

3:PageTag中的具体操作(精华全部在这儿啦)


4:在JSP布面中导入:

 %>


5:在JSP页面中引用:

一个相当好的自定义标签---分页<form name="newsForm" method="post" action="<%=request.getContextPath() %>/portal/newsAction.page" > </form>


6:page文件


7:其它
7.1
可以注意到在标签的定义文件中用到了名为page_go的css层来美化界面,可能是出于满足不同用户对界面的不同要求所以在此没有对此css定义,你可以在JSP布面中重写此css.这儿有个可以参考一下.下载
7.2
根据标签的定义可以看到,此page应该放到form中.
7.3
根据在标签库中的

一个相当好的自定义标签---分页Page page=(Page)pageContext.getRequest().getAttribute(name);

语句,可见page应该在request.setAttribute("pageattribute",page);中定义.

7.4
如何通过对DB的操作得到了page ?通过DB操作可以获得一系统的data(应该注意到了在page文件夹中有个data属性,高人就是高人^_^),当然在得到这些data之前,先可能得进行一系统逻辑处理,比如说当前页码(pagenum),页长(pagesize)等等.通过这些数据就可以得到一个page实例了! ~ ~ : )

... ...

上一个介绍里面主要讲到了分页标签的配置,逻辑处理,引用。
我们在action中:

一个相当好的自定义标签---分页 // JSP中引用此attribute分页处理 
一个相当好的自定义标签---分页 

一个相当好的自定义标签---分页request.setAttribute(
 " page " ,page);


然后在JSP中引用此page。
这次主要看如何能过对DB操作实现此page。

处理逻辑:
1:根据SQL语句,当前页面,页面大小等参数,得到一系统data。
2:根据得到的data,再加上当前页面,页面大小可以实例化一个page类实体。
3:将此实体转换成便于到前台显示的DTO。

具体如下:

首先,我们根据查询语句从DB中得到一系列相关数据

......

一个相当好的自定义标签---分页Query query = getSession().createQuery(sql);
一个相当好的自定义标签---分页            setParams(query, paramNames, params);
            }

......


可以看到其中除了createQuery,setFirstResult,setMaxResults外其实都是用户自定义的一些函数。
其它函数,顾名思义应该知道它想实现一个什么功能,象doQuery(query)就是得到一个结果集也许是得到一个按列表方式抽取结果集 query.list(),or 按迭代方式抽取结果集query.iterate().函数getStartIndex(args[])返回数据第一条记录的起点位置。其它的也都差不多!

其次得到一个page的实体类(entity),或者说得到其DAO对象。
其实得到一个DTO的page对象比较简单。前面列出了page,而上面已经从DB中得到了一系列数据(data),再加上页面的相关信息就可以实例化一个page实体了:

一个相当好的自定义标签---分页 一个相当好的自定义标签---分页.
一个相当好的自定义标签---分页
一个相当好的自定义标签---分页
 public  DefaultPage( int  pageSize,  int  pagesCount,  int  pageNumber, Collection data,
.


当然在此前,对面页数据得处理一下,象pageNumber可能如下: 

    }


easy吧!

最后将此实体转换成适合前台显示的DTO对象。
这个侧是依据不同的需求去做相应的转换了,一般来说从DB取出来的实体(DAO)直接与DB中的数据对应。而在DTO中我们可以提供许多更加符合实际的字段与方法,使得我们的JSP页面显示更加得心应手!同时也避免了直与DB交互。它们之间的关系

“一般人的标签我不看,高手写的东西真的值得借鉴,学习!”

相关文章: