• SpringMVC+Jquery -页面异步载入数据


    背景:

    做项目时涉及到页面。当我打算在controller中传一个list到页面,然后通过<c:foreach>循环遍历出来时,同事说:你这样每次都要刷新。这都是几百年前使用的技术了。你用post实现异步载入数据。然后就......

    ResultUtil.java 工具类:

    package com.sgcc.uds.fs.config.web.util;
    
    import java.util.HashMap;
    import java.util.Map;
    
    import net.sf.json.JSONObject;
    
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    
    public class ResultUtil {
    	/** 日志 */
    	private static Log logger = LogFactory.getLog(ResultUtil.class);
    	// 保存json对象
    	private Map<String, Object> results;
    	// 消息"key
    	public static final String MSG = "msg";
    	// 成功标识 key
    	public static final String SUCCESS = "success";
    	// 单对"key
    	public static final String OBJ = "obj";
    	// 列表对象 key
    	public static final String ORWS = "rows";
    	// 总计"key
    	public static final String TOTAL = "total";
    	// 状" key
    	public static final String STATUS = "status";
    
    	public ResultUtil() {
    		this.results = new HashMap<String, Object>();
    		this.results.put(SUCCESS, true);
    	}
    
    	public Map<String, Object> getResult() {
    		return this.results;
    	}
    
    	public void setResult(Map<String, Object> set) {
    		this.results = set;
    	}
    
    	public boolean getSuccess() {
    		return (Boolean) results.get(SUCCESS);
    	}
    
    	public String getMessage() {
    		return (String) results.get(MSG);
    	}
    
    	public void setRows(Object list) {
    		this.results.put(ORWS, list);
    	}
    
    	public void setTotal(Integer total) {
    		this.results.put(TOTAL, total);
    	}
    
    	/**
    	 * 依据"  自己定义加入属"
    	 * 
    	 * @param key
    	 *            属"标识
    	 * @param value
    	 */
    	public void setProperty(String key, Object value) {
    		try {
    			this.results.put(key, value);
    		} catch (RuntimeException e) {
    			logger.error("-->>设置key为:" + key + "值为" + value + " Json时出错:", e);
    		}
    	}
    
    	/**
    	 * 设置状"信息
    	 * 
    	 * @param status
    	 */
    	public void setStatus(String status) {
    		setProperty(STATUS, status);
    	}
    
    	/**
    	 * 设置成功标志 " 用于程序运行是否正常
    	 * 
    	 * @param success
    	 *            成功标识
    	 */
    	public void setSuccess(boolean success) {
    		setProperty(SUCCESS, success);
    	}
    
    	/**
    	 * 设置消息
    	 * 
    	 * @param msg
    	 *            消息"
    	 */
    	public void setMsg(String msg) {
    		setProperty(MSG, msg);
    	}
    
    	/**
    	 * 设置总计"
    	 * 
    	 * @param size
    	 */
    	public void setTotal(int size) {
    		setProperty(TOTAL, size);
    	}
    
    	public void setSize(int size) {
    		setProperty(TOTAL, size);
    	}
    
    	/**
    	 * 加入对象列表 数据为json格式
    	 * 
    	 * @param data
    	 *            对象列表json格式
    	 */
    	public void setData(String data) {
    		setProperty(ORWS, data);
    	}
    
    	/**
    	 * 加入对象
    	 * 
    	 * @param obj
    	 *            对象
    	 */
    	public void setObject(Object obj) {
    		setProperty(OBJ, obj);
    	}
    
    	/**
    	 * 返回json格式
    	 */
    	public String toJSONString() {
    		JSONObject obj = new JSONObject();
    		obj.put("data", this.results);
    		return obj.toString();
    	}
    
    	public static void main(String aregs[]) {
    		ResultUtil util = new ResultUtil();
    		System.out.println(util.toString());
    	}
    
    }
    

    controller类方法:

    /**
    	 * @return
    	 * 载入文件信息
    	 */
    	@RequestMapping("/file/queryFileInfo")
    	@ResponseBody
    	public Map<String, Object> queryFileInfo()
    	{
    		ResultUtil result =new ResultUtil();
    		
    		List<File> fileList =getFileInfo();
    		
    		if(fileList !=null)
    		{
    			result.setRows(fileList);
    			result.setSize(10);
    			result.setMsg("查询成功!

    "); }else { result.setSuccess(false); result.setMsg("载入数据失败!"); } return result.getResult(); }


    jsp页面:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    request.setAttribute("home", path);
    %>
    <!doctype html>
    <html lang="zh-CN">
    <head>
    <title>首页</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="renderer" content="webkit">
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    
    <link rel="stylesheet" href="${home}/css/bootstrap.min.css" type="text/css"></link>
    <link rel="stylesheet" href="${home}/css/allStyle.css" type="text/css"></link>
    <!--[if lte IE 9]>
    	<script type="text/javascript" src="${home}/js/respond.min.js"></script>
    	<script type="text/javascript" src="${home}/js/html5shiv.min.js"></script>
    	<![endif]-->
    <script type="text/javascript">
    		var home="${home}";
    </script>
    
    </head>
    <body>
    
       <h2 class="sub-header">文件信息列表</h2> 
    	 <div class="addbtn" >
    	
    	<button class="btn  btn-warning" data-toggle="modal"
    			data-target="#addModal">添加文件信息</button>
    	</div> 
    	
    	<!-- 信息列表 -->
    	<div class="table-responsive">
    		<table class="table table-striped table-bordered table-hover" id="userListTable">
    			<thead>
    				<tr>
    					<th>权限文件</th>
    					<th>数量</th>
    					<th>每日新增</th>
    					 <th>操作</th> 
    				</tr>
    			</thead>
    			<tbody>
    			
    			</tbody>
    		</table>
    		
    	</div>
    
    <!-- 引入JS文件 -->
    	<script type="text/javascript" src="${home}/js/jquery-1.11.3.min.js"></script>
    	<script type="text/javascript" src="${home}/js/bootstrap.min.js"></script>
    	
    	<script type="text/javascript" src="${home}/js/docs.min.js"></script>
    	<script type="text/javascript" src="${home}/js/ie10-viewport-bug-workaround.js"></script>
    	
    	<script type="text/javascript" src="${home}/js/fileMgr.js"></script>
    	
    </body>
    </html>
    

    jquery方法:-fileMgr.js

    //文件列表
    $(document).ready(function() 
    {
    	var page=2;
    	var pageSize=10;
    	
    	var pageParam={};
    	pageParam.page=page;
    	pageParam.pageSize=pageSize;
    	
    	$.post(home+"/file/queryFileInfo",pageParam,
    	function(result)
    	{
    		if(result && result.success)
    		{
    			var obj =result.rows;
    			
    			for ( var i = 0; i < obj.length; i++) {
    				var res =obj[i];
    				var tr="<tr><td>"
    				<span style="white-space:pre">	</span>+ res.bucketName
    				<span style="white-space:pre">	</span>+ " </td>  <td>"
    					+ res.number
    					+ "</td> <td>"
    					+ res.dailyNew
    					+ "</td>";
    					+ "<td><a  class='a_model a_collect' href=javascript:openUpdateModal('"+res.bucketName+"','"+res.number+"','"+res.dailyNew+"')>改动</a>" + "<a class='a_track' href=javascript:delResource('"+res.bucketName+"')>删除</a></td> </tr>";
    					$(".table").append(tr);
    							
    
    			}
    		}else
    		{
    			alert(result.msg);
    		}
    	},"json");
    });
    

    这样页面的数据直接在jquery直接加入到表格中。看起来是有点高大上的感觉。



  • 相关阅读:
    php编程 之php基础 表单
    javascript/ajax和php 进阶 之 项目实战
    php编程 之 php基础三
    Ajax基础1
    JavaScript编程基础2
    css3基础一
    html超文本标记语言基础一
    表连接、存储过程及基本编程
    五种函数、子查询及分页查询思路
    数据库与表的创建及增删改查
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6910439.html
Copyright © 2020-2023  润新知