`
zengshaotao
  • 浏览: 786802 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JQuery-Grid,服务端取数

 
阅读更多

jqGrid支持多种数据类型,但比较多的是JSON。开发中我们可能会见到{}构造json数据的代码,比较繁琐。如果采用了json-lib,操作比较简单,因为操作的都是java对象,只是操作对象时需要按照格式即可。在工程里要使用该功能,就需要使用json-lib.jar,下载地址:http://json-lib.sourceforge.net/

 

页面:

<body>
         <table id="gridTable"></table>
         <div id="gridPager"></div>
</body>

 

前端初始化脚本:

 

 $(function()
{
        $("#gridTable").jqGrid({
                url:'jqGridServlet',
                datatype: "json",
                height: 250,
                colNames:['编号','姓名, '性别', '邮箱', 'QQ','手机','出生日期'],
                colModel:[
                        {name:'id',index:'id', sorttype:"int"},
                        {name:'userName',index:'userName',
                        {name:'gender',index:'gender',
                        {name:'email',index:'email', ;string"},
                        {name:'QQ',index:'QQ', ;            
                        {name:'mobilePhone',index:'mobilePhone', ;            
                        {name:'birthday',index:'birthday', sorttype:"date"}
                ],
                sortname:'id',
                sortorder:'asc',
                viewrecords:true,
                rowNum:10,
                rowList:[10,20,30],
                jsonReader:{
                        repeatitems : false //jsonReader:{repeatitems : false}则是为了后台处理数据方便而设置
                },
                pager:"#gridPager",
                caption: "jqGrid与Servlet集成"
 }).navGrid('#gridPager',{edit:false,add:false,del:false});
})

 

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

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
/**
* 该Servlet向客户端返回一个json对象。为了简便,数据不是从数据库获得的。
* jqGrid默认期望返回的json对象格式要求如下:
* {"page":"1","total":"2","records":"13",
* "rows":[
*                 {id:"1",cell:["1","polaris","男","polaris@gmail.com","772618379","18329382732","1985-10-2"]},
*                 {id:"2",cell:["2","张三","女","zhangsan@163.com","272618382","15329382732","1986-10-12"]},
*                 {id:"3",cell:["3","王五","女","wangwu@yahoo.com","172635372","13329389832","1987-12-21"]},
*                 {id:"4",cell:["4","赵六","男","zhaoliu@sina.com","372618332","18929343731","1988-09-22"]}
*         ]
* }
* 当然,在js中,可以通过jqGrid的jsonReader属性来修改默认格式
* 因为默认的格式,rows的数据要求顺序不能变,且每个字段都得有值(空也得有"")。因而,
* 在jsonReader中定义repeatitems : false。这样,rows就变成了:
* "rows":[
*                 {id:"1",userName:"polaris",gender:" 男",email:"polaris@gmail.com",QQ:"772618379",mobilePhone:"18329382732",birthday:"1985-10-2"]},
*                 {id:"2",userName:"徐新华",gender:" 男",email:"xh.xu@163.com",QQ:"272618382",mobilePhone:"15329382732",birthday:"1986-10-12"]},
*                 {id:"3",userName:"王五",gender:" 女",email:"wangwu@yahoo.com",QQ:"172635372",mobilePhone:"13329389832",birthday:"1987-12-21"]},
*                 {id:"4",userName:"赵六",gender:" 女",email:"zhaoliu@sina.com",QQ:"372618332",mobilePhone:"18929343731",birthday:"1988-09-22"]}
*         ]
* @author xuxinhua
*
*/

public class JqGridForJSONServlet extends HttpServlet
{
        private static final long serialVersionUID = 132383828833L;

        @Override
        public void doGet(HttpServletRequest req, HttpServletResponse resp)
                        throws ServletException, IOException {
                // 定义返回的数据类型:json,使用了json-lib
                JSONObject jsonObj = new JSONObject();
                // 根据jqGrid对JSON的数据格式要求给jsonObj赋值
                jsonObj.put("page", 1);                // 当前页
                jsonObj.put("total", 1);        // 总页数
                jsonObj.put("records", 4);        // 总记录数
                // 定义rows,存放数据
                JSONArray rows = new JSONArray();
                // 放入4条数据
                for(int i=0;i<4;i++)
                {
                        // 存放一条记录的对象
                        JSONObject cell = new JSONObject();
                        cell.put("id", i);
                        if(i%2==0)
                        {
                                cell.put("userName", "polaris");
                                cell.put("gender", "女");
                        }
                        else
                        {
                                cell.put("userName", "徐新华");
                                cell.put("gender", "男");
                        }
                        cell.put("email", "polaris@gmail.com");
                        cell.put("QQ", "772"+i+"1837"+i);
                        cell.put("mobilePhone", "132"+i+"1837"+i+"3"+i);
                        cell.put("birthday", "198"+i+"-10-"+"1"+i);
                        // 将该记录放入rows中
                        rows.add(cell);
                }
                // 将rows放入json对象中
                jsonObj.put("rows", rows);
                // 自控制台打印输出,以检验json对象生成是否正确
                System.out.println("要返回的json对象:\n" + jsonObj.toString());
                // 设置字符编码
                resp.setCharacterEncoding("UTF-8");
                // 返回json对象(通过PrintWriter输出)
                resp.getWriter().print(jsonObj);
        }
        @Override
        public void doPost(HttpServletRequest req, HttpServletResponse resp)
                        throws ServletException, IOException {
                doGet(req,resp);
        }
}

 

最后不要忘记在你的项目web.xml文件里进行配置

分享到:
评论

相关推荐

    grid数据读取实例方法

    本实例主要探讨的是如何通过"grid"这种数据展示组件从服务端获取数据,并利用特定的事件触发方法来实现这一过程。"grid"通常指的是表格或者网格布局,常用于展示结构化数据。在这个例子中,我们将关注JavaScript的...

    于JQuery对开源插件jgGrid的功能应用

    ### 关于JQuery插件jqGrid在ASP.NET...在客户端,jqGrid的调用格式为`jQuery('#grid_selector').jqGrid(options)`。在调用之前,需要先建立一个`&lt;table&gt;`标签和`&lt;div&gt;`标签用于jqGrid的显示。示例代码如下: ```html ...

    ParamQuery Grid 2.0.4 API

    ParamQuery grid是一个轻量级的jQuery网格插件,基于用于用户界面控制、具有一致API的优秀设计模式jQueryUI Widget factory创建,能够在网页上展示各种类似于Excel和Google Spreadsheet效果的网格。 使用ParamQuery...

    jquery ligerUI

    - **数据展示组件**: 数据表格(Grid)、树形视图(Tree)、下拉列表(ComboBox)、分组列表(ListGroup)等,用于展示和管理大量数据。 - **导航组件**: 菜单(Menu)、工具栏(ToolBar)、按钮(Button)等,...

    一个jquery九宫格抽奖效果

    7. **优化性能**:考虑使用事件委托减少内存占用,合理设置动画的帧率以避免过度消耗CPU资源,对于大量用户同时抽奖,可能还需要考虑服务端的并发处理能力。 8. **用户体验**:添加加载提示、错误处理和友好的用户...

    jQuery LigerUI V1.1.5

    **jQuery LigerUI V1.1.5**是一款基于jQuery的UI库,它为开发者提供了丰富的界面组件,便于快速构建用户界面。其中,ligerGrid是LigerUI中的核心控件,专门用于创建功能强大的表格展示。这个版本的发布旨在提供更加...

    jQuery MiniUI

    jQuery MiniUI 是一个专为Web应用设计的专业UI控件库,旨在帮助开发者高效地构建用户界面,减少前端开发的工作量,让开发者能够更加集中精力于服务端和业务逻辑的实现。MiniUI 的核心理念是提供一套简洁、易用且功能...

    【原创】Gridview拖放排序,并保存到服务端

    首先,标题"【原创】Gridview拖放排序,并保存到服务端"表明我们将关注的是在ASP.NET环境中,使用GridView控件实现用户交互式的拖放排序功能,且该排序能够持久化存储到服务器端的数据库中。GridView是ASP.NET Web ...

    软件工程师_经典收藏50个jQueryMobile开发技巧集萃.docx

    20. **使用网格系统**:利用jQuery Mobile的grid系统,轻松创建多列布局。 21. **自定义图标**:添加自定义图标到按钮和工具栏,增强界面辨识度。 22. **页面过渡效果**:利用jQuery Mobile的内置过渡动画,使页面...

    文件上传简单三端代码,学习用

    - **CSS**:用来美化上传按钮和反馈信息的样式,可以使用Flexbox或Grid布局实现响应式设计。 - **JavaScript/jQuery**:前端通常会添加额外的功能,如实时显示上传进度,处理文件预览,或者提供错误提示。 5. **...

    特殊的瀑布流,对大长图和大宽图做了对应优化

    - 使用JavaScript库如jQuery Masonry或Isotope可以方便地实现瀑布流布局。 - 检测窗口大小变化,动态调整元素的位置是关键部分,这通常通过监听`resize`事件来实现。 - 针对大图,可以使用Intersection Observer ...

    用JQuery,ajax从数据库读取数据.pdf

    接下来是jQuery代码部分,它定义了一些变量如`grid`、`menu`和`actionCustomerID`,以及两个函数:`itemclick`和`getCheckedData`。`itemclick`函数在用户点击菜单项时触发,展示所选操作和文本。`getCheckedData`...

    jQuery基于JSON九宫格转盘特效

    **jQuery基于JSON九宫格转盘特效** 在Web开发中,动态交互的界面元素往往能够提升用户体验,其中抽奖转盘就是一个常见的应用场景。本教程将详细讲解如何使用jQuery库结合JSON数据来实现一个简单的九宫格转盘抽奖...

    大数据功能模块概要设计_V1.1.docx

    - 分页、Grid、TreeMenu、Tab、下拉框等功能组件,需与后端服务配合,以实现数据交互和处理。 3. **任务调度**: - 使用开源组件Quartz进行任务调度,同时需要验证框架(如Struts2)与前端分页组件的协同工作。 ...

    使用SharpKit构建客户端网格控件

    在构建客户端Grid控件时,开发者可能利用了.NET服务端生成数据,然后通过AJAX请求将数据传递给前端的Grid控件,而jQuery则可能用于优化用户界面交互。 根据文件名“Building-a-Client-Side-Grid-Control-using-...

    UniGUI集合说明--追月无名.pdf

    在UniGUI中,事件处理通常涉及到客户端(浏览器)与服务器端(UniGUI应用程序所在的服务端)之间的交互。事件触发后,其相关的处理逻辑可能会在服务器端执行,也有可能在客户端执行,这取决于事件类型及其配置。 - ...

    瀑布流实现

    设置`grid-template-columns`定义列数,然后在JavaScript中调整元素的`grid-row`属性,使其填充空白区域。CSS Grid提供了更强大的布局能力,但兼容性不如传统方法。 4. **CSS Flexbox实现**:尽管Flexbox主要用于一...

    newpages_incognito

    `qwrap`可能是一个用于封装或简化操作的工具,而`api.js`可能包含了与服务端交互的API(应用程序编程接口),用于动态加载数据或者处理用户交互。 4. **bg-benefits.png**、**network-broken.png**、**welcome.png*...

    Java基于RBAC的完全响应式权限管理系统.zip

    JQuery+Bootstrap3.3.5+ACE1.3.4(基于bootstrap的响应式后台管理模板)+layer+dlshouwen.grid.v1.2.1+JQuery validation等 数据存储: 数据库使用Mysql + Redis + Ehcache 主要功能: 这里是列表文本系统基础...

    利用jQuery 实现GridView异步排序、分页的代码

    每次请求备份管理页面时,服务端会把所以的...&lt;ul&gt; &lt;li&gt;&lt;a&gt;备份&lt;/span&gt;&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a&gt;还原&lt;/span&gt;&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; 但这样,当Restore.aspx存在服务端控件时,当他与服务端交互时,将不会很理想,比如GridV

Global site tag (gtag.js) - Google Analytics