如何使用servlets和jsp进行SPA?

我正在尝试使用servlet和jsp页面来完成单页应用程序。 目前我有第一页,这很容易做到:一个servlet转发到相应的jsp。

在导航到第二页时,实施应该如何看待? 我猜应该是ajax调用,servlet会填充必要的数据,但是如何显示第二页的jsp?


JSP是服务器端的UI技术。 Servlet监听特定的URL并重定向到JSP页面。 JSP被编译成一个类(实际上是另一个servlet),被调用(数据将被添加并且内联脚本将运行),并且输出(即HTML)被发送到客户端(浏览器)。 为了到达不同的页面,需要查询服务器(servlet)的另一个url,从而生成另一个html页面。

要创建SPA,您需要像JavaScript这样的客户端技术。 您查询单个html页面的服务器。 例如,由HTML和JavaScript构成的页面(甚至可以是单个JSP的输出,不会感到困惑)发送给客户端(浏览器)并运行JS。 这由一个像AngularJS,EmberJS或Backbone这样的框架来支持。 一旦页面设置,页面内的链接是 (http://example.com/#/ mySecondPage),那么单击它们将再次调用框架(阿贾克斯,查询新的数据服务器),但会留下在同一页上。 然后页面的一些内容可能被新内容替代。


如果它是一个真正的SPA,那么你只需要一个JSP并使用Ajax处理所有功能(在初始页面加载后)。

你看过使用像Angular这样的客户端框架来帮助你吗?

根据SPA的丰富程度,您可以使用相同的servlet或多个servlet来为每个页面提供服务。

除非你正在为一门课程或教程做这件事,并且对于如何实现它有一些限制,否则如果你将诸如Angular之类的东西与Spring之类的服务器端框架结合起来而不是编码servlet,那么你将很可能节省很多时间。 作为一个建议,看看Spring with Angular。


在SPA中,浏览器仅加载文档一次(或者几次,每个子应用一次),并且通常通过AJAX或Websockets完成与服务器的进一步通信。

我建议您将应用程序建模为瘦服务器体系结构,也就是使用浏览器(HTML,CSS,Javascript)运行的客户端应用程序,该应用程序使用服务器提供的Web服务API。

以下是值得了解的一些要点。

  • 客户端:

  • 只有表示逻辑
  • 用URL散列表示状态。 这使书签,超链接和浏览历史。 您的客户端应用程序应该监听URL哈希中的更改并采取相应措施。 这种技术被称为“路由”,它由所有的Javascript框架实现。
  • 客户端应用程序是打包在服务器端的,因此它可以在单个请求中下载(以.html,.jsp,servlet,.jsp + multiple .jspf ...)
  • 使用服务器通过AJAX或Websockets提供的服务
  • 服务器:

  • 提供客户端应用程序下载
  • 提供一个干净的,无状态的API供客户端应用程序使用,比HTML更好地返回JSON(数据)(表示逻辑)(为什么返回生成的HTML而不是JSON是一种糟糕的做法?或者它是?)
  • 使用REST或JSON-RPC框架来创建API。 关于选择什么有很多争议(请看这里或这里)。 在我看来,REST相对于RPC的唯一优势是,由于REST已成为“事实上”的标准,因此它的互操作性更高,因此我对SPA应用程序的建议是使用JSON-RPC,因为您的代码是API的唯一客户端。
  • 客户端和服务器框架有很多选择。

    Javascript:AngularJS,EmberJS或Backbone,...

    REST:Spring,Jersey,Restlet,..

    JSON-RPC:https://en.wikipedia.org/wiki/JSON-RPC#Implementations

    关于JSON-RPC,我个人推荐您使用Brutusin-RPC,这是我创建的具有独特功能的JEE微型框架,例如包括服务存储库浏览器,可以查看部署的服务集,其特性,文档以及测试它们。 这个功能测试模块(参见本演示)本身就是一个使用框架提供的一组内置描述符服务的SPA,因此它也可以为您的应用程序提供一些提示。

    干杯,纳乔

    链接地址: http://www.djcxy.com/p/47891.html

    上一篇: How to do a SPA using servlets and jsp?

    下一篇: Json or html?