- 浏览: 371421 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (148)
- java (89)
- flex (7)
- sns (3)
- jquery mobile gwt html5 (1)
- VirtualBox Centos 安装 (2)
- tomcat (1)
- nginx (2)
- centOS (7)
- memcache (2)
- hadoop (3)
- hbase (3)
- install (1)
- cloudera (3)
- tools (0)
- gen code (0)
- Mysql (2)
- KinderEditor (1)
- flash chart (1)
- ntsysv (1)
- hibernate search (2)
- compass (1)
- lucence (2)
- hibernate (1)
- jboss cache (0)
- 二级缓存 (1)
- maven (1)
- debian (1)
- go (1)
- golang (2)
- html5 (1)
最新评论
-
llh1985:
wave牛人~~求联系~~~邮箱llh1985@163.com ...
GWT Wave 开源代码运行跑通分析(1) -
zhengliming123:
[img][img][*][*][/flash][*]|[/i ...
hibernate Search 学习研究 附件是maven工程 -
di1984HIT:
写得很嗯好啊。
CentOS 安装 hadoop hbase 使用 cloudera 版本。(一) -
itfanr:
楼主写的真好 本地godoc
Golang 1.0 文档使用。godoc ,go 命令 学习 ,本地运行 gotour -
phe441:
灰常感谢楼主,爱死你了
URL rewrite 3.2 jar 和 文档 pdf 下载
1,在GWT中可以直接将一个pojo对象由server传送到client.
比如:
一个序列化的User对象.是JDO保存到数据库的POJO.
注意:这个POJO必须放到client包下面.否则会有问题.
package com.i.web.desktop.client; import javax.jdo.annotations.IdGeneratorStrategy; import javax.jdo.annotations.IdentityType; import javax.jdo.annotations.PersistenceCapable; import javax.jdo.annotations.Persistent; import javax.jdo.annotations.PrimaryKey; import com.google.gwt.user.client.rpc.IsSerializable; @PersistenceCapable(identityType = IdentityType.APPLICATION) public class User implements IsSerializable { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Long id;/* 用户主键 */ @Persistent private String userName;/* 用户名 */ @Persistent private String loginName;/* 登录名 */ @Persistent private String passwd;/* 密码. */ @Persistent private String email;/* 电子邮件. */ public User(Long id, String userName, String loginName, String passwd, String email) { super(); this.id = id; this.userName = userName; this.loginName = loginName; this.passwd = passwd; this.email = email; } public User() { } /*省略getset方法.*/ }
这里要有默认的构造函数.
在client包下面.
并且要实现接口implements IsSerializable
这样才可以将这个序列化的对象传送到客户端.
2,这里可以传送的参数只有基本类型,基本类型的分装类.和实现序列化的类.
所以这里可以传入的参数没有List,Set之类的.虽然可以使用
/**
* @gwt.typeArgs <com.i.web.desktop.client.User>
*/
注释将返回的list类型设置下.但貌似还有点问题.调试成功.
所以就用了User[] 的数组进行list的传递.
代码也是要改下.
public User[] getAllUser() { PersistenceManager pm = PMF.get().getPersistenceManager(); try { javax.jdo.Query query = pm.newQuery(User.class); List<User> results = (List<User>) query.execute("Smith"); User[] users = new User[results.size()]; results.toArray(users); return users; } catch (Exception e) { e.printStackTrace(); return null; } finally { pm.close(); } }
这里直接使用了一个List下面的方法results.toArray(users);将list转换成User[] 数组了.
这样测试是可以实验成功的.
final UserActionAsync userAction = GWT.create(UserAction.class); userAction.getAllUser(new AsyncCallback<User[]>() { public void onFailure(Throwable caught) { // TODO Auto-generated method stub } public void onSuccess(User[] result) { // TODO Auto-generated method stub System.out.println("get size:"+result.length); for (int j = 0; j < result.length; j++) { System.out.print(result[j].getUserName()); System.out.print(result[j].getId()+""); System.out.println(result[j].getPasswd()); } } });
在client进行调用.可以显示User[] 数组.
总结:
1,可以把一个JDO对象当作一个参数传从server传到client.
前提是这JDO对象在client包下.实现了IsSerializable 接口,有自己的构造函数.
2,没有能将List直接传到client.而是用List.toArray()转换之后在进行操作.
2在Client进行分层设计.
可以将页面变成一个一个小的面板.每一个面板里面都可以做为一个单独的类.
在这个单独的类里面进行操作.
比如在初始化页面:
调用登录面板:
public void onModuleLoad() { System.out.println("系统加载的时候显示...."); LoginPanel loginPanel = new LoginPanel(); loginPanel.show(); loginPanel.center(); /*在ModuleLoad()方法调用的时候,初始化登录按钮.*/
登录面板是另一个java类.
import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.DialogBox; import com.google.gwt.user.client.ui.Grid; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.PasswordTextBox; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.TextBox; public class LoginPanel extends DialogBox { private final UserActionAsync userAction = GWT.create(UserAction.class); public LoginPanel() { setText("用户登录"); final Grid grid = new Grid(3, 3); grid.setWidget(0, 0, new Label("登录名:")); final TextBox loginName = new TextBox(); grid.setWidget(0, 1, loginName); grid.setWidget(1, 0, new Label("密码:")); final PasswordTextBox passwd = new PasswordTextBox(); grid.setWidget(1, 1, passwd); final Button loginButton = new Button("登录", new ClickHandler() { public void onClick(ClickEvent event) { // hide(); userAction.userLogin(loginName.getValue(), passwd.getValue(), new AsyncCallback<String>() { public void onSuccess(String result) { System.out.println("sssssssss" +result); if("".equals(result)){ Window.alert("用户名密码错误!"); }else{ hide(); RootPanel.get().add(new Label("登录成功.")); ForumsPanel forumsPanel = new ForumsPanel(); RootPanel.get().add(forumsPanel); } } public void onFailure(Throwable caught) { } }); } }); grid.setWidget(2, 0, loginButton); final Button RegisterButton = new Button("注册", new ClickHandler() { public void onClick(ClickEvent event) { hide(); RegisterUserPanel registerUserPanel = new RegisterUserPanel(); registerUserPanel.show(); registerUserPanel.center(); } }); grid.setWidget(2, 1, RegisterButton); setWidget(grid); } }
在登录面板下面还有一个注册面板.
import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.DialogBox; import com.google.gwt.user.client.ui.Grid; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.PasswordTextBox; import com.google.gwt.user.client.ui.TextBox; public class RegisterUserPanel extends DialogBox { private final UserActionAsync userAction = GWT.create(UserAction.class); public RegisterUserPanel() { setText("用户注册"); final Grid grid = new Grid(5, 5); grid.setWidget(0, 0, new Label("用户名:")); final TextBox userName = new TextBox(); grid.setWidget(0, 1, userName); grid.setWidget(1, 0, new Label("登录名:")); final TextBox loginName = new TextBox(); grid.setWidget(1, 1, loginName); grid.setWidget(2, 0, new Label("密码:")); final PasswordTextBox passwd = new PasswordTextBox(); grid.setWidget(2, 1, passwd); grid.setWidget(3, 0, new Label("email:")); final TextBox email = new TextBox(); grid.setWidget(3, 1, email); final Button RegisterButton = new Button("返回", new ClickHandler() { public void onClick(ClickEvent event) { hide(); LoginPanel loginPanel = new LoginPanel(); loginPanel.show(); loginPanel.center(); } }); final Button loginButton = new Button("注册", new ClickHandler() { public void onClick(ClickEvent event) { // hide(); String errorMsg = ""; if ("".equals(userName.getValue())) { errorMsg += "用户名,"; } if ("".equals(loginName.getValue())) { errorMsg += "登录名,"; } if ("".equals(passwd.getValue())) { errorMsg += "密码,"; } if ("".equals(email.getValue())) { errorMsg += "email,"; } if ("".equals(errorMsg)) { userAction.saveUser(userName.getValue(), loginName .getValue(), passwd.getValue(), email.getValue(), new AsyncCallback<Void>() { public void onSuccess(Void result) { Window.alert("注册成功,请重新登录."); hide(); LoginPanel loginPanel = new LoginPanel(); loginPanel.show(); loginPanel.center(); } public void onFailure(Throwable caught) { } }); } else { Window.alert(errorMsg + "不能为空."); } } }); grid.setWidget(4, 0, loginButton); grid.setWidget(4, 1, RegisterButton); setWidget(grid); } }
注册成功之后将信息保存到数据库.然后再跳回到登录页面.
这样就用GWT实现了两个页面的切换.
显示最简单的两个登录注册面板.
代码还在整理当中.还想添加些其他的功能.
3.关于GoogleApps
登录:http://appengine.google.com/
登录之后你可以注册 10 个 应用的名称:
然后在上传apps的代码的时候指定 名称的名字:
这样你就可以在一个帐号下面同时管理 10 个应用:
说明:这个名称不一定是你自己的邮件的名字.当然可以是相同的.也可以是不同的.
先申请了先得到.
不用也先占着几个好名字吧.做自己的网站的名字.
google的apps还是很吸引我的想做点东西.从最简单的开始.从实践开始.
同时希望能够和大家一起学习进步.有不对的地方还请多指教.
评论
个人认为,这个pojo是作为client和service之间的数据传递用的,c/s都可以访问得到,应该放在shared包下,更合理。
而且,我的项目中都是放在shared包下,也没有问题。
或许是版本问题,我现在用的gxt3,刚看到你写的时候是gxt1.7
个人认为,这个pojo是作为client和service之间的数据传递用的,c/s都可以访问得到,应该放在shared包下,更合理。
而且,我的项目中都是放在shared包下,也没有问题。
发表评论
-
在CSDN上面也开通了博客
2013-02-27 22:41 906在CSDN上面也开通了博客 CSDN 现在发布文章 ... -
resin 服务器学习 配置 单点和 集群
2011-12-08 00:45 2064使用的 resin 4 服务器 ... -
CentOS 安装 Memcache 服务器. java 做客户端.
2011-11-07 18:35 37051,下载安装第三方源: CentOS 6 或 R ... -
CentOS rpm 安装 java 环境 tomcat nginx.
2011-11-03 19:17 7494首先测试更新. yum update ... -
android 源文件 zip包下载.地址
2011-06-20 15:19 1877android 源文件 zip包下载. 网络上面提供了 ... -
读取 jpa 的配置文件.添加自己的属性.
2011-06-15 16:03 1795package com.freewebsys.sns.c ... -
构建富客户端程序 GWT2.3 + Guice3.0 + hibernateJPA 程序代码
2011-05-05 11:44 1596构建富客户端程序 GWT2.3 + Guice3.0 + ... -
Guice 3.0 学习 persist jpa
2011-03-18 17:39 1536guice 3.0 的 persist 实现 使用的是 ... -
自己弄 开源 CMS 内容发布系统 主要表设计。
2011-03-10 11:34 3838--CMS栏目表 CREATE TABLE ... -
坚信 Debian是比Ubuntu更稳定的操作系统
2011-03-07 14:28 2304坚信 Debian是比Ubuntu更稳定的操作系统 自 ... -
eclipse 3.6 sp2 减肥记录
2011-03-04 09:46 1668喜欢 eclipse 但是 发现 eclipse 的功能很多 ... -
记录 2010 01 12 开始 给 自己 2 年 的时间 去弄 一个 gwt sns
2011-01-13 12:57 1313记录 2010 01 12 开始 给 自己 2 ... -
mac os x86 下 intel 无限驱动下载
2011-01-09 10:45 1413是在 googlecode 的项目 http://co ... -
Macos 下面 开源软件 下载
2011-01-06 16:06 1893macos 常用 软件 下载 macos 官方网站下载 ... -
Ubuntu 更新文件 桌面 菜单丢失, 打算 换 mac os
2011-01-04 11:32 2023ubuntu 是 2009 年 安装 ... -
做 一个 sns 的项目 考虑 使用 GWT 做 前台 后台 spring hibernate 如何 ?
2010-12-27 12:48 1466做 一个 sns 的项目 考虑 使用 GWT 做 前台 后台 ... -
Goolge appengine 又可以用了。高兴啊。。
2010-12-15 09:37 739突然想访问下自己的应用。 发现 自己的 appengi ... -
将google app engine 进行 本地化 可写文件 创建线程 去除白名单
2010-12-10 17:36 1912最近 看到 appgeng 被 ... -
设计 一个 oa 当中 的日历显示 跳转 上月 下月
2010-12-01 13:36 1350主要就是利用 java的Calendar 类 ... -
设计实现 一个 基于extjs2.0 做皮肤的 struts2 样式
2010-11-29 14:37 1815想法在 一年前 产生的。 首先使用 extjs2.0 ...
相关推荐
**GWT1.7 学习之 了解基本的使用** Google Web Toolkit(GWT)是一种开源的Java框架,用于构建高性能的、跨浏览器的Web应用程序。GWT1.7是GWT的一个早期版本,虽然现在已经有了更新的版本,但学习它的基本使用仍然...
自己做的GWT 1.7的API文档 有需要的可以下载
通过研究源码,我们可以学习到GWT如何将Java代码编译成JavaScript,以及它是如何处理事件、异步通信和UI渲染的。这有助于开发者在遇到问题时进行调试,同时也能为自定义功能和性能优化提供可能。 ### 2. 开发工具 ...
GWT(Google Web Toolkit)是Google推出的一款开源的JavaScript开发框架,它允许Java开发者使用Java语言来编写Web应用,然后自动生成优化过的JavaScript代码。"gwt-windows-1.7.1"指的是GWT的一个特定版本,即1.7.1...
**GWT(Google Web Toolkit)** 是一个由Google开发的开源JavaScript开发框架,它允许开发者使用Java语言来编写Web应用程序,然后自动编译为优化过的JavaScript代码,从而在客户端浏览器中运行。GWT的设计目标是简化...
根据给定文件的信息,我们可以深入探讨GWT-RPC(Google Web Toolkit Remote Procedure Call)的核心概念、开发流程以及在不同模式下的测试方法。 ### GWT-RPC:大想法 GWT-RPC提供了一种机制,允许客户端...
在这个“GWT RPC详细例子:代码加文档说明”的资源中,我们可以深入学习GWT RPC的使用方法。 首先,环境搭建是开始GWT开发的第一步。你需要安装Java Development Kit (JDK),确保版本符合GWT的要求。接着,下载并...
8. **历史管理**:GWT的History API允许应用程序创建和管理URL片段,实现页面状态的导航,而无需刷新整个页面。 9. **单元测试**:GWT提供JUnit支持,允许在浏览器环境中进行客户端代码的单元测试。 10. **CSS和...
完整代码,绝对能用:Spring和...GWT部分集成了Spring的Service(网上的例子很少,要不代码不全,要不不能使用,这个保证完全可以使用)。请注意各个配置文件,程序所用的包都在WEB-INF下的图片上,请自行下载。
根据提供的文件信息,我们可以深入探讨GWT-RPC的相关知识点,主要围绕其概念、开发流程以及部署等几个方面展开。 ### GWT-RPC:基础知识与概念 #### RPC:远程过程调用 RPC(Remote Procedure Call)是一种协议,...
最新版本的GWT的原版英文参考手册,如果需要其他的版本,请在我的资料库中查找……
同时,你将接触到GWT Ext的布局管理,学习各种布局模式如绝对布局、网格布局、表格布局等,以便更灵活地设计页面结构。 第三部分:实战应用与最佳实践 这一部分将通过实例展示gwtext和GWT Ext在实际项目中的应用。...
2. **RPC机制**:RPC(Remote Procedure Call)是一种分布式计算技术,使得一个程序可以调用位于另一台机器上的程序,就像调用本地函数一样。GWTRPC是GWT实现的特定于Web的RPC机制,它通过HTTP协议在客户端和服务器...
根据给定文件的信息,我们可以深入探讨GWT-RPC(Google Web Toolkit Remote Procedure Call)的高级特性,特别是关于处理多线程、部署以及异步方法的处理。这些知识点对于理解和运用GWT-RPC进行高效Web应用开发至关...
标题 "gwt学习的书籍分享" 提供了一个线索,表明我们即将探讨的是关于Google Web Toolkit (GWT) 的学习资源,特别是2007年出版的一本书籍《Packt Publishing - GWT Java AJAX Programming》。GWT是一个开源的Java...
通过这个项目,开发者可以学习到GWT中的Widget库,如TextBox、Button等控件的使用,以及数据模型和视图之间的交互,还有可能涉及到数据持久化和异步服务调用(通过GWT的RPC机制)。 **StockWatcher.zip** 另一个...
GWT(Google Web Toolkit)是一个开源的Java开发框架,它允许开发者使用Java语言来编写客户端的Web应用程序。GWT-Servlet是GWT框架的一部分,主要负责处理服务器端的交互。`gwt-servlet-2.3.0.jar`是GWT 2.3.0版本的...
例如,一个示例可能展示了如何创建一个按钮控件,当用户点击按钮时,通过GWT的RPC机制向服务器发送请求,获取数据并更新页面上的显示。另一个示例可能涉及使用GWT的Composite类来组合多个Widget,创建自定义的复杂...
中级教程可能还会讲解到GWT的异步通信机制——`com.google.gwt.user.client.rpc.RemoteService` 和 `com.google.gwt.user.client.rpc.ServiceDefTarget`,它们用于实现客户端与服务器间的RPC(Remote Procedure Call...
5. **异步通信**:GWT支持AJAX技术,使得Web应用能够实现页面无刷新的交互体验,通过`com.google.gwt.user.client.rpc.RPC`服务进行服务器端调用。 6. **开发工具**:GWT提供了一个强大的集成开发环境(IDE)插件,...