`
DXL_xiaoli
  • 浏览: 71838 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

模糊查询分页实现

阅读更多

模糊查询的分页

模糊查询返回的是一个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类中得到的nowpagecountpage传回到jsp页面中。

总结:实现分页大概所经路径

jsp---action-----pagination----action----xml----jsp整个过程都有带值传递

 

3
3
分享到:
评论

相关推荐

    C# DataGridView分页以及模糊查询实现

    首先,让我们了解`DataGridView`的分页实现。在C#中,我们可以使用第三方库如`PagingControl`或者自定义分页逻辑来实现。基本步骤包括: 1. 计算每页显示的数据量(例如,每页10条记录)。 2. 获取当前页的起始索引...

    hibernate 模糊查询 分页

    本篇文章将深入探讨如何使用Hibernate实现模糊查询和分页功能,这对于任何需要处理大量数据的应用程序来说都是至关重要的技能。 首先,让我们了解Hibernate的核心概念。Hibernate是一个开源的JPA(Java Persistence...

    hbase分页查询实现.pdf

    HBase分页查询实现 HBase作为一个NoSQL数据库,具有高性能、高可扩展性和高可靠性等特点,但是在查询方面却存在一些限制,例如不支持分页查询。这就使得开发者需要自己实现分页查询功能。本文将讲解如何使用Java...

    ssh实现模糊查询,分页及增删改查功能

    在这个场景中,我们将深入探讨如何利用SSH框架实现模糊查询、分页以及增删改查(CRUD)功能,并与Oracle 10g数据库进行交互。 **一、SSH框架简介** SSH框架由三个主要部分组成: 1. **Struts2**:这是一个基于MVC...

    ssm框架下模糊查询分页

    总的来说,SSM框架下的模糊查询分页是Java Web开发中的常见需求,涉及了Spring、SpringMVC和MyBatis的协同工作,通过合理设计和实现,可以为用户提供高效、友好的数据浏览体验。学习并掌握这一技术,对于提升开发...

    SSM项目增删改查以及模糊查询与分页

    这个项目涵盖了基本的CRUD操作(创建、读取、更新、删除)以及模糊查询和分页功能,同时结合了Ajax和MySQL数据库,提供了前后端交互和数据存储的解决方案。 1. **Spring框架**:Spring是Java企业级应用的核心框架,...

    Ajax+模糊查询+分页

    本文将深入探讨如何利用Ajax实现无刷新分页和模糊查询功能。 一、Ajax基础 Ajax的核心是JavaScript对象XMLHttpRequest,它允许JavaScript在后台与服务器进行通信。通过创建XMLHttpRequest实例,发送HTTP请求,并...

    分页模糊查询商品

    这里我们将详细探讨这个主题,涵盖分页和模糊查询两个核心概念以及它们在商品查询中的实现。 首先,我们来理解什么是分页。分页是一种数据管理策略,它将大量数据分为多个小部分,每个部分称为一页,以便于用户逐步...

    jsp分页技术及其对数据库两张表的增删查改和模糊查询

    jsp分页技术及其对数据库两张表的增删查改和模糊查询 jsp分页技术是指在Web应用程序中实现对数据库数据的分页展示的技术。分页技术的主要目的是为了提高数据的查询效率和用户体验。jsp分页技术可以与数据库的增删...

    分页、模糊查询

    在IT行业中,分页和模糊查询是常见的数据...总的来说,分页和模糊查询是Web应用中不可或缺的功能,MyBatis和SpringMVC提供了灵活的工具来实现这些功能。通过合理的数据库设计和优化,可以提供高效、流畅的用户体验。

    分页+模糊查询(简单易学)

    在IT行业中,分页和模糊查询是两种非常重要的数据检索技术,尤其在处理大量数据时,它们能够提高用户体验并优化服务器性能。让我们深入探讨这两种技术的细节。 分页是一种显示大量数据的方式,它将结果集分割成较小...

    sqlite可视化控件,仅支持查询(可模糊查询、分页),不可增删

    在.cpp文件中,你可以看到如何连接SQLite数据库,如何执行查询(包括模糊查询)以及如何实现分页显示结果的代码。模糊查询可能通过使用SQL的LIKE操作符实现,而分页可能通过LIMIT和OFFSET子句来控制。 3. **...

    jsp带模糊查询的分页代码

    本示例“jsp带模糊查询的分页代码”将介绍如何使用JSP结合Servlet和MySQL数据库实现一个具有模糊查询功能的分页系统。这个系统允许用户输入关键词,对数据库中的数据进行模糊匹配,并以分页的形式展示搜索结果。 ...

    java代码实现ajax模糊查询分页效果

    在Java编程中,实现基于Ajax的模糊查询分页效果是一项常见的任务,特别是在开发Web应用程序时。Ajax(Asynchronous JavaScript and XML)技术允许我们无需刷新整个页面就能与服务器进行交互,提高用户体验。在这个...

    JDBC+struts1模糊查询分页

    本篇文章将详细探讨如何结合JDBC和Struts1实现模糊查询与分页功能,并涵盖增删改的基本操作。 首先,JDBC是Java语言与各种数据库交互的一套标准API,它允许开发者通过编写Java代码来执行SQL语句,处理结果集,实现...

    ssh2注解实现增删改查分页

    本文将深入探讨如何使用SSH2中的注解来实现登陆/注册功能、模糊查询、分页、批量删除以及组合查询,这些都是Web应用程序中不可或缺的基础功能。 首先,让我们从Spring框架的注解开始。在SSH2中,Spring提供了诸如@...

    web分页加模糊查询实例

    总结,这个实例展示了如何在Web应用中实现模糊查询和分页功能,通过jsp页面接收用户输入,servlet处理查询逻辑,利用MySQL数据库的模糊匹配和分页查询功能。这只是一个基本的示例,实际项目中还需要考虑错误处理、...

    SSH下实现的增删改查分页简单的模糊查询

    本文将深入探讨如何在SSH框架下实现增删改查(CRUD)功能,以及分页和模糊查询的技术细节。 首先,Spring框架是整个应用的中枢,它负责依赖注入(DI)和面向切面编程(AOP),提供了事务管理和其他企业级服务。...

    ssh框架实现登录增删改查和分页怎样实现模糊查询

    在这个主题中,我们将探讨如何在SSH框架下实现登录功能、增删改查操作以及分页和模糊查询。 1. **登录功能实现**: - Struts2作为前端控制器,处理用户的HTTP请求,通过Action类接收登录表单的数据。 - Spring...

    分页,查询,排序,模糊查询(包含数据库文件)

    总的来说,这个资源包提供了一个实战示例,涵盖了数据库操作的基本元素,包括如何使用SQL进行分页查询、模糊查询和排序,以及如何通过JDBC在Java应用中实现这些功能,并与前端进行有效交互。对于初学者或希望深入...

Global site tag (gtag.js) - Google Analytics