在我的Spring应用程序中,我使用的是Controller和servcie层。我正在从控制器重定向我的JSP。在服务层,我使用jaxRS编写服务。我使用基于令牌的方法使用Spring安全保护我的Web服务。我正在努力实施
1.移动设备中的API(无状态)
2.Web应用程序我已经在应用程序中定义了相同的API和控制器
3.Web:记住我。基于令牌。 什么是标准做法?
我可以在具有REST服务的Web的单一应用程序中实现它吗?或者我需要将控制器和JSP与应用程序分开.i.e。两个单独的申请
1.Spring MVC web应用程序:控制器和JSP。消耗REST服务。
2.Jersy Application:only services.No controller,No JSP
3.Android移动应用程序:使用REST服务。
答案 0 :(得分:0)
可以在同一个应用程序中实现JSON-API和Web应用程序。为此,您不需要使用Jersey AND Spring MVC。其中一个框架就足够了。
本文解释了如何使用Spring实现JSON-API(或者更确切地说是REST API):Building a RESTful Web Service
在Jersey文档的这一部分中,解释了如何使用Jersey使用JSP或其他模板语言创建HTML:Chapter 20. MVC Templates
两个框架的集成也是可能的:How to integrate Jersey in a Spring MVC application
所以这取决于你,你使用哪种方法。
也许另一种可能性符合您的要求:您可以在单独的库中实现业务逻辑和持久性,并在两个项目中使用它。该库可以使用Spring Dependency Injection,Spring Persistence等。以下是Jersey文档中的部分,它可以帮助您在Jersey中集成此库:Spring DI 如果您选择这种方法,我建议您使用3个部分(business,web,api)创建一个Maven multi-module project作为单独的模块。
关于问题的第二部分,如何实现基于“记住我”的标记(更准确地说是session)。在Web应用程序中,通常使用Cookie。如何在Jersey中实现此功能,可以找到here,其中使用了类HttpSession。 如果您希望JSON-API更加RESTful(无状态),则必须在每个请求中发送凭据(可能是哈希密码)。如需更多选项,建议您阅读以下文章:RESTful Authentication并查看球衣文档的这一部分:Security或本文Spring Security and Angular JS。