`

gwt(google web toolkit) 和 spring 在一起使用列子

阅读更多

在开发gwt时,有时需要同spring进行结合使用

 

下面是我根据spring4gwt上给出的相关信息做出来的一个demo

 

1、使用maven对jar包进行管理

 

2、自己写一个继承于RemoteServiceServlet的java文件

 

下面就将spring和gwt结合起来的代码:

主要思想就是

1、将请求解析为spring支持的bean

2、获取请求的方法和参数

3、调用方法和参数,并将结果返回

 

写道
package org.spring4gwt.server;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.SerializationException;
import com.google.gwt.user.server.rpc.RPC;
import com.google.gwt.user.server.rpc.RPCRequest;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;

@SuppressWarnings("serial")
public class SpringGwtRemoteServiceServlet extends RemoteServiceServlet {

private static final Logger LOG = Logger.getLogger(SpringGwtRemoteServiceServlet.class);

// servlet的初始化方法
@Override
public void init() {
if (LOG.isDebugEnabled()) {
LOG.debug("Spring GWT service exporter deployed");
}
}

/**
* RemoteServiceServlet 中调用的方法,处理给定的request信息
*/
@Override
public String processCall(String payload) throws SerializationException {
try {
// 取出要被调用的bean实例
Object handler = getBean(getThreadLocalRequest());
// 对请求进行解码, 获取所有的请求信息, 主要是方法和参数
RPCRequest rpcRequest = RPC.decodeRequest(payload, handler.getClass(), this);
onAfterRequestDeserialized(rpcRequest);
if (LOG.isDebugEnabled()) {
LOG.debug("Invoking " + handler.getClass().getName() + "." + rpcRequest.getMethod().getName());
}
// 使用反射方式调用实例对象的方法, 返回调用结果
return RPC.invokeAndEncodeResponse(handler, rpcRequest.getMethod(), rpcRequest.getParameters(), rpcRequest
.getSerializationPolicy());
} catch (IncompatibleRemoteServiceException ex) {
log("An IncompatibleRemoteServiceException was thrown while processing this call.", ex);
return RPC.encodeResponseForFailure(null, ex);
}
}

/**
* 基于request URL进行的获取实例bean的操作
* 比如说:请求结尾时/myService,那么我们就会将spring中的bean实例为myService
*
* @param request
* @return handler bean
*/
protected Object getBean(HttpServletRequest request) {
String service = getService(request);
// 从spring中的applicationContext中取出bean
Object bean = getBean(service);
if (!(bean instanceof RemoteService)) {
throw new IllegalArgumentException("Spring bean is not a GWT RemoteService: " + service + " (" + bean + ")");
}
if (LOG.isDebugEnabled()) {
LOG.debug("Bean for service " + service + " is " + bean);
}
return bean;
}

/**
* 解析bean的名称,通过request来解析
* 如/spring 会被解析为 spring
* @param request
* @return bean name
*/
protected String getService(HttpServletRequest request) {
// 获得url
String url = request.getRequestURI();
// 对取最后一个"/"后面的内容
String service = url.substring(url.lastIndexOf("/") + 1);
if (LOG.isDebugEnabled()) {
LOG.debug("Service for URL " + url + " is " + service);
}
return service;
}

/**
* 在当前webApplicationContext中取出bean的实例
*
* @param name
* bean name
* @return the bean
*/
protected Object getBean(String name) {
// 调用spring自带的utils
WebApplicationContext applicationContext = WebApplicationContextUtils
.getWebApplicationContext(getServletContext());
if (applicationContext == null) {
throw new IllegalStateException("No Spring web application context found");
}
if (!applicationContext.containsBean(name)) {
{
throw new IllegalArgumentException("Spring bean not found: " + name);
}
}
// 获取bean实例
return applicationContext.getBean(name);
}
}
分享到:
评论

相关推荐

    GWT(Google Web Toolkit)

    GWT(Google Web Toolkit) 是 Google 最近推出的一个开发 Ajax 应用的框架,它支持用 Java 开发和调试 Ajax 应用,本文主要介绍如何利用 GWT 进行 Ajax 的开发。 GWT特性简介  1.动态,可重用的UI组件  GWT提供的...

    Google Web工具包(GWT)编程手册The Google Web Toolkit (GWT) Programming Cookbook

    Google Web Toolkit(GWT)是一个用于开发和优化复杂浏览器端应用的开源工具集,它允许开发者使用Java语言编写前端代码,然后通过编译器将Java代码转换成兼容各主流浏览器的JavaScript、HTML和CSS。《Google Web工具...

    gwt-2.8.2 SDK 最新下载 google web toolkit

    Google Web Toolkit(GWT)是Google推出的一款开源的、基于Java的Web开发框架,它允许开发者使用Java语言来编写前端应用程序。GWT-2.8.2是该SDK的一个版本,提供了最新的特性和改进,旨在简化Web应用的开发流程,...

    Google Web Toolkit 入门

    通过使用Google Web Toolkit (GWT),开发者能够轻松地使用Java语言开发高质量的Ajax应用,不仅简化了开发流程,还提高了开发效率。GWT的强大之处在于其不仅解决了Ajax开发中的常见难题,还提供了一系列高级功能,...

    GWT (GOOGLE WEB TOOLKIT)介绍PPT

    **GWT (Google Web Toolkit)** 是一款由Google开发的开源工具包,专为Java开发者设计,使得他们能够使用Java语言创建高效、动态且交互性强的Ajax应用。GWT通过将Java代码编译成浏览器可执行的JavaScript和HTML,解决...

    Google Web Toolkit Applications

    《Google Web Toolkit Applications》这本书是针对Google Web Toolkit(GWT)这一强大开发工具的深入指南。GWT是一款由Google开发的开源JavaScript框架,它允许开发者使用Java语言来编写Web应用程序,然后自动编译成...

    利用 Google Web Toolkit 在 Java 框架中开发 Ajax 应用程序

    "利用 Google Web Toolkit 在 Java 框架中开发 Ajax 应用程序" 这个标题提到了两个关键技术和一个目的。Google Web Toolkit(GWT)是主要工具,它允许开发者使用 Java 语言来编写前端的 AJAX 应用程序。Ajax,即异步...

    Google Web Toolkit开发实战

    谷歌Web工具包(Google Web Toolkit,简称GWT)是一种开源的Java框架,它允许开发者使用Java语言编写客户端的Web应用程序,然后自动编译为优化过的JavaScript代码。GWT的核心理念是利用Java的强类型、面向对象的特性...

    Google Web Toolkit 开发 Ajax

    **GWT**(Google Web Toolkit)是Google推出的一款用于构建和优化复杂Web前端应用的开发工具包。它通过提供一系列强大的特性,极大地简化了开发流程,使得开发者能够更加高效地构建现代化的Web应用程序。 ##### 1. ...

    Accelerated GWT: Building Enterprise Google Web Toolkit Applications

    《加速GWT:构建企业级Google Web Toolkit应用》是一本深度探讨如何利用Google Web Toolkit(GWT)构建高性能Ajax应用程序的专业书籍。本书作者Vipul Gupta深入解析了GWT的核心功能,以及如何通过GWT生成优化的...

    GWT(googel web toolkit)api帮助手册

    谷歌Web工具包(Google Web Toolkit,简称GWT)是一个开源的Java SDK,它允许开发者使用Java语言来编写客户端的Web应用程序。GWT API帮助手册是开发者理解和使用GWT的关键资源,通常以CHM(Compiled HTML Help)格式...

    Google Web Toolkit Tutorial

    Google Web Toolkit(GWT)是一款由Google开发的强大工具包,它不仅提供了一种简单的方法来构建和优化复杂的Web应用程序,还允许开发者使用Java语言进行前端开发,并在部署时自动将其编译成高效的JavaScript代码。...

    Google Web Toolkit API 文档

    Google Web Toolkit(GWT)是Google推出的一款开源的JavaScript开发框架,它允许开发者使用Java语言来编写前端Web应用。GWT API文档是开发者理解和使用GWT进行开发的重要参考资料,提供了全面的技术指南和API参考。 ...

    google web toolkit 1.5.3

    Google Web Toolkit(GWT)1.5.3是一款由Google开发的开源JavaScript开发框架,它允许Java开发者使用Java语言来构建高性能、跨浏览器的Web应用程序。这个版本是GWT的一个重要里程碑,带来了许多改进和新特性,使得...

    gwt+spring

    GWT(Google Web Toolkit)和Spring是两个在Java开发领域广泛应用的框架。GWT是一个用于构建富互联网应用程序(RIA)的开源工具包,它允许开发者使用Java语言编写客户端代码,然后由GWT编译器转换成优化过的...

    面向 Java 开发人员的 Ajax 探索 Google Web Toolkit

    Google Web Toolkit(GWT)是一款由Google推出的开源框架,专为Java开发者设计,旨在简化和加速Web应用程序的开发过程。它允许开发者使用Java语言编写前端代码,并将其编译成高性能的JavaScript,从而在浏览器上运行...

    gwt+spring+hibernate

    标题 "gwt+spring+hibernate" 涉及的是一个使用Google Web Toolkit (GWT)、Spring框架和Hibernate ORM技术的集成示例。这是一个常见的Web应用开发组合,用于构建高效、可扩展且功能丰富的Java web应用程序。下面将...

    GWT+Spring demo- springgwt_sudoku

    【标题】"GWT+Spring demo- springgwt_sudoku" 涉及的主要知识点是Google Web Toolkit (GWT) 和Spring框架的整合应用。这是一个实际的项目示例,展示了如何将GWT的客户端能力与Spring的服务器端功能相结合,以创建一...

Global site tag (gtag.js) - Google Analytics