`
jsczxy2
  • 浏览: 1279564 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

EXT 3.x 使用详解之Ext.Direct(一)

    博客分类:
  • ext
阅读更多

感觉EXT3.x增加的最好的功能之一就是这个Ext.Direct了,它实现了类似于DWR的功能,把方法暴露在服务端以便直接在前端像类一样使用后台的方法,可以使用户不再关注ajax的request和response的处理了。。而且很好地直接使用了json格式,不需要我们自己来转换,不过现在为止除了和EXT框架整合比较方便意外,我觉得其他功能还有待改善,并不能替代DWR在JAVA-AJAX之间使用的地位,嘛...毕竟是新东西,值得学习一下!

 

1.去下载源代码,EXT官方并没有对java的支持。。。很囧,php都支持了啊。。。好吧找到google code的一个开源项目来支持java,下载地址:http://code.google.com/p/directjngine/downloads/list 导入里面的lib包里的jar以及最关键的deliverables/directjngine.1.2.jar 

 

2.可以写个java类了:

TestDirect.java:

package com.xuyi.web.direct;

import com.softwarementors.extjs.djn.config.annotations.DirectMethod;
import com.xuyi.vo.User;

/**
 * @author xuyi
 *
 */
public class TestDirect {
	//注意注解
	@DirectMethod
	public String testData(String data){
		return data;
	}
	
	@DirectMethod
	public User testUser(){
		User  user = new User();
		user.setUsername("xuyi");
		user.setPassword("123");
		user.setAge(28);
		return user;
	}
	
}

 3.用到的User对象:

User.java:

package com.xuyi.vo;

/**
 * @author xuyi
 *
 */
public class User {
	
	private String username;
	
	private String password;
	
	private int age;

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}
	
	
}

 4.OK,后台准备就绪,开始进行配置吧,先在web.xml里面进行相关的配置,这个不用多说,DWR也一样要配servlet,具体看注释吧:

web.xml中加入如下代码:

<servlet>
		<servlet-name>action</servlet-name>
		<servlet-class>
			org.apache.struts.action.ActionServlet
		</servlet-class>
		<init-param>
			<param-name>config</param-name>
			<param-value>
				/WEB-INF/conf/struts/struts-config.xml
			</param-value>
		</init-param>
		<init-param>
			<param-name>debug</param-name>
			<param-value>3</param-value>
		</init-param>
		<init-param>
			<param-name>detail</param-name>
			<param-value>3</param-value>
		</init-param>
		<load-on-startup>0</load-on-startup>
	</servlet>

	<servlet>
		<servlet-name>DjnServlet</servlet-name>
		<servlet-class>
			com.softwarementors.extjs.djn.servlet.DirectJNgineServlet
		</servlet-class>

		<init-param>
			<param-name>debug</param-name>
			<param-value>true</param-value>
		</init-param>

		<init-param>
			<param-name>minify</param-name>
			<param-value>true</param-value>
		</init-param>

		<init-param>
			<param-name>providersUrl</param-name>
			<param-value>djn/directprovider</param-value>
		</init-param>

		<init-param>
			<param-name>batchRequestsMultithreadingEnabled</param-name>
			<param-value>false</param-value>
		</init-param>

		<!-- api域: 对应下面的各个param-name的前缀,可以设置多个不同的域 在value中用逗号隔开-->
		<init-param>
			<param-name>apis</param-name>
			<param-value>test</param-value>
		</init-param>

		<!-- test.对应上面的域 test/用来安放其自动生成的js文件 -->
		<init-param>
			<param-name>test.apiFile</param-name>
			<param-value>test/test.js</param-value>
		</init-param>

		<!-- test.对应上面的域 命名空间会在页面加载时候用上 -->
		<init-param>
			<param-name>test.apiNamespace</param-name>
			<param-value>Ext.xuyi</param-value>
		</init-param>

		<!-- test.对应上面的域 类的具体包路径 -->
		<init-param>
			<param-name>test.classes</param-name>
			<param-value>com.xuyi.web.direct.TestDirect</param-value>
		</init-param>

		<load-on-startup>1</load-on-startup>
	</servlet>
	<!-- 默认servlet路径 -->
	<servlet-mapping>
		<servlet-name>DjnServlet</servlet-name>
		<url-pattern>/djn/directprovider/*</url-pattern>
	</servlet-mapping>

 5.页面使用:

test_direct_1.jsp:

<%@ page language="java" pageEncoding="UTF-8"%>
<html>
	<head>
		<title>Ext3 Direct功能示例</title>
		<script type="text/javascript" src="${ctxPath }/scripts/ext/ext-base.js"></script>
		<script type="text/javascript" src="${ctxPath }/scripts/ext/ext-all.js"></script>
		<script type="text/javascript" src="${ctxPath}/test/test.js"></script>
	</head>
	<body>
		<script type="text/javascript">
			//Register provider
			//use namespace Ext.xuyi
  			Ext.xuyi.REMOTING_API.enableBuffer = 0;
  			Ext.Direct.addProvider(Ext.xuyi.REMOTING_API);
  			//hello function
  			hello=function(){
  				TestDirect.testData("hello,Ext Direct!",function(data){
  					console.log(data);
					alert(data);
				});
  			}
  			//user function
  			user=function(){
  				TestDirect.testUser(function(data){
  					console.log(data);
					alert("username:" + data.username+" password:"+data.password+" age:"+data.age);
				});
  			}
			
		</script>		
		<input type="button" value="hello" onclick="hello();">
		
		<input type="button" value="user" onclick="user();">

	</body>
</html>

 6.访问页面点击按钮即可看到效果!

5
0
分享到:
评论

相关推荐

    Ext+JS高级程序设计.rar

    8.3.2 在CRUD操作中restful的设置以及使用Ext.Direct的问题 247 8.4 ListView控件 248 8.5 本章小结 251 第四部分 Ext 扩展和Ext插件 第9章 Ext 扩展 254 9.1 利用Ext.extend实现继承 254 9.2 与Ext扩展相关的预备...

    Ext.data专题

    **Ext.data.Connection** 是对 **Ext.lib.Ajax** 的封装,它提供了一种更简洁的配置方式来使用Ajax。与直接使用 **Ext.lib.Ajax** 相比,**Ext.data.Connection** 提供了更加高级和方便的功能,如自动处理错误和回调...

    Ext-Js分页示例代码详解.pdf

    在EXT JS中,分页是一种常见且重要的功能,特别是在数据量较大时,为了提高用户体验,分页能够有效地分批次加载数据,避免一次性加载过多数据导致页面卡顿。EXT JS主要支持XML和JSON两种数据格式来实现分页。下面将...

    Ext Direct Spring 参考手册

    《Ext Direct Spring 参考手册》是一份针对ExtDirectSpring框架使用的详细指南。该框架主要用于整合ExtJS前端框架与Spring后端服务,通过简化前后端通信的方式提高开发效率。 #### 手册结构概述 手册内容分为多个...

    ExtJS对Ajax的支持

    **Direct Web Remoting (DWR)**是一种简化Ajax应用程序开发的技术,它使JavaScript能够直接调用服务器端Java方法,就像调用本地JavaScript函数一样。ExtJS与DWR的结合可以进一步增强Web应用的实时性和交互性。 ####...

    extjs数据存储与传输详解

    **Ext.data**是Extjs框架中的核心组件之一,负责处理数据的加载、存储、转换以及与后端服务器之间的通信。它提供了一系列用于管理数据的类,包括Store、Reader、Writer、Proxy等。这些类共同协作,使得开发者能够...

    spring+ext+dwr.rar_ext dwr_ext java_java 用户管理_spring e_spring ex

    《Spring+Ext+DWR整合应用详解:用户管理与实战》 在当今的Web开发领域,Spring、Ext和Direct Web Remoting (DWR) 是三种非常重要的技术,它们各自在不同的层面发挥着关键作用。Spring作为Java企业级应用的框架,...

    ajax框架:dwr与ext实践_.pdf

    DWR(Direct Web Remoting)是一种用于简化Ajax开发的框架,它允许开发者在客户端JavaScript中直接调用服务器端的Java方法,从而大大降低了开发复杂度。对于习惯于面向对象编程的开发者来说,DWR提供了一种更加直观...

    Ext + dwr 实现分页功能

    1. **Ext JS**:Ext JS是一款基于JavaScript的开源框架,用于构建交互式的Web应用。它提供了丰富的UI组件库,支持多种布局管理器,并且可以方便地与各种后端技术集成。 2. **DWR (Direct Web Remoting)**:DWR是一种...

    log4Net详解(共2讲)

    5、易于扩展是Ext的最大特色之一,如何才能将它的这一功能发挥到极致? 6、在应用Web化的大潮中,单页面应用越来越受到追捧,如何使用Ext快速而简单地开发单页面应用? 7、Web开发中最让人头疼的是脚本调试 .如何...

    extjs数据存储与传输

    `Ext.data.Connection`是`Ext.data`模块中的重要组件之一,它对`Ext.lib.Ajax`进行了封装,提供了更为简洁的接口来配置和执行Ajax请求。`Ext.data.Connection`不仅能够处理基本的Ajax请求,还能通过其灵活的配置项...

    Java ibatis ext spring DWR SQL全套PDF

    Java开发领域涵盖了许多技术栈,本套PDF集合涵盖了Java企业级开发中的重要组件和技术,包括iBatis、EXT、Spring和Direct Web Remoting (DWR)以及SQL。这些技术是构建高效、可扩展的Web应用的基础,对于Java开发者来...

    《ajax框架:dwr与ext》实战

    DWR(Direct Web Remoting)是一款远程过程调用(RPC)库,它简化了在JavaScript中调用Java函数以及从Java调用JavaScript函数的过程。这种双向交互方式通常被称为反向Ajax(Reverse Ajax),能够极大地提高Web应用...

    DWR+EXT的eclipse下的工程

    在这个项目中,我们主要探讨的是如何在Eclipse集成开发环境中结合Direct Web Remoting (DWR) 和 EXTJS(EXT)来实现前端Grid组件与后端数据的交互。DWR是一种JavaScript库,允许Web应用程序在客户端和服务器之间进行...

    Unigui19001503汉化.rar

    该汉化版本解决了原英文版本的语言障碍,使得国内开发者能够更流畅地理解和使用这一工具,提高开发效率。 1. Unigui框架详解: Unigui是一个基于Delphi的跨平台Web应用开发框架,它允许开发者使用熟悉的VCL...

Global site tag (gtag.js) - Google Analytics