• json实现jsp分页


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

    在不需要添加jar的前提下,能够很好完成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>
  • 相关阅读:
    HDU 1505 City Game
    HDU 1506 Largest Rectangle in a Histogram
    HDU 1838 Chessboard
    HDU 2512 一卡通大冒险
    HDU 1081 To The Max
    HDU 2845 Beans
    HDU 1422 重温世界杯
    HDU 1231 最大连续子序列
    第6章 接口和实现
    java面向抽象编程样例
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3042284.html
Copyright © 2020-2023  润新知