模糊查询的分页
模糊查询返回的是一个list列表,若数据庞大时需要进行分页显示。以下案例将介绍数据的分页显示操作。
misty to search.jsp.java
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'list.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript"
src="${pageContext.request.contextPath}/js/jquery-1.6.js">
</script>
<script type="text/javascript">
<!--Jquery的Ajax请求处理-->
function mistyByName(npage){
<!--清空操作-->
$("#susers").empty();
$("#page").empty();
var name=$("#uname").val();
var nowpage;
var countpage;
$.ajax({
type:"post",
url:"csdn/user_mistyByName",
data:"user.name="+name+"&pagination.nowpage="+npage,
dataType:"json",
success:function(data){
nowpage=data.pagination.nowpage;
countpage=data.pagination.countpage;
$.each(data.users,function(i,entity){
<!--创建新行-->
var tr=$("<tr>");
<!--创建新列-->
var td1=$("<td>").text(entity.id);
var td2=$("<td>").text(entity.name);
var td3=$("<td>").text(entity.pass);
var td4=$("<td>").text(entity.rdate);
var td5=$("<td>");
var upbtn=$("<input>").attr("type","button").val("修改").click(function(){
alert("修改的操作");
}).appendTo(td5);
var delbtn=$("<input>").attr("type","button").val("删除").click(function(){
alert("删除的操作");
}).appendTo(td5);
<!—将td添加到tr中-->
tr.append(td1);
tr.append(td2);
tr.append(td3);
tr.append(td4);
tr.append(td5);
tr.appendTo($("#susers"));
});
},
error:function(data){
}
});
<!—分页操作-->
var span1=$("<span>");
var a1=$("<a>").attr("href","javascript:void(0)").text("首页").appendTo(span1).click(function(){
var napage=1;
mistyByName(npage);
});
var span2=$("<span>");
var a2=$("<a>").attr("href","javascript:void(0)").text("上一页").appendTo(span2).click(function(){
var npage = nowpage-1;
if(npage<=1){
npage=1;
}
mistyByName(npage);
});
var span3 =$("<span>");
var a3=$("<a>").attr("href","javascript:void(0)").text("下一页").appendTo(span3).click(function(){
var npage = nowpage+1;
if(npage>=countpage){
npage=countpage;
}
mistyByName(npage);
});
var span4 =$("<span>");
var a4=$("<a>").attr("href","javascript:void(0)").text("末页").appendTo(span4).click(function(){
mistyByName(countpage);
});
<!—将首页、上一页、下一页、末页添加到id=”page”的div中-->
span1.appendTo($("#page"));
span2.appendTo($("#page"));
span3.appendTo($("#page"));
span4.appendTo($("#page"));
}
</script>
</head>
<body>
<div>
<div>
<h1>
根据某个名称实现模糊查询
</h1>
<!-- 是含有|还是以什么开头 -->
<input type="text" name="user.name" id="uname" />
<input type="button" value="模糊查询" onclick="mistyByName(1)" />
</div>
<table>
<thead>
<tr>
<th>
序号
</th>
<th>
用户名
</th>
<th>
密码
</th>
<th>
注册时间
</th>
<th>
操作
</th>
</tr>
</thead>
<tbody id="susers">
</tbody>
</table>
<div id="page">
</div>
</div>
</body>
</html>
解析:该页面执行onclick="mistyByName(1)"事件,将文本框中输入的值以及pagination.nowpage=1通过post方法传到action中。
………….
将通过计算得到的nowpage以及countpage的值在jsp中计算首页上一页下一页末页的操作,每点一次首页 上一页 下一页 末页 都将执行一次function函数。
UserAction.java
public class UserAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
private UserServiceImpl userServiceImpl;
/* 封装分页信息 */
private Pagination pagination;
public UserServiceImpl getUserServiceImpl() {
return userServiceImpl;
}
/* 依赖注入方式 */
public void setUserServiceImpl(UserServiceImpl userServiceImpl) {
this.userServiceImpl = userServiceImpl;
}
public Pagination getPagination() {
return pagination;
}
public void setPagination(Pagination pagination) {
this.pagination = pagination;
}
private List<User> users;
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
/* 模糊查询的分页 */
@SuppressWarnings("unchecked")
public String mistyByName(){
String hql="from User as u where u.name like '%"+user.getName()+"%'";
pagination.getSelectCount(hql, pagination.getNowpage());
users=pagination.getEntities();
return "mistyByName";
}
}
解析:
在action中执行mistyByName()方法,在该方法中根据传来的name值通过user.getName()方法得到传来的值定义一个hql语句,通过pagination.getNowpage()方法获取从页面传来的当前页,将hql语句和当前页信息传到pagination.java类中的getSelectCount()方法中。在此方法中封装分页的所有信息和分页方法。当前页所显示的信息即entities需要通过pagination.getEntities()方法重新获取。执行成功后将根据xml文件返回到相应的页面。
Pagination.java
public class Pagination extends HibernateDaoSupport implements Serializable {
private static final long serialVersionUID = 1L;
/* 封装分页信息 */
/* 当前页 */
private int nowpage;
/* 总页数 */
private int countpage;
/* 总记录数 */
private int countrecord;
/* 当前页信息 */
private List entities;
/* 每页显示的条数 */
private static final int PAGESIZE = 5;
/* 默认无参构造器 */
public Pagination() {
super();
// TODO Auto-generated constructor stub
}
//实现nowpage、countpage、countrecord、entities所对应的set()、get()方法
/* 条件查询获取信息 hql语句是你拼接的sql语句 此语句可以通用 */
public void getSelectCount(final String hql, int nowpage) {
/* 获取总记录数 */
long is =(Long)
getHibernateTemplate().find("select count(*) "+hql).get(0);
countrecord =(int) is;
/* 获取总页数 */
countpage = countrecord % PAGESIZE == 0 ? countrecord / PAGESIZE
: countrecord / PAGESIZE + 1;
/* 计算开始的索引 */
final int startIndex = (nowpage - 1) * PAGESIZE;
/*
* 实现分页的方法 ------>显示出每页的记录信息 setMaxResults()---->每页显示的条数
* setFirstREsult()---->每页显示的记录是从第几条记录开始的
*/
getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
entities = session.createQuery(hql)
.setMaxResults(PAGESIZE).setFirstResult(startIndex)
.list();
return entities;
}
});
}
}
Struts-user.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<package name="dxl" extends="json-default" namespace="/csdn">
<global-results>
<result name="input">/index.jsp</result>
</global-results>
<action name="user_*" class="userAction" method="{1}">
<result name="mistyByName" type="json">
<param name="includeProperties">
pagination\.nowpage,pagination\.countpage, users\[\d+\]\.id, users\[\d+\]\.name, users\[\d+\]\.pass,users\[\d+\]\.rdate
</param>
</result>
</action>
</package>
</struts>
解析:将 从pagination类中得到的nowpage、countpage传回到jsp页面中。
总结:实现分页大概所经路径
jsp---action-----pagination----action----xml----jsp整个过程都有带值传递
分享到:
相关推荐
C# DataGridView分页以及模糊查询实现
使用hibernate实现的分页效果 orm 映射 session 等技能点 带有注释和案例演示 表生成语句
ssh实现模糊查询,分页及增删改查功能,连接Oracle10g数据库,
hbase分页查询实现.pdf
4/26日功能实现,利用ajax异步数据加载实现模糊查询分页的效果
实现无刷新分页、模糊查询, 大大的提高了用户的体验度。。。
jsp分页技术及其对数据库两张表的增删查改和模糊查询
ssh2注解方式实现: 登陆/注册/模糊查询/分页/批量删除/组合查询+最基本的增删改查
可以很好的实现页面的模糊查询+分页,我们在前台实现简单的增删改查,很好的实现页面功能。
此资源包含sql文件,能够实现分页,模糊查询,排序的功能。里面用到,jdbc连接数据库,连接池。从数据库查询到的数据实时显示到前端页面上。
分页 模糊查询 SSH 框架 都是 基于SSH 下简单的 仅供参考
SSH+模糊查询+分页+增删改查
已经实现基本功能,模糊查询不怎么会,希望有学的好的同学可以交流一下 qq:523942966
Spring Boot+MybatisPlus使用JQuery DataTables表格插件展示数据、实现分页和模糊查询等功能
主要为大家详细为大家详细介绍了mybatis实现分页及模糊查询功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
实现至少15个以上条件同时查询,模糊,精确查询并分页
jsp分页功能,对于网页制作者来说,非常方便实用。
典型的事例,采用MVC实现分页的关键代码!
使用SQL语句实现通用分页查询,支持模糊查询等。