JsonGateway是一个java远程服务调用的ajax的接口,它使用Json数据格式在页面上的javascript和后台的java服务之间进行数据交换。目前它可以调用spring的service,当然也可以调用普通的java类方法。jsonGateway可以自动生成所配置的java类的javascript包装类,这将使你能够轻松进行ajax远程调用。jsonGateway使用了JQuery来进行远程调用,同时在服务端使用了jsontools进行json数据格式的转换。
你可以在Sorceforge上下载 http://sourceforge.net/project/showfiles.php?group_id=188794
使用方法:
如果后台我们使用了Spring,那么调用Spring中配置的Service Bean的方法的方式为
:
配置JsonGateway的Servlet: 在web.xml中, 增加
<servlet>
<description>json gateway</description>
<display-name>json gateway servlet</display-name>
<servlet-name>json-gateway</servlet-name>
<servlet-class>org.svilo.spring.json.JsonGatewayServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>json-gateway</servlet-name>
<url-pattern>/json/*</url-pattern>
</servlet-mapping>
在html、jsp页面中,引入如下的javascript:
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/json.js"></script>
<script type="text/javascript" src="/js/moo.js"></script>
<script type="text/javascript" src="/js/jsonGateway.js"></script>
同时也需要引入自动生成的服务代理Javascript:
如果你有一个Spring的服务bean叫做'CustomerMgrService',那么在你的html中,增加如下几行代码:
<script type="text/javascript"src="/json/CustomerMgrService.js"></script> //the CustomerMgrService.js is generated by the JsonGateway
具体在javascript中的使用方法如下:
function testService(){
var callerResponder = new CallerResponder(); //这是ajax的响应回调的封装类
callerResponder.success = function(jsonObj) { //当调用后台方法成功时的回调函数
var customer = jsonObj;
alert(customer.brandName);
alert(this.context.name); //this will display 'wuyu' //我们在调用某个后台服务方法前,设置到CallerResponder上下文中的一些变量,在成功回调函数中,可以通过上下文取出来使用
alert(this.context.age); //this will display '30'
var str = jQuery.toJSON(customer);
var msg = "ajax success: " + str;
alert(msg);
}
callerResponder.error = function(request,settings,e) { //failure callback function, you may not implement it
//调用后台方法出错的回调函数
if (request.status == 500) {
var jsonError = jQuery.parseJSON(request.responseText);
}
if (this.debug ) {
alert("ajax error: " + request.responseText);
alert(e);
}
}
callerResponder.context.name = "wuyu"; //set the data which you will access in callback function 向callerResponder的上下文中设置一些需要在回调函数中访问的数据
callerResponder.context.age = "30";
var customerMgrService = new CustomerMgrService(); //新创建一个远程服务包装的javascript对象
var tagMgrService = new TagMgrService();
var strCustomerId = jQuery("#customerId").val();
//调用后台服务方法
customerMgrService.findByCustomerId(strCustomerId,callerResponder); // 后台的spring配置中名字叫 CustomerMgrService的Bean有一个'public Customer findByCustomerId(String customerId)'方法,所以我们在这里可以调用它,它在后台方法中只有customerId这个参数,在这里,我们在调用时方法参数的最后面增加了一个callerResponder的参数。
}
下载包中的代码缺省只能是调用Spring中配置的服务bean的方法,但是在没有使用spring的程序中,我们也要使用的话,可以修改JsonGatewayServlet.java
public class JsonGatewayServlet extends HttpServlet {
private static Properties services;
public void init() throws ServletException {
super.init();
services = new Properties();
InputStream in =JsonGatewayServlet.class.getClassLoader().getResourceAsStream("services.properties");
try{
services.load(in);
}catch( Exception e){
e.printStackTrace();
}
}
增加一个名字叫做services.properties的服务配置文件,该文件中写上服务名称和对应java类的映射关系,比如:
BranchByArea=com.keygate.adbidplatform.common.service.BranchByArea
最后再修改一下JsonGatewayServlet的getService方法,直接从我们的配置文件中读取服务的配置即可。
private Object getService(HttpServletRequest request,String serviceName) throws Exception {
// WebApplicationContext webappCtx = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext());
// Object service = webappCtx.getBean(serviceName);
Object service = Class.forName((String)services.get(serviceName)).newInstance();
if (service == null)
{
Exception e = new Exception("can not find the service: " + serviceName);
throw e;
}
return service;
}
呵呵,自己编写的这个JsonGateway虽然不是很强大,但是想要从javascript中调用java后台方法已经足够了,同时参数的传递也很对象化。配合jquery使用,感觉不错。
分享到:
- 2007-06-22 11:26
- 浏览 7195
- 评论(8)
- 论坛回复 / 浏览 (6 / 8332)
- 查看更多
相关推荐
客户端可能有一个HTML页面,通过JavaScript调用AJAX发送请求,服务器端使用.NET处理请求,将数据以JSON格式返回。例如,一个简单的获取用户信息的接口: ```javascript // 客户端AJAX请求 function getUserInfo() {...
Ajax(Asynchronous JavaScript and XML)技术允许我们在不刷新整个页面的情况下,实现局部数据的更新,而Json(JavaScript Object Notation)则是一种轻量级的数据交换格式,易于人阅读和编写,同时也方便机器解析...
主要是用到jquery的ajax,java中的hibernate4的调用mysql数据和struts2地址重定向,并把数据转换成json数据,经过html页面中的javascript调用后台数据,有添加,修改,删除,查询等简单功能,适用于有ajax初学者,...
这些文件可能包含了如何在Java中生成和解析JSON的示例,或者是使用Ajax与服务器交换JSON数据的JavaScript代码。通过学习这些文件,开发者可以加深对Java、Ajax和JSON集成的理解,提升Web应用程序的开发能力。 总的...
在本例子中,通过Ajax,用户选择前端的下拉列表(Dropdown List)时,后台Java服务会被调用,但不会导致整个页面的刷新。这提高了用户体验,因为用户可以连续操作而不必等待页面加载。当用户更改下拉选项时,Ajax...
在这个"Highcharts AJAX后台JAVA JSON 曲线报表完美可运行例子"中,我们将探讨如何结合Java后端和JSON数据格式,通过AJAX技术在网页上展示动态曲线报表。 首先,`index_lineAjax.htm`是前端HTML文件,它包含了...
通过这个项目,开发者可以实践DWR的完整流程,从配置到实现JavaScript调用Java方法。 总结来说,DWR是一个强大的工具,使得Web开发者可以方便地构建AJAX应用,实现JavaScript与Java后台的无缝交互,提高用户体验。...
在 Asp.net 中,使用 jQuery 和 Ajax 调用后台方法是一种常见的做法。下面总结了几种常见的调用方法。 有参数的方法调用 在前台使用 jQuery 代码调用后台方法时,需要将参数传递给后台方法。示例代码如下: ```...
4. JSON字符串与JSON对象的转换:在JavaScript中,我们可以使用`JSON.stringify()`方法将JavaScript对象转换成JSON字符串,以便通过Ajax发送;而`JSON.parse()`方法则用于将接收到的JSON字符串解析成JavaScript对象...
AjaxJson 是一种在 Web 应用程序中实现异步数据交换的技术,它结合了 AJAX(Asynchronous JavaScript and XML)和 JSON(JavaScript Object Notation)的优势,使得网页可以在不刷新整个页面的情况下与服务器进行...
在ASP.NET的C#或VB.NET代码中,我们可以创建一个静态的WebMethod,标记为 `[WebMethod]` 或 `[ScriptMethod]`,以便可以从JavaScript直接调用。例如: ```csharp [WebMethod] public static string HelloWorld...
本文将深入探讨如何使用JavaScript调用C#编写的后台方法,并介绍相关技术与实践。 首先,JavaScript作为客户端脚本语言,运行在用户的浏览器上,而C#通常是服务器端的语言,运行在Web服务器上。要实现它们之间的...
通过深入学习这三个示例,你可以熟练掌握Ajax和JavaScript调用WebService的基本方法,这对于开发实时交互的Web应用具有极大的价值。实践这些实例,将有助于你更好地理解和运用这些技术,提升你的Web开发技能。
总的来说,"前台JS (Jquery) 调用后台方法"涉及了JQuery库中的AJAX功能,以及如何利用这些功能创建无刷新的级联菜单。通过理解这些概念和技术,开发者可以构建更高效、响应更快的前端应用,提高用户体验。
在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种创建动态网页的技术,它允许页面在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容。JSON(JavaScript Object Notation)是一种轻量级的...
【标题】"ZTree+Struts2+ajax+json实现checkbox权限树"涉及的技术栈主要集中在前端的ZTree,后端的Struts2框架,以及数据交互中的Ajax和JSON。这个项目的核心目标是构建一个可复选的权限树形结构,用户通过勾选节点...
在IT行业中,Java、Ajax、JSON和jQuery是四个非常关键的技术元素,它们在构建现代Web应用程序时发挥着重要作用。这个“java+ajax+json+jquery完整实例”提供了一个实际的应用场景,展示了如何将这些技术有效地结合在...
Spring MVC、Ajax 和 JSON 是现代Web开发中的关键技术,它们共同构建了高效、动态的用户界面。下面将详细解释这三个技术及其在实际应用中的结合。 **Spring MVC** Spring MVC 是 Spring 框架的一部分,用于构建基于...
"Ajax返回JSON对象"这个主题聚焦于Ajax如何处理JSON(JavaScript Object Notation)数据格式,这是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 1. **Ajax基础**: - **异步通信**:...
在本示例中,我们将探讨如何使用经纬度坐标在离线地图上标注点,并通过Ajax调用后台接口来获取Json数据。这个过程涉及到的技术栈包括Java、JavaScript、OpenLayers、HTML和CSS,这些都是构建Web地图应用的关键技术。...