推 tkcn:我倒覺得 GWT 是故意要跟網頁做出區別,主打 Web App 12/14 00:34
※ 引述《tkcn (小安)》之銘言:
: 話先說在前頭,
: 我對寫網頁不太在行,
: 所以這篇文章可能會存在一些嚴重的錯誤,
: 還請各位多多包涵。
話也說在前面
什麼「豬屎被疼」的東西我不懂(正確來說,我啥都不懂)
以下請當作拋磚引玉的無學問土砲想法
: ---
: 這篇文章主要是想問,
: 一些在網頁上常見的架構如何在 GWT 上實現,
: 像是 login page,
: 還有讓每個頁面都有共同的 header, bottom。
如果純粹靜態的東西(例如:Logo、聯絡資訊)
可以直接刻在 html 裡頭
如果是動態產生的東西,那... 就用 Java(OO)的角度去想吧
: 我照著官方的 tutorial 做完以後,
: 試著想要寫一個 login page,
: 卻發現非常的.... 呃~ 棘手 XD
: 我甚至不知道我應該用純 GWT 去寫,
: 還是寫一個 JSP 做登入,登入完成後再轉給 GWT module。
: 如果用純 GWT 去寫,
: 跳轉頁面的部份又改如何做,
純粹講「跳轉頁面」是
Window.open("_self", A_URL, "");
順便廣告:http://sites.psmonkey.org/pt2wiki/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,
: 我認為都可以做出相同的功能,
: 但哪一個方式是我真正應該做的呢?
抱歉,其實我英文很爛、程式也不太行
所以那個討論跟程式碼我都沒有看 [毆飛]
qrtt1 給的第二個連結看不懂所以沒看 [淚奔]
我只能說,自從我被迫看了幾個月的 ASP
也寫了幾個月的 PHP、trace 了一些 CodeIgniter 的 code
當然還有 trace 一些不太大,但是用了也沒出事的 project
我會有種錯覺,就是:
考慮這種問題,簡直是屁.....
股很堅固可以好好久坐的人該研究的事情 (o 版主別打我)
這種事情哪有什麼對不對,只有出不出包
在出不出包之前要先考慮寫不寫的出來.... [遠目]
嗯... 都說是錯覺了... 所以讓我們回到主題上 [毆飛]
如果讓我來想 login 這個問題
基本上我一定二話不說,把 login 這檔子事情歸在 GWT 範圍以外
事實上,應該可以很合理懷疑 google 是這樣子作 login 的
(至少網址改變了)
(迷之聲:你是不會用 Firebug 之類的東西 trace 一下喔?)
(答:ㄜ... 不會用 [毆飛])
這可能跟 SSO/HTTPS 的議題有關?
不過我都沒碰過,所以純屬胡說八道 [再度毆飛]
我想要抽出去到 GWT 以外的地方
主要是覺得,這跟 GWT 拿手 or 要解決的目標無關
如果對於 GWT 而言,只是要 server 給個 true/false
實質上跟實際的程式內容理論上無關
而抽出去用原始的方法作,也沒什麼不好
讓 GWT 的部份更單純專一,感覺不錯
: 這是我發這一篇文的主要目的。
: 接下來就就真的要提出疑問了:
: 1. 用上面所提的登入方式,
: 實際運作起來會是:
: (1) client 端下載了 EntryPoint
: (2) 利用 AJAX 檢查是否有登入
: (3) Server 端回傳登入結果
: (4) Client 端顯示對應頁面
: 跟其他的網頁語言直接在 Server 端檢查完後,
: 便直接將對應畫面輸出給 Client 端的作法不同。
: 另外,據我剛才利用 firebug 觀察的結果,
: 步驟 (3) 傳回來的結果並沒有包含 步驟 (4) 顯示的頁面,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
這句話對我來說,有功能切割上的毛病
我會一個 RPC 決定 login 與否
然後才是一個 RPC 來真正 fetch 資料
: 也就是說,我在步驟 (1) 時,
: 已經抓取了登入成功和失敗時,欲顯示的頁面了,
^^^^^^^^^^^^^^^^?
: 這樣,會不會有安全性的問題?
: ps. 我個人是覺得在寫法正確下,不至於有問題,但還是提出來討論看看 :P
理論上一定有
我目前還沒看到(也可以說沒關心 & 沒能力)GWT 的安全性問題
但是,反過來講
真正關鍵的資料內容還是從 server 傳過來
js 裡頭只是決定「畫面格式」跟「資料格式」
那麼,就算針對 js 解讀成功,還是沒辦法拿到真正關鍵的資料
: 2. 上面的做法只能在進入 EntryPoint 時判斷,
: 那 Session/Cookie 過期時怎麼辦?
: 這邊我還沒有實際做,
: 不過我認為應該是在呼叫 RPC 時,
: 由 Server 端去檢查 Session,
: 如果不合格就丟出 Exception。
: Client 端收到 Exception 後就將畫面導到 login page.
以傳統 JSP 的作法
應該是由 filter 之類的方式來檢查「每一個」request
我想,要考慮安全,這是免不了的
(還好 GWT RPC 有 Exception 可以用,寫起來輕鬆一點 XD)
: 3. 繼續接續上面的問題,
: Client 端收到 Exception 時,
: 可能只是一個畫面上的小 Panel 在處理,
: 我要如何才能把整個畫面切換到 login screen 呢?
: (RootPanel 通常會在 EntryPoint 手上)
: 我承認這是一個 Application 常見的簡單問題啦 XD
: 但是畢竟現在處理的是網頁,
: 會不會有其他更適合的 pattern 能夠解決這個問題呢?
: ---
: 如果我的這篇文章沒有什麼嚴重的誤解的話,
: 我想,是不是可以討論看看一些在其他語言上常用的架構,該如何用 GWT 實現。
有時候覺得 GWT 紅不起來
一方面是沒有一個更 high level 的 framework
另一方面是,以往針對網頁環境的概念跟架構
可能都不能馬上(或著不能?)轉移到 GWT 上頭
得重新思考驗證這樣?
當然,對於一個沒用過 Struts 之類東西的人
講這話好像有點大言不慚...
以上有誤還請各方大德不要客氣...
--
侃侃長論鮮窒礙
眾目睽睽無心顫 Blog:http://blog.psmonkey.org
煢居少聊常人事
殺頭容易告白難 歡迎參觀 Java 版(@ptt.cc)精華區 \囧/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.20.190.68