2012-08-23 36 views
0

我在寫一個簡單的web應用程序,使用tomcat服務器,servlets和jsp頁面。理想情況下,我希望我的網站只是一個頁面,我在其中加載用戶操作的內容(jsp文件)。使用ajax,我怎樣才能生成可以添加書籤的url?

但是,用戶能夠「書籤」某些URL以直接訪問他們需要的內容也很重要。

例如,假設我有一個頁面詳細說明了我的網站的所有註冊用戶,然後每個用戶都有一個配置文件頁面。我想那個誰導航到某人的配置文件的用戶將看到以下網址:

http://mywebsite.com/users/some_user_name 

,當他們進入這個網址,他們將得到some_user_name的輪廓。

問題是,所有的內容都是使用ajax生成的,我手動更改了使用history.pushState顯示的網址 - 這樣,當您輸入示例網址時,您只需獲得404頁面。

我想到的一個簡單的解決方案是將一個servlet映射到/ users/*模式,並使用正確的jsp頁面進行響應。這是一個合理的解決方案,還是有其他更好的和可接受的方式來處理這種問題?

謝謝:)

+0

從維基本身的AJAX的缺點:'動態網頁更新也使書籤和返回到一個特定的應用程序狀態很困難。存在這個問題的解決方案,其中很多都使用了URL片段標識符。[8] [9] ' 無論如何,這聽起來像你正在使用AJAX只是因爲你可以。如果可能的話,請騰出Web另一個令人討厭的AJAX網頁,並重新考慮你是否真的需要爲整個網站使用AJAX。 –

回答

0

如果您使用pushState的那麼當應用程序是通過您可以採取的網址片段,使Ajax調用並加載的內容的URL直接訪問管理歷史記錄。爲了實現這一切你的URL必須休息兼容,因此會很容易在你的情況下加載正確的觀點也可以是這樣的

http://mywebsite.com/users/profile/some_user_name

所以,現在當應用程序被加載您可以加載輪廓視圖,用戶名some_user_name

,如果你想要一個像編輯其他一些視圖話,就可以

http://mywebsite.com/users/profile/edit/some_user_name

http://mywebsite.com/users/profileEdit/some_user_name

你應該實現一個路由器,該路由器可以路由這些URL正確,也可以從服務器上獲取數據,並通過它的一個主要方法開始查看。

如果您可以使用您的JSP代碼作爲休息Web服務,這可以很容易地實現,也有很多庫支持這樣的事情。你可能想看看Backbone.js /Knockout.js

here是比較流行框架的列表。

但您可能會遇到的問題是搜索引擎優化。這也有一些解決方法。