Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java REST spring服务和JQUERY web集成最佳实践_Java_Jquery_Spring_Spring Mvc_Architecture - Fatal编程技术网

Java REST spring服务和JQUERY web集成最佳实践

Java REST spring服务和JQUERY web集成最佳实践,java,jquery,spring,spring-mvc,architecture,Java,Jquery,Spring,Spring Mvc,Architecture,关于使用SpringMVC(REST服务)和jQuery设计系统的最佳方法。我认为存在以下方法 一个war文件中有spring服务和jQuery之类的东西,通过这种方法,我们可以使用spring mvc提供的所有域对象,我们可以创建初始jsp页面,然后使用对我们服务的jQuery调用刷新一些元素 两个war文件,一个包含spring服务,另一个包含spring mvc和jquery,在这种情况下,页面的创建可以通过jsp页面完成,还可以通过jquery调用我们的服务来刷新元素,但为了实现这一点,

关于使用SpringMVC(REST服务)和jQuery设计系统的最佳方法。我认为存在以下方法

  • 一个war文件中有spring服务和jQuery之类的东西,通过这种方法,我们可以使用spring mvc提供的所有域对象,我们可以创建初始jsp页面,然后使用对我们服务的jQuery调用刷新一些元素
  • 两个war文件,一个包含spring服务,另一个包含spring mvc和jquery,在这种情况下,页面的创建可以通过jsp页面完成,还可以通过jquery调用我们的服务来刷新元素,但为了实现这一点,我们需要在第二次war中使用一个通用的域对象库,在一些需要创建的控制器中也在内部使用restTemplate(听起来像是重复的代码)
  • 如果一个war文件运行REST服务,另一个“包”没有任何java或spring内容,只有jquery,这意味着所有调用和信息检索都必须使用jquery完成,初始jsp页面创建不能使用此选项,所有内容都是通过REST服务获得的。(无需使用内部控制器通过java调用服务)
  • 考虑到这一点,我意识到一秒钟和一秒钟有以下缺点

    • 将服务和web内容放在同一个war文件中听起来像是SOA中的一个坏主意,这场战争的移动将导致移动不需要的jquery和web内容
    • 将jsp和jquery混合使用听起来不是一个好主意,但我认为这是一种常见的做法(我想知道为什么?),使用它我认为我们需要在第二次世界大战中创建一些控制器来最初创建web页面,使用restTemplate获得初始信息,然后使用jquery调用更新或刷新。它觉得一个服务器有一个控制器只是为了检索服务的数据,为什么不直接去
    我只想实现第三种方法,但问题是:有我没有看到的任何缺点,或者有任何缺点 在使用该方法之前我应该知道的建议?另外,对于如何处理这种系统也有一些建议。很高兴听到来自java和jquery开发人员的消息


    我同意你的观点,版本3给了你最大的灵活性,这是你在设计界通常会看到的

    将其余部分和前端完全视为单独的应用程序。如果操作正确,您可以拥有一个非常健壮的应用程序,它能够实现适当的灵活性

    • 版本1:在初始控制器调用中加载页面,并使用jquery进行后续服务调用。所有代码都存在于一个包中

      缺点是紧密耦合。您现在只能使用api的语言,不再提供基于服务的数据和服务方法

      我看到这个版本主要是在应用程序开发人员更关心异步前端调用而不是基于SOA的语言时应用的

    • 版本2:有一场包含Spring服务的战争,还有一场针对JS的战争

      这种方法的问题可以通过使用jar而不是另一个服务器应用程序来解决。虽然这种方法是常用的,但回收仍然依赖于外部包装

      使用一个包含所有代码的jar来访问数据库并创建域对象(与控制器用于序列化和响应web请求的代码分离),可以创建一种非常干净的方式来管理api,但是这会产生一种复杂性和额外的组件,使用版本3可以避免。它还提供了与版本1中相同的奇怪行为

      我见过开发纯api应用程序的团队采用这种方法。我还没有在同样需要前端组件的团队中看到这种情况。方法一或三已在这些情况下使用

    • 版本3:创建一个只处理前端责任的应用程序创建一个处理服务器端责任的应用程序

    在版本2和版本3中,将服务调用与http调用分开。使它们不同,因为它允许模块化

    例如,我们需要响应http请求

    @Controller
    class MyController{
        @Autowired
        private MyService service;
        @GET
        public String getData(String dataId){
           return service.getData(dataId);
        }
    }
    
    我们需要响应活动mq请求

     Message m = queueReceiver.receive();
     if (m instanceof DataRequest) {
         DataRequest message = (DataRequest) request;
         queueSender.send(service.getData(request.getDataId())); //service call
     } else {
         // Handle error
     }
    
    此外,它还使您能够管理需要在http端(与服务端不同)处理的内容

    @GET
    public String getData(HttpRequest request, String dataId){
       if(!this.handleAuth(request)){
          throw new 403();
       }
       try{
          return service.getData(dataId);
       catch(Exception e){
          throw new WrappedErrorInProperHttpException(e);
       }
    }
    

    这允许您的服务层处理对这些服务有意义的任务,而无需处理所有http垃圾。让您能够独立于服务层处理所有HTTP垃圾。

    在我看来,您似乎在考虑两种不同的理念,一种是承载API的Spring应用程序,另一种是可以承载在任何地方的前端应用程序。。。我将编写“JQuery”应用程序并将其托管在。。。只要在java应用程序上启用xsite,就可以调用rest URL。如果您想使用spring构建前端应用程序。这很好,但如果你想让春天来主持休息。。。让它托管rest。我想你理解我的观点的一部分,但一点也不理解,我同意你的观点,rest服务可以在服务器上运行,其他什么都不可以,我可以在另一个前端应用程序中使用jquery调用这些服务。但是为什么有些应用程序使用SpringMVC+jquery来完成这个过程,基于这两种方法的优缺点,仅使用纯jquery就足够了?。这应该是第二种方法存在的任何理由。(混合使用spring mvc和jquery)调用rest API我看不出有什么理由同时使用这两者。。。以我的经验(这是有限的),我还没有看到这样做。RestTemplate用于服务器中的客户端调用。。。如果使用RestTemplate调用现有控制器内的内部api。。。我会很困惑为什么会这样做。如果JQuery存在,则在jsp中。。这让我觉得