作者tkcn (小安)
看板java
标题[GWT] 一些常用架构的设计问题
时间Sun Dec 13 20:15:27 2009
话先说在前头,
我对写网页不太在行,
所以这篇文章可能会存在一些严重的错误,
还请各位多多包涵。
---
这篇文章主要是想问,
一些在网页上常见的架构如何在 GWT 上实现,
像是 login page,
还有让每个页面都有共同的 header, bottom。
(以前听老师说过这好像是一个 pattern? 但名字我忘了)
我照着官方的 tutorial 做完以後,
试着想要写一个 login page,
却发现非常的.... 呃~ 棘手 XD
我甚至不知道我应该用纯 GWT 去写,
还是写一个 JSP 做登入,登入完成後再转给 GWT module。
如果用纯 GWT 去写,
跳转页面的部份又改如何做,
应该要用单一 module? 还是多个 module?
直到後来我看了一些讨论, (
http://tinyurl.com/yd5eud6 )
"GWT highly recommends using a single module."
"Typically, there is only a single HTML page,
and different "screens" are manipulated on the client side."
OK, 所以我应该用 GWT 做一个登入的 "screen",
然後在 EntryPoint 做一个 RPC 呼叫,
去判断使用者的 cookie 是否过期,
如果过期了就显示 login screen,
没过期就显示登入後的画面。
於是我写了一个类似这样的东西:
http://snipt.net/javagner
It's work! 但是,我如何知道这样是对的?
事实上,不管是一个 module、两个 module,还是渗了 JSP,
我认为都可以做出相同的功能,
但哪一个方式是我真正应该做的呢?
这是我发这一篇文的主要目的。
接下来就就真的要提出疑问了:
1. 用上面所提的登入方式,
实际运作起来会是:
(1) client 端下载了 EntryPoint
(2) 利用 AJAX 检查是否有登入
(3) Server 端回传登入结果
(4) Client 端显示对应页面
跟其他的网页语言直接在 Server 端检查完後,
便直接将对应画面输出给 Client 端的作法不同。
另外,据我刚才利用 firebug 观察的结果,
步骤 (3) 传回来的结果并没有包含 步骤 (4) 显示的页面,
也就是说,我在步骤 (1) 时,
已经抓取了登入成功和失败时,欲显示的页面了,
这样,会不会有安全性的问题?
ps. 我个人是觉得在写法正确下,不至於有问题,但还是提出来讨论看看 :P
2. 上面的做法只能在进入 EntryPoint 时判断,
那 Session/Cookie 过期时怎麽办?
这边我还没有实际做,
不过我认为应该是在呼叫 RPC 时,
由 Server 端去检查 Session,
如果不合格就丢出 Exception。
Client 端收到 Exception 後就将画面导到 login page.
3. 继续接续上面的问题,
Client 端收到 Exception 时,
可能只是一个画面上的小 Panel 在处理,
我要如何才能把整个画面切换到 login screen 呢?
(RootPanel 通常会在 EntryPoint 手上)
我承认这是一个 Application 常见的简单问题啦 XD
但是毕竟现在处理的是网页,
会不会有其他更适合的 pattern 能够解决这个问题呢?
---
如果我的这篇文章没有什麽严重的误解的话,
我想,是不是可以讨论看看一些在其他语言上常用的架构,该如何用 GWT 实现。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.132.160.117
※ 编辑: tkcn 来自: 220.132.160.117 (12/13 20:17)
1F:推 ken915007:被m起来了!!版主~太少了…之前有用的也可以m起来 12/13 20:37
4F:→ tkcn:感谢楼上 :p 12/13 21:37