我最近一直在研究JAX-RS因为我非常喜欢Java平台和REST风格的Web开发。我已经阅读了很多关于使用JAX-RS创建RESTful Web服务的内容,但是是否可以使用JAX-RS创建RESTful网站?我想更具体地说,是否可以使用JAX-RS作为控制器(从服务器检索所需的数据),然后将控制转发给视图引擎以呈现适当的HTML?
我一直在谷歌搜索,但没有找到任何资源,告诉你如何做到这一点。
感谢您的任何见解/帮助。
答案 0 :(得分:6)
我认为你的谷歌搜索有困难,因为没有多少人这样做。 JAX-RS是为Web服务而设计的,因此开发人员不会将其用作Web应用程序的控制器。但是,它没有理由不起作用。
查看此博文:JAX-RS as the one Java web framework to rule them all?
我认为这正是你要找的东西。
答案 1 :(得分:3)
dbyrne是对的,几乎没有人这样做。使用JAX-RS将信息转储到JSON或XML更为常规。然后,您可以使用RIA框架(例如Ext JS)来浏览Web浏览器,该框架处理操作DOM并以JSON / XML形式提取数据。这种方法很有用。您可以为服务编写多个(可能是非浏览器)客户端,所有客户端都可以解析相同的JSON / XML。您可以编写“单页”Web应用程序,在初始页面加载后通过AJAX进行所有信息交换。我恳请您在特定问题的背景下调查并考虑其优缺点。
回到你的问题:答案是“有点”。 JAX-RS规范不直接提供此功能(从1.1开始)。但是,它通过Viewable
响应对象在JAX-RS参考实现Jersey中 。如果您想进一步调查,请参阅此博文:http://blogs.oracle.com/sandoz/entry/mvcj。我想指出,我对泽西的这一方有没有经验。使用Jersey编写XML / JSON返回Web服务一直很愉快,但我不能说这个服务器端的HTML模板业务。
编辑:dbyrne编辑了他的答案,其中包含一篇指向上述内容的博文。我认为我们两者都收敛于大致相同的答案。
答案 2 :(得分:3)
如果您真的只想依赖JAX-RS作为您的Web框架,那么Jersey可能是您最好的选择。请记住,从中获得的功能将是最低限度的,并且您显然不会像JSF,Wicket等提供的那样获得所有的花里胡哨。
如果您知道您的Web应用程序将依赖于Spring,那么您应该考虑使用Spring MVC 3.0。它提供了类似的宁静Web服务,它为您提供了更好的功能,因此您无需自己实现大部分功能。当然,Spring MVC 3.0不是JAX-RS的实现,并且基于Spring开发人员的说法,似乎他们永远不会将Spring MVC作为JAX-RS的实现,因为它们已经是相当多的稳定实现。但是,在我看来,语法非常相似,或者至少我能够很快理解它们,即使我已经使用Jersey很长一段时间了。