`
y8820960
  • 浏览: 116366 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

ajax+jquery+json分页demo

 
阅读更多

实体类:Book.java

package com.model;

import java.util.Date;

public class Book {
	
	private int id;
	private String name;
	private Date publish_time;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getPublish_time() {
		return publish_time;
	}
	public void setPublish_time(Date publish_time) {
		this.publish_time = publish_time;
	}

}


BookDao.java
package com.model;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class BookDao {
	
	public ArrayList<Book> FindBookByPage(Page page) throws SQLException{
	// MySQL select *from t_book limit currentRecord , pageSize
		
		ArrayList<Book> bookls=new ArrayList<Book>();
		Connection con=null;
		PreparedStatement st=null;
		ResultSet rs=null;
		
	     try{
	    	 
	    	 con = JdbcUtils.getConnection();
			    st = con.prepareStatement("select *from t_book limit ?,?");
			    
			    st.setInt(1, page.getCurrentRecord());
			    st.setInt(2, page.getPageSize());
			    rs = st.executeQuery();
			    
			    while(rs.next()){
			    	Book book = new Book();
			    	book.setId(rs.getInt("id"));
			    	book.setName(rs.getString("name"));
			    	book.setPublish_time(rs.getTimestamp("publishtime"));
			    	
			    	bookls.add(book);
			    }
	    	 
	     }finally{
	    	  JdbcUtils.close(rs,st,con);
	     }
		   
	
	
		return bookls;
	}
	
	public int getBookNum() throws SQLException{
		Connection con=null;
		PreparedStatement st=null;
		ResultSet rs=null;
		 int num =0;
		
		try {
		    con = JdbcUtils.getConnection();
		    st = con.prepareStatement("select count(*) from t_book");
		    rs = st.executeQuery();
		    
		    if(rs.next())
	            num = rs.getInt(1);
		    
		    JdbcUtils.close(rs,st,con);
			
		}finally  {
			  JdbcUtils.close(rs,st,con);
		}
		
		return num;
	}
  

}
 

 BookDTO.java

package com.model;


public class BookDTO {
	
	private int id;
	private String name;
	private String str_publish_time;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getStr_publish_time() {
		return str_publish_time;
	}
	public void setStr_publish_time(String str_publish_time) {
		this.str_publish_time = str_publish_time;
	}

}
 

JdbcUtils.java

package com.model;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public final class JdbcUtils {
	private static String url = "jdbc:mysql://localhost:3306/books";
	private static String user = "root";
	private static String password = "root";

	private JdbcUtils() {
	}

	static {
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			throw new ExceptionInInitializerError(e);
		}
	}

	public static Connection getConnection() throws SQLException {
		return DriverManager.getConnection(url, user, password);
	}

	public static void close(ResultSet rs, PreparedStatement st, Connection conn) {
		try {
			if (rs != null)
				rs.close();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (st != null)
					st.close();
			} catch (SQLException e) {
				e.printStackTrace();
			} finally {
				if (conn != null)
					try {
						conn.close();
					} catch (SQLException e) {
						//todo log4j
						e.printStackTrace();
					}
			}
		}
	}
}

 Page.java

package com.model;

/*
 * 这个Page 可以对所有的 实体进行分页显示
 * 
 * curuentPage--->currentRecord 
 * 
 * 
 */
public class Page {
    private int totalRecord;//总的记录条数
    private int totalPage;//总页数
    
    private int currentPage=1;//当前页数
    
    private int currentRecord;//当前记录的条数
    
    private int pageSize=3 ;//每页显示的记录数量,这里默认每页显示6条
     
    
  // MySQL select *from t_book limit currentRecord , pageSize
   
    public int getCurrentPage() {
        return currentPage;
    }
    public void setCurrentPage(int currentPage ) {
       this.currentPage = currentPage;
    }
    public int getTotalPage() {
        return totalPage;
    }
    public void setTotalPage(int totalRecord,int pageSize) {
        //如果总记录数除以每页显示条数可以整除,商就是总页码
        if(totalRecord%pageSize == 0) 
        {
            totalPage = totalRecord/pageSize;
        }else
        {
           //如果总记录数除以每页显示条数不能整除,商加1才是总页码
            totalPage = totalRecord/pageSize+1;
        }
    }
    public int getCurrentRecord() {
        return currentRecord;
    }
    public void setCurrentRecord(int currentPage,int pageSize) {
        //该页的  第一条记录 =( 当前页号-1)*pageSize;  页号从0开始编制
        this.currentRecord = (currentPage-1 )*pageSize;
    }
    public int getPageSize() {
        return pageSize;
    }
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
    
    public int getTotalRecord() {
        
        return totalRecord;
    }
    public void setTotalRecord(int totalRecord) {
        this.totalRecord = totalRecord;
    }
    
}

 =============servlet================

Book_ShowServlet.java

package com.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONSerializer;



import com.model.Book;
import com.model.BookDTO;
import com.model.BookDao;
import com.model.Page;


@SuppressWarnings("serial")
public class Book_ShowServlet extends HttpServlet {


    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

       doPost(request,response);
    }

    
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
             {
        response.setContentType("text/html");
   
        BookDao dao=new BookDao();
        Page page=new Page();
        try {
            page.setTotalRecord(dao.getBookNum());
            page.setCurrentPage(1);
            page.setPageSize(6);
            page.setTotalPage(page.getTotalRecord(), page.getPageSize());
            page.setCurrentRecord(page.getCurrentPage(), page.getPageSize());
        } catch (SQLException e1) {
            // TODO Auto-generated catch block
            
            e1.printStackTrace();
            
        }
        String pageindex=request.getParameter("pagehash"); 
        if(pageindex!=null){
            int targetpage = Integer.parseInt(pageindex);
            if(targetpage>=1&&targetpage<=page.getTotalPage()){
                
                page.setCurrentPage(targetpage);
                page.setCurrentRecord(page.getCurrentPage(), page.getPageSize());
                
            }
            
        }
        
        ArrayList<Book> books = null;
        try {
            books = dao.FindBookByPage(page);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        ArrayList<BookDTO> bookdtos = BookToBookDTO(books);
        
        String doc = JSONSerializer.toJSON(bookdtos).toString();

        System.out.println("传送JSION"+doc);
    
        PrintWriter out = response.getWriter();
        out.print(doc);     
        
    }


    private ArrayList<BookDTO> BookToBookDTO(ArrayList<Book> books) {
        //把books 输出成xml文档
        //String doc = JSONUtils.valueToString(books);
        //books---->booksDTO
        ArrayList<BookDTO> bookdtos = new ArrayList<BookDTO>();
        for(int i=0;i<books.size();i++){
            
            BookDTO dto =new BookDTO();
            dto.setId(books.get(i).getId());
            dto.setName(books.get(i).getName());
            dto.setStr_publish_time(books.get(i).getPublish_time().toString());
            
            bookdtos.add(dto);
            
        }
        return bookdtos;
    }

}
 

LoginServlet.java

package com.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.util.regex.Pattern;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet
{
    
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
    {
        
        this.doPost(request, response);
        
    }
    
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
    {
        
        response.setContentType("text/html");
        //response.setCharacterEncoding("gb2312");
        
        PrintWriter out = response.getWriter();
        
        String type = request.getParameter("type");
        
        if (type != null)
        {
            String isoname = request.getParameter("name");
            //  String name=new String(isoname.getBytes("iso8859-1"),"UTF-8");
            String name = URLDecoder.decode(isoname, "UTF-8");
            
            String password = request.getParameter("password");
            if ("ajaxcheck".equals(type))
            {
                
                if (!name.equals("yzy"))
                    out.print("username  " + name + "  is not exgist");
            }
            if ("submit".equals(type))
            {
                
                //通过正则表达式 对密码进行验证
                String errorMsg = "";
                if (!Pattern.compile("^[0-9a-zA-Z\u4e00-\u9fa5]+$")
                        .matcher(password)
                        .matches())
                {
                    errorMsg = "密码必须由数字字母组成";
                    response.sendRedirect("index.jsp?errorMsg=" + errorMsg);
                    
                }
                else
                {
                    if (name.equals("yzy") && password.equals("123"))
                        response.sendRedirect("show.jsp");
                    else
                    {
                        errorMsg = "用户名或密码错误";
                        response.sendRedirect("index.jsp?errorMsg=" + errorMsg);
                    }
                    
                }
                
            }
            
        }
        
    }
    
}

 ================jsp===

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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 'index.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">
		<script type="text/javascript" src="jquery-1.4.2.min.js"></script>

		<script>
		$(function(){
		   
		    $("#name").blur(function(){
		     
		        var name=$("#name").val();
		 //  var name=encodeURI($("#name").val());
		 //    var name=encodeURI(encodeURI($("#name").val()));
		        
		        
		      
		     //   if(isChinaOrNumbOrLett(name))
		           $.post("LoginServlet",{ type:"ajaxcheck",name:name},function(data){$("#namecheck").text(data);} )
		    //    else 
		    //       alert("用户名必须由汉字、字母、数字组成 ");
		    });
		
	      
		});
		
		/* 
			用途:检查输入字符串是否只由汉字、字母、数字组成 
			输入: 
			value:字符串 
			返回: 
			如果通过验证返回true,否则返回false 
			*/ 
			function isChinaOrNumbOrLett(s) {//判断是否是汉字、字母、数字组成 
				var regu = "^[0-9a-zA-Z\u4e00-\u9fa5]+$"; 
				
				var re = new RegExp(regu); 
				
				if (re.test(s)) { 
				return true; 
				} else { 
				return false; 
				} 
			} 

		
	</script>
	</head>

	<body>
		<center>
			欢迎登陆FaceBook
			<form action="LoginServlet?type=submit" method="post">

				用户名;
				<input type="text" name="name" id="name" />
				<div id="namecheck"></div>


				密 码:
				<input type="password" name="password" />
				<div id="passwordcheck"></div>
				<%
               String msg = request.getParameter("errorMsg");
               if(msg!=null){
                      out.println(msg);   
               }         
           %>

				<input type="submit" value="提交" />

			</form>
			<a href="/show.jsp"> aaa</a>

		</center>

	</body>
</html>

 show.jsp

<%@ page language="java" import="java.util.*,com.model.*" pageEncoding="gb2312"%>
<%
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 'pageInfo.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">
	<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
	<STYLE>
		A:hover { color:red; text-transform:uppercase; letter-spacing:1cm }
    </STYLE>
	 <script>
	 	var loadFinish = function(data)
	 	{
	 		var bookinfo = "";
	 		var books = $.parseJSON(data);
	 		for(var i=0;i<books.length;i++)
	 		{
	 			var book = books[i];
	 		
	 			bookinfo = bookinfo+ book.id + book.name+book.str_publish_time +"<br/> " ;
	 			
	 		}
	 		$("#list").html(bookinfo);
	 	}
		$(function(){
		
		    //设置 超链接不可以使用
			//$("a").css({disabled:disabled});
			
		    var hash = document.location.hash;
		    //如果不含有# 说明是第一次来的这个页面
		    if(!hash){showBooksInfo(1);}
		    $("#first").click(function(){ showBooksInfo(1);});
            $("#next").click(function(){ showBooksInfo(parseInt( document.location.hash.split("#")[1])+1);});
		    
			$("#previous").click(function(){ showBooksInfo(parseInt( document.location.hash.split("#")[1])-1);});
		    
			} );
			function showBooksInfo(int_pagehash)
			{   //设置地址栏hash
			      
			      document.location.hash = int_pagehash;
			   
			     $.post("Book_ShowServlet",{pagehash:int_pagehash},loadFinish);
			     
			}
			
		 
	</script>
	
  </head>
  
  <body>
    <div id="list">
    
    </div>
    
    <table>
        <tr>
           <td><a id="first" href="javascript:void(0)" >首页</a></td>
           <td><a id="next" href="javascript:void(0)">下一页   </a></td>
           <td><a id="previous" href="javascript:void(0)">上一页   </a></td>
        </tr>
    </table>
     
  </body>
</html>

 ======jar===

json-lib-2.1.jar

ezorph-1.0.3.jar

jstl-1.2.jar

commons-beanutils-1.7.0.jar

commons-collections-3.2.jar

commons-lang-2.3.jar

commons-logging-1.0.4.jar

commons-logging-api-1.1.jar

standard.jar

 

 

分享到:
评论
2 楼 w-mamba 2015-01-20  
适合初学者学习,蛮好…
1 楼 Franciswmf 2013-06-27  
看着不错

相关推荐

    php+jquery+ajax最简单例子

    3. Ajax(Asynchronous JavaScript and XML):虽然名字中包含XML,但现在的Ajax更多的是处理JSON格式的数据。它允许网页在不刷新整个页面的情况下,通过JavaScript向服务器发送异步请求,获取并更新部分页面内容,...

    Struts2+Spring+Hibernate+Ehcache+AJAX+JQuery+Oracle 框架集成用户登录注册Demo工程

    3.Ajax无刷新异步调用Struts2,返回Json数据,以用户注册为例。 4.在服务端分页查询功能,优点:实时性:跳页才查询。数据量小:只加载当前页的记录进行显示。 5.单数据源配置(兼容Tomcat和Weblogic)。 6.Hibernate...

    SpringMVC+MyBatis+EasyUI简单分页Demo

    在本项目"SpringMVC+MyBatis+EasyUI简单分页Demo"中,我们将探讨如何结合这三种技术实现一个具备基本分页功能的Web应用。SpringMVC是Spring框架的一部分,负责处理HTTP请求和响应;MyBatis是一个轻量级的持久层框架...

    ajax分页demo

    在“ajax分页demo”这个项目中,我们可以通过将压缩包“ajaxpage”解压并放入Tomcat服务器的webapps目录下,然后启动服务器来运行示例。访问http://localhost:8080/ajaxpage/,可以看到一个动态加载分页效果的实例。...

    PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用

    &lt;h4&gt;Demo 3: Php+jQuery实现AJAX 分页效果 &lt;div id="pagetxt"&gt;&lt;/div&gt; &lt;div id="demo"&gt; ``` 2. **PHP处理**:在index.php中,通过PHP获取并显示初始的5篇文章,同时计算总页数并传给jPaginate的`count`属性。 ...

    Ajax_Jquery_Demo

    "Ajax_Jquery_Demo"这个压缩包文件提供了学习和实践这两个技术的机会。下面,我们将深入探讨Ajax和jQuery的核心概念、用法及其在Web开发中的应用。 ### Ajax Ajax的核心理念是局部刷新,它通过XMLHttpRequest对象...

    AJAXjson分页

    本DEMO主要展示了如何使用AJAX结合JSON格式的数据实现前端分页。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以易于阅读和编写的形式,同时对人和机器都非常友好。在前后端分离的架构中,JSON...

    jQuery实现分页功能(含ajax请求、后台数据、附完整demo)

    本文介绍的知识点涵盖了jQuery实现分页功能的多个方面,从AJAX请求的发送、模拟后台数据、分页逻辑的实现到代码的具体参数说明,以及实现过程中可能遇到的优缺点分析。通过示例代码和详细的分析,可以帮助开发者更好...

    jQuery json带分页的动态数据表格代码.zip

    这个压缩包"jQuery json带分页的动态数据表格代码.zip"包含了一个简单的JavaScript实现,它演示了如何从JSON文件中获取数据并将其显示在一个交互式的表格中。下面我们将详细探讨这一技术。 首先,jQuery是一个广泛...

    jquery_pagination分页demo

    "jQuery_pagination分页demo"是一个用于实现网页分页功能的示例项目,它基于JavaScript库jQuery,提供了高效且易于使用的分页功能。这个demo包括了首页、末页以及跳转到指定页数的功能,同时还包含了处理分页逻辑的...

    bootstrap和jQuery做带分页跳转的表格实例

    本实例主要展示了如何使用 Bootstrap 和 jQuery 创建一个带有分页跳转功能的表格,这在数据展示和管理中非常常见。我们将讨论以下几个关键知识点: 1. **Bootstrap**:Bootstrap 是一个流行的开源 CSS 框架,它提供...

    JqueryAPI +easyUI+demo

    在 "JqueryAPI +easyUI+demo" 中,你可能找到使用jQuery和EasyUI开发的实例,如创建响应式的表格,使用动画效果,以及实现与服务器的交互。这些示例可以帮助你更好地理解如何将这两个库结合使用,以构建功能丰富的...

    dt+ztree+ajax的DEMO

    【dt+ztree+ajax的DEMO】是一个整合了Datatables、ZTree和Ajax技术的示例项目,旨在实现用户在ZTree中进行交互时,通过Ajax异步加载数据到Datatables表格中的功能。这个DEMO展示了如何将这三者有效地结合,以提供一...

    Ajax的jquery与后台交互

    例如,使用Ajax加载分页数据、实时聊天、无刷新搜索结果等。 综上所述,jQuery通过其易用的Ajax接口,使得与后台的交互变得更加简单,提高了Web应用的响应速度和用户体验。通过熟练掌握这些知识点,开发者可以构建...

    ajax动态分页的DEMO

    在这个“ajax动态分页的DEMO”中,我们将深入探讨如何结合Ajax、JavaScript和MySQL数据库实现这一功能。 ### 1. Ajax基础 Ajax(Asynchronous JavaScript and XML)是一种在不刷新整个页面的情况下与服务器交换...

    PHP+Ajax实现的无刷新分页功能详解【附demo源码下载】

    在本文中,我们将深入探讨如何使用PHP和Ajax技术实现无刷新分页功能。无刷新分页是一种提升用户体验的方法,它允许用户在不重新加载整个页面的情况下浏览多页内容,从而减少等待时间,提高互动性。 首先,理解无...

    Ajax分页 Asp.net 分页

    在Asp.net中,我们可以使用多种方式实现Ajax分页,如jQuery的Ajax功能、ASP.NET AJAX Control Toolkit中的Paging控件,或者自定义Ajax分页组件。这里我们将主要讨论使用jQuery Ajax和Asp.net MVC或Web Forms的方式。...

    jQuery+ajax实现动态添加表格tr td功能示例

    - **jQuery表格(table)操作技巧汇总**:学习如何使用jQuery对表格进行各种操作,比如排序、筛选、分页等。 - **jQuery操作json数据技巧汇总**:掌握如何在jQuery中有效地操作JSON数据,包括解析JSON、生成JSON等。 -...

    ajax使用简单demo

    - **浏览器兼容性**:不同浏览器对XMLHttpRequest的支持程度不同,需要使用polyfill(如jQuery的$.ajax)来确保兼容性。 - **缓存控制**:默认情况下,GET请求会被浏览器缓存,可以通过设置请求头禁用缓存。 - **...

    jquery分页无刷新分页

    `dataSource`参数可以是一个URL,jQuery会使用Ajax发送GET请求获取分页数据。 2. **动态渲染**:接收到服务器返回的数据后,我们需要根据当前页码和每页大小,计算出应该显示的数据范围,然后将这部分数据显示在...

Global site tag (gtag.js) - Google Analytics