查询内容在网页里面分页显示+跳页查看

因为还处于学习阶段,所以用的框架是Struts2+Hibernate,

查询的方法是Hibernate自带的方法,因为数据较少的缘故,所以设定每页显示两条数据来实现

1.dao 层Hibernate的分页方法

 1 package com.hanqi.dao;
 2
 3 import java.util.ArrayList;
 4 import java.util.List;
 5
 6 import org.hibernate.Session;
 7 import org.hibernate.SessionFactory;
 8 import org.hibernate.Transaction;
 9 import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
10 import org.hibernate.cfg.Configuration;
11 import org.hibernate.service.ServiceRegistry;
12
13 import com.hanqi.entity.Phoner;
14
15 public class PhonerDAO {
16
17     //定义变量
18     private Configuration cfg = null ;
19     private ServiceRegistry sr = null ;
20     private SessionFactory sf = null ;
21     private Session se = null ;
22     Transaction ts = null ;
23     List<Phoner> list = new ArrayList<>() ;
24
25     public PhonerDAO() {
26         //初始化Hibernate
27         cfg = new Configuration().configure() ;
28
29         sr = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build() ;
30
31     }
32
33     //配置加载
34     public void init()
35     {
36         sf = cfg.buildSessionFactory(sr) ;
37
38         se = sf.openSession() ;
39
40         ts = se.beginTransaction() ;
41     }
42
43     //提交事务并释放资源
44     public void destory()
45     {
46         ts.commit() ;
47
48         se.close() ;
49
50         sf.close() ;
51     }
52
53     //分页显示所有联系人
54     public List<Phoner> getAll(int pages)
55     {
56         init() ;
57
58         list = se.createQuery("from Phoner")//HQL语句
59                     .setMaxResults(2)//设置每页显示的行数
60                     .setFirstResult((pages-1)*2)//设置起始页
61                     .list() ;//获得集合
62
63         destory();
64
65         return list ;
66     }
67
68
69 }

2在service调用上述方法并传递一个页码参数

 1 package com.hanqi.service;
 2
 3 import java.util.List;
 4
 5 import com.hanqi.dao.PhonerDAO;
 6 import com.hanqi.entity.Phoner;
 7
 8 public class PhonerService {
 9
10     PhonerDAO pd = new PhonerDAO() ;
11
12     //分页查询
13     public List<Phoner> getAll(int pages)
14     {
15         return pd.getAll(pages) ;
16     }
17
18 }

3底层的代码我们已经写完,接下来就是怎么在网页和struts.xml进行调用并显示数据

  这是第一个页面,我们让它通过get方式携带一个页码参数(默认进去就显示第一页)

<%@page import="com.hanqi.service.PhonerService"%>
<%@page import="com.hanqi.entity.Phoner"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
h3{text-shadow: 5px 5px 5px #FFF000 ;}

</style>
</head>
<body>
<%

%>
<!-- 这里设置连接跳转并携带参数传递到下一个页面 -->
<a href="selectPhoner.action?pages=1"><h3>查询联系人</h3></a><br><br>
</body>
</html>

之后点击查询联系人,我们通过struts.xml配置跳转到显示的页面

  首先要定义一个Action的类

 1 package com.hanqi.action;
 2
 3 import java.util.List;
 4
 5 import javax.servlet.http.HttpServletRequest;
 6
 7 import org.apache.struts2.ServletActionContext;
 8
 9 import com.hanqi.entity.Phoner;
10 import com.hanqi.service.PhonerService;
11 import com.opensymphony.xwork2.ActionSupport;
12
13 public class PhonerAction  {
14
15     PhonerService ps = new PhonerService() ;//实例化
16     private String pages ;
17
18     public String getPages() {
19         return pages;
20     }
21
22     public void setPages(String pages) {
23         this.pages = pages;
24     }
25
26     public String selectPhoner()
27     {
28         String rtn = "fail" ;
29
30         try
31         {
32             HttpServletRequest hsr = ServletActionContext.getRequest() ;//获取原生request
33
34             //获取传递的参数
35             int pages = Integer.parseInt(hsr.getParameter("pages")) ;
36
37             List<Phoner> list = ps.getAll(pages); //调取service层方法
38
39             hsr.setAttribute("pages", pages); //覆盖参数并重新传递回去
40
41             hsr.setAttribute("selectAll", list); //将获取到的数据集合放入请求中
42
43             rtn = "success" ;
44
45         }catch(Exception e)
46         {
47             e.getStackTrace() ;
48         }
49         return rtn ;
50     }
51 }

  struts.xml配置

    <action name="selectPhoner" class="com.hanqi.action.PhonerAction" method=" selectPhoner">

                <result>/WEB-INF/pages/selectPhoner.jsp</result>

        </action>

显示数据的jsp,这里我们做了个小小的判断,因为我们设置的每页两条数据,所以我们得到的集合的长度要么0,要么1,要么2所以我们可以判断页码的超出范围

  并控制弹窗,这里又做了定时跳转

  1 <%@page import="com.hanqi.dao.PhonerDAO"%>
  2 <%@page import="com.hanqi.service.PhonerService"%>
  3 <%@page import="com.hanqi.entity.Phoner"%>
  4 <%@page import="java.util.List"%>
  5 <%@ page language="java" contentType="text/html; charset=UTF-8"
  6     pageEncoding="UTF-8"%>
  7 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  8 <html>
  9 <head>
 10 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 11 <title>Insert title here</title>
 12 <style type="text/css">
 13 *{
 14     margin:0 ;
 15     padding:0;
 16 }
 17 table
 18 {
 19     height:150px;
 20     width:600px;
 21     border:#990 1px solid;
 22     text-align:center;
 23     margin:0 ;
 24     border-radius:8px;
 25 }
 26 table tr
 27 {
 28     margin:0 ;
 29     border:#990 1px solid;
 30     cellpadding:0 ;
 31     cellspacing:0 ;
 32 }
 33 table th
 34 {
 35     margin:0 ;
 36     border:#990 1px solid;
 37     cellpadding:0 ;
 38     border:1 ;
 39 }
 40 table td
 41 {
 42     margin:0 ;
 43     border:#990 1px solid;
 44     cellpadding:0 ;
 45     border:1 ;
 46 }
 47 </style>
 48 </head>
 49 <body>
 50 <%
 51
 52 //定义变量,获取父级网页传递的参数
 53 int pages = Integer.parseInt(request.getParameter("pages")) ;
 54
 55 //定义Phoner集合,并将从请求中获取到的集合赋给此集合
 56 List<Phoner> list = (List<Phoner>)request.getAttribute("selectAll") ;
 57
 58 //获取记录条数
 59 List<Phoner> list1 = new PhonerDAO().getCount() ;
 60
 61 int account = list1.size() ;
 62
 63 int yeshu = 0 ;
 64
 65 if(account%2 == 0)
 66 {
 67     yeshu = account/2 ;
 68 }
 69 else
 70 {
 71     yeshu = (int)account/2 + 1 ;
 72 }
 73 %>
 74
 75 <table cellspacing="0" cellpadding="0">
 76
 77     <tr>
 78         <th>序号</th>
 79         <th>姓名</th>
 80         <th>电话</th>
 81         <th>地址</th>
 82         <th>备注</th>
 83     </tr>
 84 <%
 85 //在表格中遍历集合
 86 for(Phoner p : list)
 87 {%>
 88     <tr>
 89         <td><%=p.getXuhao() %></td>
 90         <td><%=p.getName() %></td>
 91         <td><%=p.getTelnum() %></td>
 92         <td><%=p.getAddress() %></td>
 93         <td><%=p.getRemart() %></td>
 94     </tr>
 95 <%
 96 }
 97 %>
 98 </table>
 99 <%
100 if(list.size() == 0)
101 {%>
102     <script type=‘text/javascript‘>alert(‘页码超出范围‘)</script>
103 <%
104 response.setHeader("refresh", "0;url=selectPhoner.action?pages=1");}
105 %>
106 <br>
107 共&nbsp;<%=yeshu %>&nbsp;页&nbsp;<%=account %>&nbsp;条记录&nbsp;&nbsp;&nbsp;&nbsp;当前为&nbsp;<%=pages %>&nbsp;页
108 &nbsp;&nbsp;&nbsp;&nbsp;
109 <a href="selectPhoner.action?pages=<%=pages-1 %>" >上一页</a>&nbsp;&nbsp;&nbsp;&nbsp;
110 <a href="selectPhoner.action?pages=<%=pages+1 %>" >下一页</a>&nbsp;&nbsp;&nbsp;&nbsp;
111 <form action="tiaoPhoner.action" method="post">
112     跳到<input type="text" name="pages">页&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="跳转" >
113 </form>
114 </body>
115 </html>

这时我们需要的分页就实现了

接下来就是输入页码跳转

  首先还是上面的jsp页面,我们加入跳转的代码,通过form表单进行提交数据

  dao层的方法还是没有变直接调用就好,至于传递的页码参数则为我们输入的参数,怎么获取呢?

  先说struts.xml

1 <action name="tiaoPhoner" class="com.hanqi.action.PhonerAction" method="tiaoPhoner">
2
3                 <result>/WEB-INF/pages/selectPhoner.jsp</result>
4
5         </action>

  接下来我们在Action类中定义该方法

 1 public String tiaoPhoner()
 2     {
 3         String rtn = "fail" ;
 4
 5         try
 6         {
 7             HttpServletRequest hsr = ServletActionContext.getRequest() ;//获取原生request
 8
 9             //获取传递的参数
10             try
11             {
12                 int page = Integer.parseInt(pages) ;
13
14                 System.out.println(page);
15                 List<Phoner> list = ps.getAll(page); //调取service层方法
16
17                 hsr.setAttribute("pages", page); //覆盖参数并重新传递回去
18
19                 hsr.setAttribute("selectAll", list); //将获取到的数据集合放入请求中
20
21             }catch(Exception e)
22             {
23                 e.getStackTrace();
24             }
25             rtn = "success" ;
26
27         }catch(Exception e)
28         {
29             e.getStackTrace() ;
30         }
31         return rtn ;
32     }

    service层的方法并没有变,这时我们就可以进行页面跳转了

 预览图:

这里的共多少页是通过获取总记录条数count计算出来的

  因为每页显示两条,所以我们通过判断count%2 == 0来得到总的页数(==0 页数为count/2,否则页数为(int)count/2+1)

查看页面条数的dao层方法

 1 //查询有多少条记录
 2     public List<Phoner> getCount()
 3     {
 4         init() ;
 5
 6         list = se.createQuery("from Phoner").list() ;
 7
 8         destory();
 9
10         return list;
11     }

然后直接在页面调用方法获取集合,集合长度就是我们要用到的count

如果存在不完善的地方还请指正批评

时间: 2024-11-03 03:46:41

查询内容在网页里面分页显示+跳页查看的相关文章

将sharepoint中的跨网站、列表查询的结果用SPGridView分页显示

将sharepoint中的跨网站.列表查询的结果用SPGridView分页显示 2008-12-30 10:14 by Virus-BeautyCode, 1200 阅读, 0 评论, 收藏, 编辑 我是用户控件(也就是ascx控件)写的查询界面和显示结果,然后用QuickPart包装了一下,这样做的好处就是复杂界面可以使用拖动控件来开发,要比写代码来的直观,不足之处就是调试困难,但是昨天我的同事发现了一个调试的好办法,很不错,下一篇我会写出来. 需求是开发一个公司动态发布系统,我将未发布动态,

MYSQL复杂查询(条件不定查询+按降序/升序分页显示)

使用mybatis框架后,mybatis-generator可以为我们自动生成操作数据库(MYSQL)的*Mapper.xml文件+模型类+*Mapper接口,但是,mybatis-generator并不能为我们生成所有方法,例如根据输入的不定条件来查询数据,又比如按照某个参数升序或者降序并分页显示所查到的数据,下面介绍一下条件不定查询及按降序/升序分页显示的方法. 1.按条件不定查询(项目基于SSMM(spring+springmvc+maven+mybatis)框架整合的代码进行举例) 在B

数据访问(登录数据库查询内容在网页显示)

查询某个数据库的内容的话,建个HTML文件,然后建个from表单,例子如下. <form action="./loginchuli.php" method="post"> <div>用户名:<input type="text" name="uid" /></div> <div>密码:<input type="password" name=&q

JavaWeb分页显示内容——数据库分页查询

转载请注明原文地址: 在开发过程中,经常做的一件事,也是最基本的事,就是从数据库中查询数据,然后在客户端显示出来.当数据少时,可以在一个页面内显示完成.然而,如果查询记录是几百条.上千条呢?直接一个页面显示完全的话,表格得多长啊......这时,我们可以用分页技术. 何为分页?效果图如下: 这里总共查询了100条记录,如果一次性显示的话表格会很多行,用户体验不佳.而我们采用分页显示的话,一页显示10条记录,共十页.用户可以自行翻阅,记录少,清晰显示. 下面谈谈分页效果的实现,思路有两种: 其一:

分页显示数据----前端(将数据库中的信息分页显示到网页)

在上篇文章中,我们已经完成了分页显示的后台处理,现在进行前端的处理. 期望显示结果: 由于对于不同的项目.不同的数据库数据部分不同,所以我们将分页部分提取出来,单独建立jsp页面: 1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <%@ taglib prefix="c"

利用管道在SQL中实现查询分页显示和筛选

分页显示: [[email protected] ~]$ echo "desc dbms_sqltune"|sqlplus / as sysdba | more SQL*Plus: Release 11.2.0.4.0 Production on Sat Sep 24 13:04:17 2016 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterpr

python之分页显示内容

要求:分页显示101条数据,每页仅显示10条数据 user_data=[] for i in range(1,102): dic={'username':'Lucy'+str(i),'email':'lucy'+str(i)+'@163.com','passwd':'cmd'+str(i)} user_data.append(dic) # 每页仅显示10条数据 # 第一页:从0-10      1页 # 第二页:从10-20    2页 # 第三页:从20-30    3页 # ........

JSP分页显示实例(基于Bootstrap)

首先介绍一款简单利落的分页利器:bootstrap-paginator 效果截图: GitHub官方下载地址:https://github.com/lyonlai/bootstrap-paginator 备用下载地址:http://files.cnblogs.com/files/Dreamer-1/bootstrap-paginator-master.rar 下面就来详细介绍一下基于这款分页利器的JSP分页显示实现过程(注:相较于原网页我隐去了很多不必要的内容,本例只专注于分页显示的实现) 一:

所有浏览器打开后自动打开115.29.163.152/404.html这个网页,然后自动跳转到hao123 解决办法

这几天,电脑所有浏览器打开后自动打开115.29.163.152/404.html这个网页,然后自动跳转到hao123这个网页,网上查询没解决办法.开始自己找,搜索注册表,都无效,最后下载软件HijackThis(HijackThis是一款英文免费软件,由荷兰的一名学生merijn开发.提供其利用业余时间开发的软件供大家下载.HijackThis能够扫描注册表和硬盘上的特定文件,找到一些恶意程序“劫持”浏览器的入口.但要提醒大家注意的是,这些内容也可能正由正常的程序在使用,所以不能草率处理,必须