分页显示一直是web开发中一大烦琐的难题,传统的网页设计只在一个JSP或者ASP页面中书写所有关于数据库操作的代码,那样做分页可能简单一点,但当把网站分层开发后,分页就比较困难了,下面是我做Spring+Hibernate+Struts2项目时设计的分页代码,与大家分享交流。
1、DAO层接口的设计,在MemberDao接口中定义了如下两个方法:
publicinterface MemberDao {
@SuppressWarnings("unchecked")
/**
* 分页查询
* @param hql 查询的条件
* @param offset 开始记录
* @param length 一次查询几条记录
* @return
*/
public List queryForPage(final String hql,finalint
offset,finalint length);
/**
* 查询所有记录数
* @param hql 查询的条件
* @param offset 开始记录
* @return总记录数
*/
publicint getAllRowCount(String hql);
}
2、DAO层实现类MemberDaoImpl对上面两个方法的实现如下:
publicclass MemberDaoImpl extends HibernateDaoSupport implements MemberDao {
/**
* 查询所有记录数
* @return总记录数
*/
publicint getAllRowCount(String hql) {
return getHibernateTemplate().find(hql).size();
}
/**
* 分页查询
* @param hql 查询的条件
* @param offset 开始记录
* @param length 一次查询几条记录
* @return
*/
@SuppressWarnings("unchecked")
public List queryForPage(final String hql, finalint offset, finalint length) {
List list = getHibernateTemplate().executeFind(new HibernateCallback(){
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
query.setFirstResult(offset);
query.setMaxResults(length);
List list = query.list();
return list;
}
});
return list;
}
}
细心的读者会发现,这个类继承了HibernateDaoSupport类,HibernateDaoSupport是Spring 提供的对Hibernate支持的类,getHibernateTemplate().executeFind(new HibernateCallback(){....})方法中的参数,我们使用了接口回调,在其参数内,我们能像原生的Hibernate一样调用query.setFirstResult(offset)和query.setMaxResults(length)来实现分页查询功能。
3、下面我们来新建一个保存分页信息的类PageBean,具体代码如下:
publicclass PageBean {
@SuppressWarnings("unchecked")
private List list; //要返回的某一页的记录列表
privateint allRow; //总记录数
privateint totalPage; //总页数
privateint currentPage; //当前页
privateint pageSize; //每页记录数
@SuppressWarnings("unused")
privateboolean isFirstPage; //是否为第一页
@SuppressWarnings("unused")
privateboolean isLastPage; //是否为最后一页
@SuppressWarnings("unused")
privateboolean hasPreviousPage; //是否有前一页
@SuppressWarnings("unused")
privateboolean hasNextPage; //是否有下一页
@SuppressWarnings("unchecked")
public List getList() {
return list;
}
@SuppressWarnings("unchecked")
publicvoid setList(List list) {
this.list = list;
}
publicint getAllRow() {
return allRow;
}
publicvoid setAllRow(int allRow) {
this.allRow = allRow;
}
publicint getTotalPage() {
return totalPage;
}
publicvoid setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
publicint getCurrentPage() {
return currentPage;
}
publicvoid setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
publicint getPageSize() {
return pageSize;
}
publicvoid setPageSize(int pageSize) {
this.pageSize = pageSize;
}
publicvoid setFirstPage(boolean isFirstPage) { this.isFirstPage = isFirstPage;
}
publicvoid setLastPage(boolean isLastPage) {
this.isLastPage = isLastPage;
}
publicvoid setHasPreviousPage(boolean hasPreviousPage) { this.hasPreviousPage = hasPreviousPage;
}
publicvoid setHasNextPage(boolean hasNextPage) { this.hasNextPage = hasNextPage;
}
//初始化分页信息
publicvoid init(){
this.isFirstPage = isFirstPage();
this.isLastPage = isLastPage();
this.hasPreviousPage = isHasPreviousPage();
this.hasNextPage = isHasNextPage();
}
//部分set方法
publicboolean isFirstPage() {
return currentPage == 1; // 如是当前页是第1页
}
publicboolean isLastPage() {
return currentPage == totalPage; //如果当前页是最后一页}
publicboolean isHasPreviousPage() {
return currentPage!=1; //只要当前页不是第1页
}
publicboolean isHasNextPage() {
return currentPage != totalPage; //只要当前页不是最后1页}
/**
* 计算总页数,静态方法,供外部直接通过类名调用
* @param pageSize 每页记录数
* @param allRow 总记录数
* @return总页数
*/
publicstaticint countTotalPage(finalint pageSize,finalint allRow){
int totalPage = allRow % pageSize == 0 ? allRow/pageSize : allRow/pageSize+1;
return totalPage;
}
/**
* 计算当前页开始记录
* @param pageSize 每页记录数
* @param currentPage 当前第几页
* @return当前页开始记录号
*/
publicstaticint countOffset(finalint pageSize,finalint currentPage){
finalint offset = pageSize * (currentPage-1);
return offset;
}
/**
* 计算当前页,若为0或者请求的URL中没有"?page=",则用1代替
* @param page 传入的参数(可能为空,即0,则返回1)
* @return当前页
*/
publicstaticint countCurrentPage(int page){
finalint curPage = (page==0?1:page);
return curPage;
}
}
4、Service层接口的设计:
publicinterface MemberService {
/**
* 分页查询
* @param pageSize 每页大小
* @param currentPage 当前第几页
* @return封闭了分页信息(包括记录集list)的Bean
*/
public PageBean queryForPage(int pageSize,int currentPage); }
5、Service层实现类的部分内码如下:
publicclass MemberServiceImpl implements MemberService{
private MemberDao memberDao;
public MemberDao getMemberDao() {
return memberDao;
}
publicvoid setMemberDao(MemberDao memberDao) {
this.memberDao = memberDao;
}
/**
* 分页查询
* @param currentPage 当前第几页
* @param pageSize 每页大小
* @return封闭了分页信息(包括记录集list)的Bean
*/
@SuppressWarnings("unchecked")
public PageBean queryForPage(int pageSize, int currentPage) { final String hql = "from User"; //查询语句
int allRow = memberDao.getAllRowCount(hql); //总记录数
int totalPage = PageBean.countTotalPage(pageSize, allRow); //总页数
finalint offset = PageBean.countOffset(pageSize,
currentPage); //当前页开始记录
finalint length = pageSize; //每页记录数
List
//把分页信息保存到bean中
PageBean pageBean = new PageBean();
pageBean.setPageSize(pageSize);
pageBean.setCurrentPage(currentPage);
pageBean.setAllRow(allRow);
pageBean.setTotalPage(totalPage);
pageBean.setList(list);
pageBean.init();
return pageBean;
}
}
6、在Struts2中调用queryForPageMemberService层的queryForPage()方法即可return 一个包含分页信息、符合条件的结果集list,代码如下:
publicclass ListMemberAction extends ActionSupport { private MemberService memberService;
privateint page = 1; //第几页
private PageBean pageBean; //包含分布信息的bean
public MemberService getMemberService() {
return memberService;
}
publicvoid setMemberService(MemberService memberService) { this.memberService = memberService;
}
publicint getPage() {
return page;
}
publicvoid setPage(int page) {
this.page = page;
}
public PageBean getPageBean() {
return pageBean;
}
publicvoid setPageBean(PageBean pageBean) {
this.pageBean = pageBean;
}
@Override
public String execute() throws Exception {
//分页的pageBean,参数pageSize表示每页显示记录数,page为当前页
this.pageBean = memberService.queryForPage(2, page);
return"success";
}
}
7、最后在listMember.jsp页面中,用到了Struts2标签:
" onclick="return askDel()"/>delete
共
共
当前第
第一页上一页
下一页最后一页
到这里,Hibernate+Spring+Struts2整合开发中的分页问题就已经解决了,
配置文件:
8、Struts:配置文件
"-//Apache Software Foundation//DTD Struts Configuration
2.1//EN"
"https://www.doczj.com/doc/0e15566868.html,/dtds/struts-config_2_1.dtd">
9、Hibernate配置文件,映射文件和实体类代码省略。
10、Spring配置文件:
11、Web.xml文件配置:
2.2.3 字型设置标记 功能:设置文字的风格,如黑体、斜体、带下划线等,这是一组标记,它们可以单独使用,也可以混合使用产生复合修饰效果。常用的标记有以下一些: … :文字以粗体显示。 … :文字显示为斜体。 … :显示下划线。 … :删除线。 … :使文字大小相对于前面的文字增大一级。 … :使文字大小相对于前面的文字减小一级。 … :使文字成为前一个字符的上标。 …:使文字成为前一个字符的下标。 :使文字显示为闪烁效果。 …:以等宽体显示西文字符。 …:输出引用方式的字体,通常是斜体。 …:强调文字,通常用斜体加黑体。 …:特别强调的文字,通常也是斜体加黑体。 注:有些标记的效果必须在动态环境下才能显示,例如
常用HTML代码解释 一、文字 1.标题文字.......... 10.下标字.......... 11.上标字.......... 12.文字闪烁效果 13.换行(也称回车)
14.分段 15.文字的对齐方向
#号可为left:表向左对齐(预设值)center:表向中对齐right:表向右对齐P.S.
之后的文字都会以所设的对齐方式显示,直到出现另一个
改变其对齐方向,遇到
为什么需要分页? 1.从客户角度来讲,数据内容过多,查看数据非常不便。 2.从服务器和网络的角度来讲,查这么多数据,传输这么多数据,是一种效率很低的做法。分页的核心SQL: 最简单最原始的分页: 分页的简单过程: 用户点击第一页传递一个参数:Num=1到后台,服务器获取num=1将该参数传到Dao 中,dao中:select * from tb_article where id>10 limit ?,?;, ps.setint((num-1)*10),返回一个List,传递到jsp中进行显示,发送给客户端。 1.
2.
3.访问:channel.jsp,然后点击在下面的页号导航即可看到简单的分页效果。 首页上一页1,2,3,4,5,6,7,8,9,10 下一页末页共101页 分页的实现原理: 1.获得需要显示的总的记录数rowCount—》从数据库中取 2.设定每页最多显示的记录数size—》10 3.指定显示的页码:num →作为参数得到 4.所要显示的数据对象→根据startRow和size从数据库中查出! 5.根据rowCount,size,num可计算出其余的元素: a)本页面从第几个记录开始:startRow = (this.num-1) * size; b)共有多少页:pageCount = (int) Math.ceil((double)rowCount/size); c)list:包含了所要显示的数据对象的集合 d)下一页:next=Math.min( this.pageCount, this.num+1) e)上一页:prev = Math.max(1 , this.num-1) f)页号控制元素: numCount:每页最多显示多少页号。(一共显示numCount+1个页号) start = Math.max(this.num-numCount/2, first); //本页显示页号从多少页开始 end = Math.min(start+numCount, last); //本页显示页号在多少页结束 页号控制: if(end-start < numCount){ //当本页总显示的页号数不够numCount时,如何计算起始页号。 start = Math.max(end-numCount, 1); } 分页实现步骤 Pagenation工具类代码:
一、HTML各种命令的代码: 1、文本标签(命令)
创建预格式化文本 创建最大的标题 创建最小的标题 创建黑体字 创建斜体字 创建打字机风格的字体 创建一个引用,通常是斜体 加重一个单词(通常是斜体加黑体) 加重一个单词(通常是斜体加黑体) 设置字体大小,从 1 到 7 设置字体的颜色,使用名字或十六进制值2、图形(命令) 添加一个图像 排列对齐一个图像:左中右或上中下 设置围绕一个图像的边框的大小 将段落按左、中、右对齐
插入一个回车换行符
html网页编辑代码大全详细使用方法 添加音乐 注册会员登录首页开通窝窝QQ-交流群站内娱乐颜色代码搜索帖子《声色具全》Summer°啦啦之乖乖宝贝啦啦&毛毛《简粉粉色》莫晓晓《简约蓝色》莫晓晓rose.《简约灰色》莫晓晓圣诞女孩【星期⒏音乐论坛】用心聆听,这里有你想要的声音。?【资源共享】?【论坛HTML帖子常用代码】-发现代码贴好看,不懂的,有兴趣的可以研究下。 网页搜索站内搜索搜索 返回列表回复发帖 发新话题发布投票发布悬赏发布辩论发布活动发布视频发布商品沵旳"唯1。发短消息 加为好友 沵旳"唯1。(只能a1自己。)当前离线 那些所谓d2情〃 UID21618帖子866精华42积分9318威望976金钱3587贡献1450阅读权限150性别女来自寂’在线时间248小时注册时间2009-11-29最后登录2010-3-1 ?星期⒏管理版主? UID21618帖子866精华42积分9318威望976金钱3587贡献1450阅读权限150性别女来自寂’在线时间248小时注册时间2009-11-29最后登录2010-3-1 【楼主】 打印字体大小:tT发表于2010-1-2114:53|只看该作者踩窝 窝送礼物问候Ta【论坛HTML帖子常用代码】-发现代码贴好看,不懂的,有兴趣的可以研究下。 关于“html图片移动...”的内容 本站搜索更多关于“html图片移动代码”的内容 本帖最后由沵旳"唯1。于2010-1-2114:54编辑 一、文字标记 基本代码如下:
HTML(HyperText Mark-up Language)即超文本标记语言或超文本链接标示语言,是目前网络上应用最为广泛的语言,也是构成网页文档的主要语言。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字、图形、动画、声音、表格、链接等。HTML的结构包括头部(Head)、主体(Body)两大部分,其中头部描述浏览器所需的信息,而主体则包含所要说明的具体内容。 编辑本段HTML代码大全 1.结构性定义 文件类型 (放在档案的开头与结尾) 文件主题
(显示原始码之用) 样本 键盘输入 变数 定义 (有些浏览器不提供) 地址 大字 小字 与外观相关的标签(作者自订的表现方式) 加粗 斜体 底线 (尚有些浏览器不提供) 删除线 ASP数字分页显示代码实例 网站建设ASP初级程序员基本技能--数字分页显示
数据库mdb内容:表名=Diary;字段1=DiaryID int;字段2=DiaryName nvarchar;字段3=DiaryDate datetime <% 'On Error Resume Next Set Conn=Server.CreateObject("ADODB.Connection") 'ConnStr="Provider=SQLOLEDB;Data Source=Chinadad;Initial Catalog=Chinadad;UID=sa;PWD=;" 'ConnStr="Driver={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("\")&"\Diary.mdb" ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("\")&"\Diary.mdb" ''Response.Write ConnStr&"
Flash常用代码大全 1、用命令载入一个动画,我需要确定载入动画在画面中的位置,用什么语言来设置? 例如载入名为dd.swf的动画,我要确定这个动画的中心位置在(205,250),该怎么设置? 在要加载动画的那钟加入 loadMovie("dd.swf", "a"); a._x=205; a._y=250; 你得先做一个空的MC起名叫"a",导入时,在右下角也起名为a 2、用flash 做那种弹出的小窗口 分两步: 给flash中的按钮加入如下action: on (release) { getURL ("javascript:MM_openBrWindow('newweb.htm','','width=600,height=100')"); } 在HTML页面的...之间加入下面的javascript代码. 3、如何使得flash一打开就是全屏? fscommand("fullscreen",true) 如何不能使用右键?
fscommand ("showmenu", "false"); 4、当鼠标经过时动画播放到某处 on (rollover) { gotoAndPlay(10); } 当鼠标按下时动画播放到某处 on (release) { gotoAndPlay(1); } 5、播完动画后自动跳到某网页 getURL("siteindex.htm", _self); 6、设为首页 on (release) { getURL("javascript:void(document.links.style.behavior='url(#default#homepage)');v oid document.links.setHomePage ('https://www.doczj.com/doc/0e15566868.html,/')", "_self", "POST"); } 注意要将网页中的flash的ID号命名为"links"
012开头的代码都是代表分页器故障的代码,此为75XX系列机器分页器代码。不断总结以下。 012-330 Decurler Home Sensor 关闭错误 Decurler Home Sensor的ON检知后经过400msec,Decurler Home Sensor仍未Off。 确认传感器的安装状态。关机重启是否可以正常?确认Decurler驱动结构的驱动齿轮磨损、转动不良、破损、Belt张力不良及有无残留纸张、凸轮部的异物。清洁传感器,修复或更换造成不良的零件,清除异物。
012-212 Stacker Upper Limit Fail Stacker超过规定上限位置(Stack Height)并异常上升。 确认传感器的安装状态。关机重启是否正常?检查驱动齿轮是否磨损、转动不良、破损。更换磨损、转动不良、破损的驱动齿轮。确认Belt是否松开、脱开。 17、Upper Limit Sensor 13、Stacker Height Sensor 2 31、Stacker Height Sensor 1 32、Stacker Encode Sensor 33、Stacker No Paper Sensor 012-211 Stacker Tray Fail Stacker经过规定时间后仍未上升。 检查出纸口传感器Stacker Height Sensor 1、2(上图13、31号)是否脏了? 012-213 Stacker Tray Lower Limit Fail Stacker Tray超过规定下限位置(Full Stack)并异常下降。
检查传感器,驱动齿轮,皮带是不是不正确?上图32号Stack Encoder Sensor传感器是否脏了? 012-264小册子折页装钉部故障 Booklet Drawer Broken Fail 关闭Finisher Front Door Interlock时,检知Booklet Drawer Sensor开着(Print中不会发生)。或,Power On时在Front Door Interlock Close状态,检知Booklet Drawer Sensor开着。 拉出Booklet,再次推入。显示是否变化? 确认Booklet Drawer启动部分是否变形、有异物。
html代码的所有代码属性 跑马灯 普通卷动 滑动 预设卷动 来回卷动 向下卷动 向上卷动 向右卷动 向左卷动 卷动次数 设定宽度 设定高度 设定背景颜色 设定滚动速度 设定卷动时间 鼠标经过上面时停止滚动鼠标离开时开始滚动 字体效果
<% dim m,n set rs=server.CreateObject("adodb.recordset") sqlstr="select * from message order by time desc" rs.open sqlstr,conn,3,3 rs.pagesize=10 '定义一页显示的记录数目 tatalrecord=rs.recordcount '获取记录总数目 tatalpages=rs.pagecount '获取分页的数目 rs.movefirst ---------------------------- nowpage=request("page") '用request获取当前页数,注意page是自己定义的变量并非函数-------------------------- if nowpage&"x"="x" then '处理页码为空时的情况 nowpage=1 else nowpage=cint(nowpage) '将页码转换成数字型 end if -------------------------------- rs.absolutepage=nowpage '将指针移动到当前显示页的第一条记录 ------------------------------- %> --------------------------------------------- <% n=1 while not rs.eof and n<=rs.pagesize response.Write(rs("user") & "
") response.Write(rs("tt") & "
") n=n+1 rs.movenext '显示页面的数据 wend %> ------------------------------------------- 共:<%=tatalpages%>页当前为:<%=nowpage%>页 <%if nowpage>1 then%> 上一页 <%else%> 上一页 <%end if%> <%for k=1 to tatalpages%> <%if k<>nowpage then %> <%=k%> <%else%> <%=k%>
一些基础的HTML Tag HTML里,比较基础的Tag主要用于标题,段落和分行。 学习HTML最好的方法,就是跟着示例学。为了各位学习的方便,我们准备了一个简单的HTML编辑器,你可以在左边写HTML代码,然后点击上面的按钮,查看HTML的显示结果。 试试看吧! 示例:一个非常简单的HTML文件 这个示例算是一个最简单的HTML文件,只包含了最基本的能构成一个HTML文件的Tag。通过这个例子,你可以看到浏览器是如何显示这个文件的,以此对HTML文件有个最初的认识。 示例:简单的段落 这个示例显示在HTML文件里如何分段。 正文标题 这个示例告诉你如何在HTML文件里定义正文标题。 HTML用
HTML代码教程 教程一、基本标志 1. 2.
3. 4.1. 打开文档。 2. 快捷键Alt + F11打开VBA编辑器,选择菜单“插入->模块” 3. 粘贴代码 Option Explicit Sub SplitEveryFivePagesAsDocuments() Dim oSrcDoc As Document, oNewDoc As Document Dim strSrcName As String, strNewName As String Dim oRange As Range Dim nIndex As Integer, nSubIndex As Integer, nTotalPages As Integer, nBound As Integer Dim fso As Object Const nSteps = 110 ' 修改这里控制每隔几页分割一次 Set fso = CreateObject("Scripting.FileSystemObject") Set oSrcDoc = ActiveDocument Set oRange = oSrcDoc.Content nTotalPages = https://www.doczj.com/doc/0e15566868.html,rmation(wdNumberOfPagesInDocument) oRange.Collapse wdCollapseStart oRange.Select For nIndex = 1 To nTotalPages Step nSteps Set oNewDoc = Documents.Add If nIndex + nSteps > nTotalPages Then nBound = nTotalPages Else nBound = nIndex + nSteps - 1 End If For nSubIndex = nIndex To nBound oSrcDoc.Activate oSrcDoc.Bookmarks("\page").Range.Copy oSrcDoc.Windows(1).Activate Application.Browser.Target = wdBrowsePage Application.Browser.Next oNewDoc.Activate oNewDoc.Windows(1).Selection.Paste Next nSubIndex strSrcName = oSrcDoc.FullName strNewName = fso.BuildPath(fso.GetParentFolderName(strSrcName), _ fso.GetBaseName(strSrcName) & "_" & (nIndex \ nSteps + 1) & "." & fso.GetExtensionName(strSrcName)) oNewDoc.SaveAs strNewName oNewDoc.Close False Next nIndex Set oNewDoc = Nothing Set oRange = Nothing Set oSrcDoc = Nothing Set fso = Nothing MsgBox "结束!"
Dreamweaver代码大全Dreamweaver代码 基本结构标签: ,表示该文件为HTML文件
,包含文件的标题,使用的脚本,样式定义等,分段标志 ,采用黑体字 ,采用斜体字
HTML 常用代码大全 Html 常用代码 1.文件类型 (放在档案的开头与结尾) 2.文件主题
(显示原始码之用) 12 小字 13 下标 14 上标 15 居中 <%@ page contentType="text/html; charset=gb2312" %> <%@ page language="java" import="java.sql.*" %> /** * 华夏课程设计西西~~ */
常用html语言表 一、HTML各种命令的代码: 1、文本标签(命令)
创建预格式化文本 创建最大的标题 创建最小的标题 创建黑体字 创建斜体字 创建打字机风格的字体 创建一个引用,通常是斜体 加重一个单词(通常是斜体加黑体) 加重一个单词(通常是斜体加黑体) 设置字体大小,从 1 到 7 设置字体的颜色,使用名字或十六进制值 添加一个图像 排列对齐一个图像:左中右或上中下 设置围绕一个图像的边框的大小 将段落按左、中、右对齐
插入一个回车换行符