GWT版——图书管理程序开发完工
07月 13th, 2006 — Dreamer用GWT(Google-Web-Toolkit)开发的图书管理系统终于完工了。总体评价:
1.界面不美观,简直是很丑陋。因为个人比较懒,而且对艺术一窍不通,再加上是从头开始学习这个东西,所以就比较专注于功能的实现,而不是界面了。
2.功能少。只有公告,用户信息显示,添加和删除,借还书功能。而且没有实现分页功能,这个最失败,今天检查作业的时候老师居然让我一直添加信息,所以一下就把我的这个漏洞给暴露了,哎。关键是添加分页功能有点麻烦,需要自己编写几个控件,又要把函数编写得天衣无缝,现在时间又紧,所以只好作罢。
3.模块化还不错。这次自认为在数据隐藏和模块化部分做的还行。相关的类都放在了一起,而且有相同功能的类都让我提取出来建立了父类,重构真是无处不在阿。正如《重构》中说的那样:“花一点时间重构是值得的”,现在代码优雅多了。
GWT最大的好处就是用JAVA编码,不过个人认为其中的控件布局还挺简单,只要你熟悉JAVA,做几个练习就能掌握了,个人建议把那个GWT自带的展示 Widget 的例子敲一遍。个人认为最不好懂的就是GWT中的异步传输,就是和server端交互的那一段,虽然GWT的文档中有说明,不过理解起来还是有点困难,大家最好看一下GWT自带的DynaTable例子,里面虽然没有连接数据库,但是给出了如何与服务器端交互。我在这里以DynaTable(在Gwt中的sample文件夹里)再说明一下步骤:
1.在client包里建立一个接口:SchoolCalendarService,它必须继承com.google.gwt.user.client.rpc.RemoteService;,其中声明一个方法:
这里的Person是一个类名,保存关于Person的信息,因为这个方法返回一个对象数组,所以要这样声明。
2.再在client中建立一个接口:SchoolCalendarServiceAsync,不用从任何类继承,里面也有一个方法:
它和上面建立的SchoolCalendarService只有两个地方不同:
1.返回类型是void,这点要记住。
2.多了一个参数:AsyncCallback 。这个是用来异步传输的,这也是返回类型是void的原因。
3.在Server端建立一个类:
SchoolCalendarService
它必须执行第一步声明的SchoolCalendarService,并实现它的方法。这里有一个问题:当我从数据库中读取数据并传给对象数组的时候,如果直接对这个对象数组操作,会出现错误。我不知道怎么回事。不过可以先声明一个ArrayList,然后没读取一条记录,就声明一个对象,赋值之后再添加到ArrayList中,最后再声明一个对象数组,操作后再传回去,象这样:
return results;
…………
while(rs.next()){
BookInfo temp = new BookInfo();
temp.setTitle(rs.getString("title"));
temp.setAuthor(rs.getString("author"));
temp.setIndex(rs.getString("index"));
temp.setPlace(rs.getString("place"));
temp.setPrint(rs.getString("print"));
temp.setPublish(rs.getString("publish"));
content.add(temp);
}
…………
BookInfo[] results = new BookInfo[content.size()];
for(int i=0;i<content.size();i++)
results[i] = (BookInfo)content.get(i);
4.最后在客户端获取数据的时候,这样做(这个也可以从文档中看到):
AsyncCallback callback = new AsyncCallback(){ results = (PublicInfo[])result; } public void onFailure(Throwable caught){
ServiceDefTarget target = (ServiceDefTarget)bulService;
target.setServiceEntryPoint("/bulletin");
public void onSuccess(Object result){
……
…………
}
};
bulService.getBulletin(callback);
这里我只想着重说明红色部分,其它的说明文档中有详细说明。
target.setServiceEntryPoint("/bulletin");
这一点很重要,你设置这个的时候,必须在程序的xml文件中同时设置servlet,这样写:
必须要这样做,不然就会出错!!
results = (PublicInfo[])result;
由于传回来的只是一个对象,所以你必须使用强制类型转换才能操作。
以上就是与服务器端交互的说明。
再来说一下我自己的程序。我的程序最外层是一个DeckPanel,它有一个z坐标,所以它每次都显示其中的一个子页面,我就是用这个来做页面切换。后台用了ACCESS数据库,用Eclipse编码,使用JDBC-ODBC连接数据库,不过如果要连接数据库比须要先配置ODBC。其它的东西我就不多说了。如果有谁需要源代码的话,可以给我留言,留下E-Mail,我可以给你传过去。
更新:这个东西是我好久前做的,当时GWT还是beta,而且版本很低,现在估计已经有了很大改进,所以我这个东西早就是老古董了,代码我好像也丢了,就不发送了,抱歉。
本文链接: http://www.zhuoqun.net/html/y2006/150.html 转载请注明出处,谢谢。
TrackBack引用地址:http://www.zhuoqun.net/html/y2006/150.html/trackback









谢谢,能否给我份源码?
julycoolboy@gmail.com
谢谢,能否给我份源码?
gaolei_1024@163.com
能否发份源码,学习下!
邮箱:yangbaobao8827@163.com
谢谢 拜读一下 能否给我份源码? jiujiu_77@163.com
谢谢!能否给份源码学习一下!polkmn0987@163.com
刚学习GWT,能否发一份源码学习,谢谢!!!
刚忘了写邮箱了,zyang-093@163.com 谢谢
麻烦你给我发一份,谢谢。Pine_850827@hotmail.com
谢谢,学习GWT中,一直没找到数据库的好方法,麻烦给一份代码吧。
huangh0621@gmail.com
请给我发一份源码,谢谢!
allenchue#gmail.com
请发份源代码给我好吗, 我也在学习中, 先谢了. znfsouth@gmail.com
急需连数据库的源码,如能提供,非常感谢!!!
muou55555@163.com
真的很谢谢…….
我们也正在用GWT开发,发份源码一起讨论下哈,谢谢
zhanglilei326@gmail.com
汗~~怎么这么多要源码的?[eek]
麻烦这位大哥给小弟传一份源码! email: saint112403@sina.com 不胜感激!!![tea]
给我发份代码哈~!
33790310@qq.com
请发一份源码给我学习学习。
chunlinyao {at] gmail.com
这位大哥,能否发给小弟一分可以直接导入eclipse并运行的工程!小弟现在还是个菜鸟,恳求您的帮助,非常感谢!
email: saint112403@sina.com
谢谢,我也需要一份。顺便问一下,操作数据库的类必须放到client包下吗?是否可以放到server包下?
xzgf2004@gmail.com
请给我发一份源码,谢谢!
tim5305@gmail.com
不好意思, 在我运行这个程序的时候, 当我登入图书馆。。。它说
[ERROR] Uncaught exception escaped
java.lang.ClassCastException: com.google.gwt.user.client.ui.DockPanel
问题应该在这一句
“((DeckPanel)panel.getParent().getParent().getParent().getParent()).add(user)“
我想请教一下这是什么问题,
我怎样才能做到切换业面
to tim:不好意思,GWT我只是用来做了一次大作业,现在已经差不多全部忘记完了,而且当时我使用的是某个版本的beta版。所以我也不知道它为什么不能运行了,抱歉了
要源码?直接去http://code.google.com/webtoolkit/
请教这位好心大哥一个问题,帮我看看这是个什么错误?
[ERROR] Unable to instantiate 'com.dreamer.server.BulletinServiceImpl'
java.lang.ClassNotFoundException: com.dreamer.server.BulletinServiceImpl
在访问服务器端类的时候总有错误,是什么原因?
to monster:抱歉。GWT我只是用来做了一次大作业,现在已经差不多全部忘记完了,所以也不清楚错误状况了,可能是GWT版本更新了
我非常需要 发个给我 谢谢大虾““““““““““邮箱:ericjohns1984@sina.com
我也想要 麻烦也发一份给我吧 谢谢啦:)
renyun2551@sohu.com
我在用GWT做一个后台工具, 在入门的阶段, 能发我一份源码参考吗?谢谢
我的email是:leizhenheng@yahoo.com.cn
tsmood@gmail.com
非常感谢!
给我一份,谢谢~
li_hy2004@163.com
我也刚接触gwt,找了个例子稍改了点弄到eclipse里面,报错] Deferred binding failed for 'whut.cs.ll.Test.client.MyInterface'; expect subsequent failures,查了好久实是不知道原因,望指点啊!
gwt.xml:
<module>
<!– Inherit the core Web Toolkit stuff. –>
<inherits name='com.google.gwt.user.User'/>
<!– Specify the app entry point class. –>
<entry-point class='whut.cs.ll.Test.client.myAjax'/>
<servlet path='/myAjax' class='whut.cs.ll.Test.server.MyInterfaceImpl'/>
</module>
代码发不上来啊,郁闷死了
求求你给我发个代码吧,
leoglee@gmail.com
我也想拥有一个自己的代码, 请批我一个把[smile]
麻烦给我发一份代码,正在做一个连接数据库的 非常需要 谢谢!!!
chaoxxin@gmail.com
你好给我也传一份行不?谢谢啦:)
coderchang@yahoo.com.cn
可以给我发吗 我的邮箱是wangkobe214@163.com
谢谢 我也在学习使用gwt
刚学习GWT,能否发一份源码学习,邮箱fuzhousea@163.com。谢谢!!!
刚学习GWT,能否发一份源码学习,邮箱zenghui198423@gmail.com谢谢!!!
我写这个的时候GWT好像才是beta,很老的东西了,估计不会适用的,源码我也找不到了,抱歉了