前台实现分页,简单明了,一看就懂
来源:互联网 发布:用php九九乘法表 编辑:程序博客网 时间:2024/05/16 17:20
学习笔记——前台页面实现分页
一.首先,写出Person类,这里就只定义四个属性:id,姓名,年龄,性别。:
public class Person implements Serializable{/** * */private static final long serialVersionUID = 1L;private Integer id;private String name;private Integer age;private String gender;public Person() {super();}public Person(Integer id, String name, Integer age, String gender) {super();this.id = id;this.name = name;this.age = age;this.gender = gender;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}}
</pre></div><div><div><pre name="code" class="java">public class PersonService implements PersonServiceDao{ApplicationContext appCtx=new ClassPathXmlApplicationContext("applicationContext.xml");//获取applicationContext里的hibernateTemplateprivate HibernateTemplate hibernateTemplate; public void setHibernateTemplate(HibernateTemplate hibernateTemplate){this.hibernateTemplate=hibernateTemplate;}/** * page表示要查询的页面,rows表示一页能显示多少条记录 * 这里是分页查询,使用回调方法,获取query,并且截取片段, * 得到的list就是需要返回的结果 */@Overridepublic List<Person> getPerson(final int page,final int rows) {List<Person> list=new ArrayList<Person>();list=hibernateTemplate.execute(new HibernateCallback(){@Overridepublic Object doInHibernate(Session session) throws HibernateException {Query query=session.createQuery("from Person");query.setFirstResult((page-1)*rows);query.setMaxResults(rows);List<Person> queryList=query.list();return queryList;}});return list;}//根据rows来获取一共多少页面@Overridepublic int getTotalPage(int rows) {List<Person> list=(List<Person>) hibernateTemplate.find("from Person");int page=list.size()%rows==0?list.size()/rows:list.size()/rows+1;return page;}}下面写页面层show.jsp
<script type="text/javascript" src="${pageContext.request.contextPath }/jquery-1.11.3.min.js"></script> <script type="text/javascript"> var currentPage=0; //首先,设置一个全局变量,表示当前页面,初始化为0, //下面这个方法,是页面打开时就执行的方法,显示的为第一页的数据 //currentPage要先加一,然后用post方法,数据类型为json,这个用struts2很容易,配置即可 //post方法说明: //第一个参数表示url,这里写的是一个action, //第二个参数是需要从页面传给后台的数据, //注意,page参数在后台一定要有一个与之对应的参数,也叫做page,后台的page就会获得currentPage //第三个参数是一个方法,后台程序执行结束,并且成功返回,那么就会调用它,data就是获取的数据 //我们使用的是list装数据,将数据放入table容器即可,放之前要先将容器置空。 //第四个参数是返回值的类型,我们用的是“json”。 $(function(){ currentPage++; $.post("show.action",{page:currentPage},function(data){ $("#show").empty(); for(var i=0;i<data.list.length;i++){$("#show").append("<tr><td>"+data.list[i].id+"</td><td>"+data.list[i].name+"</td><td>"+data.list[i].age+"</td><td>"+data.list[i].gender+"</td></tr>");} },"json") }) //这个方法是单击上一页按钮时会调用的方法 //currentPage减一,如果减一之后小于1,说明当前页面是首页, //那么就会再让它加一变成1,获取第一页数据, //如果currentPage减一之后不小于1,那么就直接执行下去即可。 //这里虽然绕了一点,但是不难,容易理解。 var previous=function(){ currentPage--; if(currentPage<1){ currentPage++; $.post("show.action",{page:currentPage},function(data){ $("#show").empty(); for(var i=0;i<data.list.length;i++){ $("#show").append("<tr><td>" +data.list[i].id +"</td><td>" +data.list[i].name +"</td><td>" +data.list[i].age +"</td><td>" +data.list[i].gender +"</td></tr>"); } },"json") } else{ $.post("show.action",{page:currentPage},function(data){ $("#show").empty(); for(var i=0;i<data.list.length;i++){ $("#show").append("<tr><td>" +data.list[i].id +"</td><td>" +data.list[i].name +"</td><td>" +data.list[i].age +"</td><td>" +data.list[i].gender +"</td></tr>"); } },"json"); } }; //这个方法是单击下一页按钮后调用的方法,这里也会做一个判断, //如果返回的list的长度为0,说明查询到的数据已经超过最后一页,也就是说到达最后一页, //又单击了一次下一页,如果不判断,直接填充,那就是空,什么都不显示,所以这里要判断一下 //如果list长度不为0,直接填充即可。 var next=function(){ currentPage++; $.post("show.action",{page:currentPage},function(data){ if(data.list.length==0){ currentPage--; $.post("show.action",{page:currentPage},function(data){ $("#show").empty(); for(var i=0;i<data.list.length;i++){ $("#show").append("<tr><td>" +data.list[i].id +"</td><td>" +data.list[i].name +"</td><td>" +data.list[i].age +"</td><td>" +data.list[i].gender +"</td></tr>"); } },"json") } else{ $("#show").empty(); for(var i=0;i<data.list.length;i++){ $("#show").append("<tr><td>" +data.list[i].id +"</td><td>" +data.list[i].name +"</td><td>" +data.list[i].age +"</td><td>" +data.list[i].gender +"</td></tr>"); } } },"json"); }; //这个方法是单击尾页按钮时调用的方法, //调用last.action,该action具体的代码在后面,返回成功后会获取最后一个页面的页面值, //将页面值传给currentPage,如果这里不传值,那么currentPage会停留在点击下一页时的那一页, //当再次点击上一页或者下一页时,就会出现问题 var last=function(){ $.post("last.action",function(data){ currentPage=data.lastPage; $("#show").empty();for(var i=0;i<data.list.length;i++){$("#show").append("<tr><td>"+data.list[i].id+"</td><td>"+data.list[i].name+"</td><td>"+data.list[i].age+"</td><td>"+data.list[i].gender+"</td></tr>");} },"json") } //这个方法是单击首页按钮时调用的方法, //这里的lastPage和前面那个方法的lastPage是一个参数, //但是在两个方法里面的值不是一样的,这里是表示首页页面值,也就是1 //意思不是字面表达的"last",不要混淆 var first=function(){ $.post("first.action",function(data){ currentPage=data.lastPage; $("#show").empty();for(var i=0;i<data.list.length;i++){$("#show").append("<tr><td>"+data.list[i].id+"</td><td>"+data.list[i].name+"</td><td>"+data.list[i].age+"</td><td>"+data.list[i].gender+"</td></tr>");} },"json") } </script>
<span style="white-space:pre"></span><table width="500" border="1"> <tr><th>id</th><th>name</th><th>age</th><th>gender</th></tr> <tbody id="show"></tbody> </table> <input type="button" onclick="first()" value="首页"/> <input type="button" onclick="previous()" value="上一页"/> <input type="button" onclick="next()" value="下一页"/> <input type="button" onclick="last()" value="尾页"/>
下面写后台action
public class ShowAction extends ActionSupport {/** * */private static final long serialVersionUID = 1L;ApplicationContext appCtx=new ClassPathXmlApplicationContext("applicationContext.xml");PersonService personService=appCtx.getBean("personService",PersonService.class);private List<Person> list; //查询后的结果用这个list装private int page; //当前页面,要与jsp里面的参数拼写一样private static int rows=5; //一个页面所展示的记录数量private int lastPage; //最后一页的页面值,或者首页值(1)//提供setter和getterpublic List<Person> getList() {return list;}public void setList(List<Person> list) {this.list = list;}public int getPage() {return page;}public void setPage(int page) {this.page = page;}public int getLastPage() {return lastPage;}public void setLastPage(int lastPage) {this.lastPage = lastPage;}//无论是上一页还是下一页,都是用的这个方法public String sendList(){list=personService.getPerson(page, rows);setList(list);return SUCCESS;}//查看最后一页,用这个方法public String last(){lastPage=personService.getTotalPage(rows); //获取最后一个页面的页面值list=personService.getPerson(lastPage, rows);setLastPage(lastPage); //将其放入valuestack,然后在页面层将其赋值给currentPagesetList(list);return SUCCESS;}//查看首页,用这个方法public String first(){lastPage=1;list=personService.getPerson(lastPage, rows);setLastPage(lastPage); //将其放入valuestack,然后在页面层将其赋值给currentPagesetList(list);return SUCCESS;}}
<struts><package name="struts" extends="json-default"><action name="show" class="com.trace.page.action.ShowAction" method="sendList"><result type="json"></result></action><action name="last" class="com.trace.page.action.ShowAction" method="last"><result type="json"></result></action><action name="first" class="com.trace.page.action.ShowAction" method="first"><result type="json"></result></action></package></struts>试验结果:
在数据库插入记录,然后查询,结果如下:
1.打开页面时效果如下:
2.点击下一页,可以一直点到最后一页:
3.点击首页:
4.点击尾页:
5.点击上一页,可以一直点到第一页:
以上。
欢迎各位前辈指教!
1 0
- 前台实现分页,简单明了,一看就懂
- linux ubuntu SVN improt 项目 简单明了 一看就懂
- 一看就会,一看就懂,快速上手Git
- Axis WebService 一看就懂
- jQuery入门,一看就懂
- 前台实现分页效果
- jsp分页(一看就明白的,适合初学者)
- comet 方法大集合 一看就懂
- 区别Intent和PendingIntent 一看就懂
- Android Handler类 一看就懂
- SVN入门必备教程 一看就懂
- Android Menu 菜单用法 一看就懂
- Timer 的 schedule()方法 一看就懂
- js 正则表达式一看就懂
- 一看就懂的iOS触摸事件
- 详细讲解transform,一看就懂了!
- 一看就懂的ReactJs入门教程-精华版
- 一看就懂系列之 异步执行
- moko模板官方文档 中文翻译
- extjs创建grid
- 详解JavaScript中的arc的方法
- 注册服务
- 按寻路路径连续移动(方法2)相对完美
- 前台实现分页,简单明了,一看就懂
- 每次开机都要去开启samba,怎么搞
- 选项卡
- AngularJS:何时应该使用Directive、Controller、Service?
- 2013-2015阿里双十一技术网络文章总结
- POSIX的pthread_join http://blog.csdn.net/ba_jie/article/details/6783205
- (转)java读取properties
- Java中的向前引用
- JKS证书获取指纹(SHA1)