`
bsd4ever
  • 浏览: 10488 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Ext和服务器端的交互

阅读更多

Ext客户端方面的文章Google一下,可以得到很多,但是关于Ext如何与服务器端进行交互,这方面的文章就比较少。下面我就来简单介绍一下Ext和服务器端的交互,基础的东西我就不多说啦,不清楚的自己去Google。

Ext和服务器交互的方式有好几种,下文采用的方式是json,会用到json-lib,没有这个包的先去网上下载,先贴几个简单的函数,用户把服务器的相应以json的方式发送到客户端(这部分代码,我也是从网上看来的,拿来主义...)

	public void outJsonString(String str) {
		response.setContentType("text/javascript;charset=UTF-8");
		outString(str);
	}

	public void outJson(Object obj) {
		outJsonString(JSONObject.fromObject(obj).toString());
	}

	public void outJsonArray(Object array) {
		outJsonArray(JSONArray.fromObject(array).toString());
	}

	public void outString(String str) {
		try {
			PrintWriter out = response.getWriter();
			out.write(str);
		} catch (IOException e) {
		}
	}

 上述代码非常简单,就不需要解释了吧。

 下面再贴段代码(再次拿来...),这段代码定义了一个对象,这个对象包含了Ext需要的必要的信息,outJson这个对象,Ext客户端就能够读懂服务返回的信息。

public class ListRange<T> {
	boolean success;
	String message;
	long totalSize;
	List<T> list;

	public ListRange() {
		this.totalSize = 0;
		this.list = new ArrayList<T>();
	}

	public long getTotalSize() {
		return totalSize;
	}

	public void setTotalSize(long totalSize) {
		this.totalSize = totalSize;
	}

	public List<T> getList() {
		return list;
	}

	public void setList(List<T> list) {
		this.list = list;
	}

	public boolean isSuccess() {
		return success;
	}

	public void setSuccess(boolean success) {
		this.success = success;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}
}

 

 下面简单演示下如何利用上面的介绍的东西来实现客户端和服务端的交互,

 先来服务端的:

public class user{	private int id;
	private String name;
	private String password;
	//以下是name和password的settter和gettter
}

在你的Action对象中增加一个方法用户向客户端输出用户列表
public void doGetUsers(){
	ListRange<user> result = new ListRange();
	try{
		List<user> users = getUsers();//Users既可以从数据库中获取,也可以构造一个简单的List,填充简单的数据,然后返回这个List
		result.setList(users);
		result.setTotalSize(users.size());//如果需要分页,这个totalSize应该是所有users的个数,而不是当前页users的个数
		result.setSuccess(true);
	}catch(Exception e){
		result.setSuccess(false);
		result.setMessage(e.getMessage());
	}

	outJson();
}

 

  客户端的:

  构造一个简单的grid,在这个grid中显示用户列表,

//用户数据源
var userDS = new Ext.data.Store({
    proxy: new Ext.data.HttpProxy({
        url: 'doGetUsers.action'
    }),

    reader: new Ext.data.JsonReader({
        root: 'list',//对应ListRange的List
        totalProperty: 'totalSize',//对应ListRange的totalSize
        id: 'id',//对应用户的id
        fields: ['id', 'name', 'password']
    }),
    remoteSort: false
});

 

var userCM = new Ext.grid.ColumnModel([
	new Ext.grid.RowNumberer(),
	{id: 'id', header: "id", dataIndex: 'id', type: 'int', width: 20, hidden: true, sortable: true},
	{header: "用户名", dataIndex: 'name', width: 30, sortable: false},
	{header: "密码", dataIndex: 'password', width: 50, sortable: false}
]);

 

.....
var grid = new Ext.grid.GridPanel({
        ds: userDS,
        cm: userCM,
        stripeRows: true,
        height:350,
        width:600
});
....

 

到此,这个Grid就可以使用了,它能够从服务器获取用户列表,然后显示在Grid中。

 

下面再说下如何以Ajax方式异步从服务器获取用户列表,这个也很简单:

Ext.Ajax.request({
	url: 'doGetUsers.action',
	method: 'post',
	success: function(response, option){//还记得ListRange的success属性吗,如果success为true,就会执行下列代码,否则就执行failure
		var json = response.responseText;
		var o = eval('(' + json + ')');
		alert(o.totalSize);
		
	},
	failure: function(response, option){
		var json = response.responseText;
		var o = eval('(' + json + ')');
		alert(o.message);
	}
	
});

 

ps:不太适应这个编辑器,格式有点乱,各位将就着看..

 

以后有时间再为大家讲讲如何在Grid中实现CRUD操作

分享到:
评论

相关推荐

    EXT 中文手册,简单易懂,适合初学者,带有实例

    编程是一门实践性的科学,仅仅靠看书、看别人写的代码是远远不够的,因此,必须多做实践才行,只有通过不断的练习,大量的使用,才能对Ext的组件特性、事件、事件处理机制以及与服务器端交互接口等深入的掌握,只有...

    Ext Js权威指南(.zip.001

    7.2.4 服务器端代理:ext.data.proxy.server / 305 7.2.5 使用ajax处理数据的代理:ext.data.proxy.ajax与ext.data.proxy.rest / 308 7.2.6 跨域处理数据的代理:ext.data.proxy.jsonp / 312 7.2.7 为ext.direct...

    EXTJS4自学手册

    EXTJS4自学手册——EXT数据结构组件(proxy代理类之服务器端代理) EXTJS4自学手册——EXT数据结构组件(store) 三、Extjs布局 EXTJS4自学手册——EXT容器布局(Auto,Anchor,Absolute,Hbox) EXTJS4自学手册——...

    开源ASP.NET批量上传文件组件 - SwfUpload-Ext

    1、 完全的AJAX方式用户体验好 2、 多文件可一次选定并添加 3、 文件添加后仍然可以有禁止上传的操作,更方便 4、 客户端和服务器端采用了direct数据交互方式,此控件移植到PHP或JAVA几乎无需对客户端进行修改

    Extjs学习笔记之二 初识Extjs之Form

    Extjs中的表单组件是Ext.form.BasicForm,不过最简单最常用的是Ext.form.FormPanel控件,它继承自Panel,具有一定的界面显示控制能力,它其中...由于使用Form要和服务器端程序交互,方便起见,新建一个asp.net站点,

    ExtAspNet_v2.3.2_dll

    -修正TreeNode的属性NavigateUrl不接受服务器端URL(以~/开头)的BUG。 -增加Accordion和Tree配合使用的示例(other\accordion_tree_run.aspx)。 -修正Panel图标不能显示的BUG(CSS中class名不能有$字符)。 +去除...

    log4Net详解(共2讲)

    不过,最革命性的改变还是ExtJs中新增的Ext.Direct功能,它实现了服务器端的无关性。 在3.2版本中,Ext将增加移动组件,进军移动市场,这将是一次革命性的改进,同时在4.0版本中,除了对HTML5的支持外,还增加画布...

    JAVA_API1.6文档(中文)

    javax.sql 为通过 JavaTM 编程语言进行服务器端数据源访问和处理提供 API。 javax.sql.rowset JDBC RowSet 实现的标准接口和基类。 javax.sql.rowset.serial 提供实用工具类,允许 SQL 类型与 Java 编程语言数据...

    EzDict.NET 易典 免费在线辞典

    易典运用Ext库设计富客户端,Ext自带Ajax模块实现交互,php服务器端脚本,MySQL后台数据库管理。技术问题及交流请联系webmaster@ezdict.net。 联系我们 Email:webmaster@ezdict.net 请提供您宝贵的意见!祝您...

    java api最新7.0

    javax.sql 为通过 JavaTM 编程语言进行服务器端数据源访问和处理提供 API。 javax.sql.rowset JDBC RowSet 实现的标准接口和基类。 javax.sql.rowset.serial 提供实用工具类,允许 SQL 类型与 Java 编程语言数据类型...

    Java 1.6 API 中文 New

    javax.sql 为通过 JavaTM 编程语言进行服务器端数据源访问和处理提供 API。 javax.sql.rowset JDBC RowSet 实现的标准接口和基类。 javax.sql.rowset.serial 提供实用工具类,允许 SQL 类型与 Java 编程语言数据类型...

    [Java参考文档]

    javax.sql 为通过 JavaTM 编程语言进行服务器端数据源访问和处理提供 API。 javax.sql.rowset JDBC RowSet 实现的标准接口和基类。 javax.sql.rowset.serial 提供实用工具类,允许 SQL 类型与 Java 编程语言数据...

    JavaAPI1.6中文chm文档 part1

    javax.sql 为通过 JavaTM 编程语言进行服务器端数据源访问和处理提供 API。 javax.sql.rowset JDBC RowSet 实现的标准接口和基类。 javax.sql.rowset.serial 提供实用工具类,允许 SQL 类型与 Java 编程语言数据...

    [Java参考文档].JDK_API 1.6

    javax.sql 为通过 JavaTM 编程语言进行服务器端数据源访问和处理提供 API。 javax.sql.rowset JDBC RowSet 实现的标准接口和基类。 javax.sql.rowset.serial 提供实用工具类,允许 SQL 类型与 Java 编程语言数据类型...

    JavaAPI中文chm文档 part2

    javax.sql 为通过 JavaTM 编程语言进行服务器端数据源访问和处理提供 API。 javax.sql.rowset JDBC RowSet 实现的标准接口和基类。 javax.sql.rowset.serial 提供实用工具类,允许 SQL 类型与 Java 编程语言数据...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -修正TreeNode的属性NavigateUrl不接受服务器端URL(以~/开头)的BUG。 -增加Accordion和Tree配合使用的示例(other\accordion_tree_run.aspx)。 -修正Panel图标不能显示的BUG(CSS中class名不能有$字符)。 +去除...

    入门学习Linux常用必会60个命令实例详解doc/txt

    这是因为Linux和许多版本的Unix一样,提供了虚拟控制台的访问方式,允许用户在同一时间从控制台(系统的控制台是与系统直接相连的监视器和键盘)进行多次登录。每个虚拟控制台可以看作是一个独立的工作站,工作台...

Global site tag (gtag.js) - Google Analytics