淘淘商城系列——單點登入之使用者登入頁面實現
我們來看下login.jsp頁面,如下圖所示。可以看到<input .../>
標籤中並沒有定義onclick方法,只是定義了個id="loginsubmit"
,那麼onclick事件在哪兒定義了呢?
其實是在js程式碼當中定義了,如下圖所示,頁面載入完後就給id為loginsubmit的按鈕添加了onclick事件,當點選這個按鈕的時候,會觸發LOGIN物件的login方法,login方法要先檢查使用者名稱和密碼是否為空,如果為空則彈出alert警告框進行警告,如果都不為空,就呼叫登入方法。這裡需要說明一點的是,登入有可能是從不同的頁面跳轉過來的(比如你在京東購物,在購物車裡新增好了商品,要去結算時,如果沒有登入的話,是需要登入的,但是登入之後還要回到購物車介面的),因此登入成功後還應該回到原來的頁面中。
現在我們來測試登入,由於登入後要跳轉到淘淘商城首頁,因此我們要先啟動淘淘商城相關的所有服務,zookeeper服務、image服務、Solr服務(我這裡用的是叢集版)、Redis服務(我這裡用的是單機版)、ActiveMQ服務。啟動好服務之後,我們依次啟動taotao-manager、taotao-content、taotao-search、taotao-sso、taotao-manager-web、taotao-portal-web、taotao-search-web、taotao-item-web、taotao-sso-web這9個工程,成功啟動完工程後,我們就來測試登入,我們先來輸個錯誤的密碼,如下圖所示。
這樣的話,登入會報空指標異常,如下圖所示,出現空指標是由於登入失敗,result的data值是NULL,因此才會報空指標異常。
要解決這個問題很簡單,在寫入cookie之前,先判斷下是否登入成功,登入成功之後再寫入到cookie,如下圖所示。
修改了UserController類的程式碼,現在我們重新啟動taotao-sso-web工程,啟動好後,我們輸入正確的使用者名稱、密碼進行登入,會發現提示登入成功,點確定後,會跳轉到淘淘商城首頁,如下圖所示。當然了,現在淘淘商城首頁還沒有完全連通起來,所以會發現這個頁面並沒有顯示已登入狀態,而是依舊是未登入狀態。