我正在编写一个简单的Web应用程序,使用tomcat服务器,servlet和jsp页面。理想情况下,我希望我的网站只是一个页面,我在其中加载用户操作的内容(jsp文件)。
然而,用户能够“标记”某些网址以直接获取他们需要的内容也很重要。
例如,假设我有一个页面详细说明了我网站的所有注册用户,然后每个用户都有一个个人资料页面。我希望导航到某人个人资料的用户会看到以下网址:
http://mywebsite.com/users/some_user_name
并且当他们输入此URL时,他们将访问some_user_name的配置文件。
问题是所有内容都是使用ajax生成的,我手动更改了使用history.pushState显示的网址 - 这样当您输入示例网址时,您只需获得404页面。
我想到的一个简单的解决方案是将servlet映射到/ users / *模式,该模式使用正确的jsp页面进行响应。这是一个合理的解决方案还是有其他更好和可接受的方法来处理这类问题?
谢谢:)
答案 0 :(得分:0)
如果您使用pushState管理历史记录,那么当直接通过url访问应用程序时,您可以获取url片段并进行ajax调用并加载内容。为了实现这一点,你的所有网址都必须符合要求,以便在你的情况下很容易加载正确的视图,它可以是这样的
现在,当加载应用时,您可以加载个人用户名 的个人资料 的个人资料视图
如果您想要其他视图,例如编辑,则可以
或
你应该实现一个路由器,它可以正确地路由这些URL,也可以实现一个主要方法,它可以从服务器获取数据并将其传递给视图。
如果您可以将JSP代码用作休息Web服务,这可以轻松实现,并且还有许多库支持这样的事情。你可能想看看Backbone.js /Knockout.js
here是带有比较的流行框架列表。
但您可能遇到的问题是SEO。这也有一些解决方法。