精華區beta java 關於我們 聯絡資訊
話先說在前頭, 我對寫網頁不太在行, 所以這篇文章可能會存在一些嚴重的錯誤, 還請各位多多包涵。 --- 這篇文章主要是想問, 一些在網頁上常見的架構如何在 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)