json实现jsp分页

 

json 在上篇文章已有详细介绍,json的既简单易懂,又传输迅速。并且能和javascript很好的融为一体。

 

在不需要添加jar的前提下,能够很好完成jsp分页问题。

下面具体介绍分页实例:

json实现jsp分页

效果如图所示,采用jsp+servlet技术

首先:编写一个javaBean             User.java

 

package bean;



public class User {

	private int id;

	private String name;

	private String password;

	private int age;

	public User() {

		super();

	}

	public User(int id, String name, String password, int age) {

		super();

		this.id = id;

		this.name = name;

		this.password = password;

		this.age = age;

	}

	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 getPassword() {

		return password;

	}

	public void setPassword(String password) {

		this.password = password;

	}

	public int getAge() {

		return age;

	}

	public void setAge(int age) {

		this.age = age;

	}

	@Override

	public String toString() {

		 //{'id':1,'name':'zhangsan','password':'123','age':1}

		return "{'id':"+id+",'name':'"+name+"','password':'"+password+"','age':"+age+"}";

	}

	

}

这里需要注意的 就是 toString的方法的改变

然后:我们来编写它的control 层和Dao层

为了简化代码,便于取值,数据库暂写为一个集合大笑 

可以看到,

1.service 接收request请求 得到页面所要展示当前页(为第page页)

2.创建一个字符串,向内依次添加 从数据库DB 得到的user,并将所有数据封装

[{},{},{}]

 

3.将此字符串 返回到请求页面

 

package servlet;



import java.io.IOException;

import java.io.PrintWriter;

import java.util.LinkedList;

import java.util.List;



import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;



import bean.User;



public class Paging extends HttpServlet {

	public static final int PER_PAGE = 3;

	@Override

	protected void service(HttpServletRequest request, HttpServletResponse response)

			throws ServletException, IOException {

		//分页     数据源    当前得到第几页的记录    每页显示多少条

		int page = Integer.parseInt(request.getParameter("page"));

		// page = 1   i = 0

		//page = 2 3

		int length = 0;//记录当前拿了多少条

		StringBuffer sb = new StringBuffer();

		sb.append("[");

		//[{},{},{}]

		String message = null;

		if(page >= 1 && page <= 3){

			for (int i = (page-1)*PER_PAGE; i < DB.list.size()&&length < PER_PAGE; i++) {

				User u = DB.list.get(i);

				 sb.append(u.toString()+",");

				length++;

			}

			if(length > 0){

				message = sb.substring(0, sb.length()-1)+"]";

			}else{

				message = sb.toString()+"]";

			}

		}else{

			response.setContentType("text/html;charset=utf-8");

			response.getWriter().println("捣乱");

			return;

		}

		response.setContentType("text/html;charset=utf-8");

		response.getWriter().println(message);

	}

}

class DB{

	public static List<User> list = new LinkedList<User>();

	static{

		list.add(new User(1,"zhangsan","zs",34));

		list.add(new User(2,"lisi","ls",34));

		list.add(new User(3,"a","h",34));

		list.add(new User(4,"b","d",34));

		list.add(new User(5,"c","g",34));

		list.add(new User(6,"d","a",34));

		list.add(new User(7,"e","d",34));

		list.add(new User(8,"f","e",34));

		list.add(new User(9,"g","a",34));

	}

}


之后 :jsp的填写,通过ajax异步提交page,然后得到相应的字符串

 

 

   var mgs = xmlHttpRequest.responseText;

	    var persons = mgs.evalJSON();

将json数据解析 并添加到显示的区域

 

 

<%@ 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 'regist.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="js/prototype1.6.js"></script>

	<script type="text/javascript" src="js/jquery-1.4.4.js"></script>

	<script type="text/javascript">

	 var paging = 0;

	 // 

	 function page(p){

	    /*if(p == 'next' && paging < 3){

	      paging ++;

	    }else if(p == 'last' && paging > 1) {

	      paging --;

	    }else{

	     alert('错误');

	    }*/

	    if(p == 'next' && paging < 3){

	      paging ++;

	      if(paging > 1){

	      	$(":button:eq(0)").removeAttr('disabled');

	      }

	      if(paging == 3){

	        $(":button:eq(1)").attr('disabled','disabled');

	      }

	     }else if(p == 'last' && paging > 1){

	     	paging --;

	     	$(":button:eq(1)").removeAttr('disabled');

	     	if(paging == 1){

	     	 $(":button:eq(0)").attr('disabled','disabled');

	     	}

	     }

	    createXmlHttpRequest();

	    xmlHttpRequest.onreadystatechange=back;

	    var url = encodeURI("/json_page/Paging?page="+paging);

	    xmlHttpRequest.open("GET",url,true);

	    xmlHttpRequest.send(null);

	 }

	 //假设名字为xmlHttpRequest

	 function createXmlHttpRequest(){

	   if(window.ActiveXObject){

	     xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");

	   }else{

	    xmlHttpRequest = new XmlHttpRequest();

	   }

	 }

	 //回调函数

	 function back(){

	   if( xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200){

	     var mgs = xmlHttpRequest.responseText;

	    var persons = mgs.evalJSON();

	    //alert(mgs);

	    $("table").empty();

	    $("table").append( $("<tr><td>id</td><td>用户名</td><td>密码</td><td>age</td></tr>"));

	    for(var i = 0 ; i < persons.length;i++){

	     var person = persons[i];

	     var $tr = $("<tr><td>"+person.id+"</td><td>"+person.name+"</td><td>"+person.password+"</td><td>"+person.age+"</td></tr>");

	     $("table").append($tr);

	    }

	   }

	 }

	</script>

  </head>

  <body>

   <input type="button" disabled="disabled" value="上一页" onclick="page('last');"/><input type="button" value="下一页" onclick = "page('next');"/>

    <table>

     <tr><td>id</td><td>用户名</td><td>密码</td><td>age</td></tr>

    </table>

  </body>

</html>


另外:要有这两个js哦

<script type="text/javascript" src="js/prototype1.6.js"></script>

<script type="text/javascript" src="js/jquery-1.4.4.js"></script>

 

你可能感兴趣的:(json)