Strust2 + JSON + jquery 分页表格显示数据

有了之前几篇文章关于Strus2+json结合的基础,自己也尝试着写分页表格显示数据的代码。也不枉花了些时间,终于搞定了,“纸上得来终觉浅,觉知此事要躬行”,哈哈,不多说,具体如下:

1. 前端页面 --- html代码+css代码+js代码

html代码:

  <body class="body">
  	<table class="tab">
  		<tr class="tr_0">
  			<td class="td_1">序号</td>
  			<td class="td_2">名称</td>
  			<td class="td_3">症状</td>
  			<td class="td_4">病因</td>
  			<td class="td_5">防治措施</td>
  		</tr>
  	</table>
 	<div class="pageBtn">
    	第<span class="currentPage"> </span>页,共<span class="totalPage"></span>页
    	<span id="firstPage" class="pageClick">首页</span>
    	<span id="prev" class="pageClick">上一页</span>
    	<span id="next" class="pageClick">下一页</span>
    	<span id="lastPage" class="pageClick">最后一页</span>
    	<span id="jump" class="pageClick">跳至</span> 第<input type="text" class="page_input">页    	   		
    </div>    
  </body>


css代码:

<style type="text/css">
.body{margin:50px;}
.tab{font-size:13px;border-collapse:collapse; }
.tab td{border:1px solid #211;text-align:center;}
.td_1{width:28px;}
.td_2{width:92px;}
.td_3,.area_1{width:150px;}
.td_4,.area_2{width:150px;}
.td_5,.area_3{width:180px;}
.tab textarea{overflow:auto;border:0;font-size:13px;}
.pageBtn{font-size:14px;margin-top:20px;}
.pageBtn span{cursor:pointer;}
.pageClick{padding-left:10px;padding-right:10px;}
.page_input{margin-left:5px;margin-right:5px;width:45px;text-align:center;}
</style>

javascript代码:

<script type="text/javascript" src="js/jquery1.9.1.js"></script>
<script charset="gb2312" type="text/javascript" > 
$(function () {
	var total = 0; //数据表中的记录总数
	var pageSize = 4; //一个页面显示4条记录
	var curPage = 1; //当前页面变量
	$.post("page/countAll",null, function (data) {
		 total = data.count; 
		 $(".currentPage").text("1");
		 showPage(1,4);	// 打开页面默认显示第一页	
		 var pageTotal = Math.ceil(total/pageSize); //总页数	
		 $(".totalPage").text(pageTotal); //总页数信息写到前台页面			 
		 $("#next").click(function() {  
		     if (curPage == pageTotal) {  
		          alert("这是最后一页");  
		          curPage = pageTotal;  
		     } else {  
		    	 curPage++;  
		         gotoPage(curPage,total);  
		     }  
		  });  
		  $("#prev").click(function() {  
		      if (curPage == 1) {  
		         alert("这是第一页");  
		         curPage = 1;  
		      } else {  
		           curPage--;  
		           gotoPage(curPage,total);  
		      }  
		  });  
		  $("#firstPage").click(function() { 
		     curPage = 1;  
		     gotoPage(curPage,total);  
		  });  
		  $("#lastPage").click(function() {  
		      curPage = pageTotal;  
		      gotoPage(curPage,total);  
		  });  
		  $("#jump").click(function(){  
		      if($(".page_input").val()  <= pageTotal && $(".page_input").val() != ''){  
		          curPage = $(".page_input").val();  
		          gotoPage(curPage,total);  
		      }else{  
		          alert("您输入的页码有误!");  
		          $(".page_input").val('').focus();  
		      }  
		  });  		 
	});	
});

function showPage(curPage,total){// 表格方式显示获取的数据
	$.ajax({
		url: "page/show",
		data: { "PageIndex": curPage},
		type: "post",
		dataType: "json",
		success: function (data) {       
	        var result = eval(data.result);	
	        $(".tab tr:gt(0)").remove();      
	        	 $.each(result, function(i,o) {
	        		 $(".tab").append($("<tr><td>" + o.id
						+ "</td><td>" +o.name + "</td><td><textarea class='area_1'>"
						+ o.symptom + "</textarea></td><td><textarea class='area_2'>"
						+ o.reason + "</textarea></td><td><textarea class='area_3'>"
						+ o.cure + "</textarea></td></tr>"));        		
	 	         });	      
		}
	});
}
function gotoPage(curPage,total) {  
    $(".currentPage").text(curPage);  
    showPage(curPage,total); 
}  

</script>

2. strust.xml配置信息:

<struts>
 <constant name="struts.devMode" value="true" />
<package name="ajaxPage" extends="json-default" namespace="/page">
		<action name="show" class="testaction.PageJsonAjaxAction" method="showPage">
			<result name="success" type="json"></result>
			</action>
		<action name="countAll" class="testaction.PageJsonAjaxAction" method="countAll">
			<result name="success" type="json"></result>
		</action>
	</package>
</struts>


3. 后台action类 ---  PageJsonAjaxAction.java

    相关的jar包截图如下,我的jar包全放在/WebRoot/WEB-INF/lib下的

    技术分享

package testaction;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import net.sf.json.JSONArray;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;
import sql.SQLConnection;
import com.opensymphony.xwork2.ActionSupport;
/**@author 小霞
 * 2014/12/23
 * */
public class PageJsonAjaxAction extends ActionSupport{
	private static final long serialVersionUID = 1L;	
	private int pageIndex;//接收页面传来的第几页的数字
	private int count;//保存记录总数
	private String result;//作为响应结果以json格式传递到前台页面
	/**
	 * 三个变量的getter及setter,在没有任何设定的情况下,该类下的所有getter方法的返回值将被包含
	 * 在返回给客户端的JSON字符串中。要剔除不需要包含的属性,在类结构结构中需要在getter方法上使
	 * 用@JSON(serialize=false)进行注解,当然在不影响其他业务的时候也可以直接去掉这个getter方法。
	 * */
	public String getResult() {
		return result;
	}
	public void setResult(String result) {
		this.result = result;
	}
	public int getCount() {
		return count;
	}
	public void setCount(int count) {
		this.count = count;
	}
	public int getPageIndex() {
		return pageIndex;
	}
	public void setPageIndex(int pageIndex) {
		this.pageIndex = pageIndex;
	}	
	/**查询数据表全部的记录个数*/
	public String countAll() throws SQLException{//获取数据表的总记录数
		System.out.println("Page count begins....");
		Connection con = new SQLConnection().getConnection();
		String sql = "select * from desease";
		JSONObject jo = new JSONObject();
		int c = 0;
		try {		
			Statement st = con.createStatement();
			ResultSet rs = st.executeQuery(sql);	
			while(rs.next()){
				c++;
			}			
			count = c;
			System.out.println("the count is "+count);			
			jo.element("count",c);
			result = jo.toString();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			con.close();
		}	
		System.out.println("Page count ends....");
		return SUCCESS;
	}
	/**查询对应页面应有的结果集记录*/
	public String showPage() throws SQLException{
		System.out.println("Show page begins...");
		int m = pageIndex * 4;//m-3 ~ m
		Connection con = new SQLConnection().getConnection();
		String sql;
		if( m == 4){
			sql="select* from desease where id<5";
		}else{
			sql="select top 4 * from desease where (id not in(select top "+(m-4)+" id from desease))";//"select * from desease where id<"+index+"";
		}
		try {
			Statement st = con.createStatement();
			ResultSet rs = st.executeQuery(sql);
			result = resultSetToJson(rs);		
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			con.close();
		}
		System.out.println("Show page ends....");
		return SUCCESS;
	}
	/**查询的结果集记录直接变成JSON对象*/
	public String resultSetToJson(ResultSet rs) throws SQLException,JSONException {
		// json数组           
		JSONArray array = new JSONArray();
		// 获取列数    
		ResultSetMetaData metaData = rs.getMetaData();    
		int columnCount = metaData.getColumnCount();     
		// 遍历ResultSet中的每条数据  
		while (rs.next()) {    
			JSONObject jsonObj = new JSONObject();  // 遍历每一列   
			for (int i = 1; i <= columnCount; i++) {             
				String columnName =metaData.getColumnLabel(i);           
				String value=rs.getString(columnName);
				jsonObj.put(columnName, value);        
			}  			
			array.element(jsonObj);
		} 
		return array.toString();  
	}	    
}

4. 结果如下:

技术分享

    

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。