Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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 将数据从Spring MVC控制器来回传递到服务层_Java_Spring_Spring Mvc_Model View Controller_Controller - Fatal编程技术网

Java 将数据从Spring MVC控制器来回传递到服务层

Java 将数据从Spring MVC控制器来回传递到服务层,java,spring,spring-mvc,model-view-controller,controller,Java,Spring,Spring Mvc,Model View Controller,Controller,有谁能建议将数据从控制器发送到服务层的最佳方法吗 我有UI控制器和服务DAO 我有模型(或命令)来保存用户在UI中输入并传递给控制器的数据 我曾想过在控制器层创建模型,但不想直接将它们作为服务层传递,然后依赖于控制器层 您是否建议在服务层中创建模型并在控制器层中使用它们?但是在这种情况下,JSP将使用这些模型向用户提供数据?可以吗 有人能推荐java中设计上述mvc层的最佳方法吗 谢谢 Ramesh控制器从UI获取输入,并将请求转发(因此命名为控制器)到传统MVC模式中的适当模型。但是既然您使用

有谁能建议将数据从控制器发送到服务层的最佳方法吗

我有UI控制器和服务DAO

我有模型(或命令)来保存用户在UI中输入并传递给控制器的数据

我曾想过在控制器层创建模型,但不想直接将它们作为服务层传递,然后依赖于控制器层

您是否建议在服务层中创建模型并在控制器层中使用它们?但是在这种情况下,JSP将使用这些模型向用户提供数据?可以吗

有人能推荐java中设计上述mvc层的最佳方法吗

谢谢
Ramesh

控制器从UI获取输入,并将请求转发(因此命名为控制器)到传统MVC模式中的适当模型。但是既然您使用的是SpringMVC,为什么不在Spring上下文中创建模型对象,并在服务层中使用它们呢?您可以在服务层中使用@Resource或@Autowired。此外,如果要重用模型对象,可以很容易地做到这一点,因为这样它们就不会锁定到特定的层中。例如,使用上下文的web服务。
也许其他人有更好的方法

直接向UI层提供域模型对象并不一定是错误的,只是您很快就会遇到一些常见问题:

  • 视图屏幕只需要模型的一小部分
  • 某些字段,例如您永远不想发送到视图层的
    User.password
  • 域模型可以包含
    循环
    ,这意味着对象图中返回初始对象的对象导航路径。这无法正确序列化
  • 分离对象导致的域模型上的延迟初始化异常
解决这一问题的常见模式是DTO模式,请参见

在更大的应用程序中,通常的方法是控制器发送和接收DTO,然后进行一些映射(如果需要),将它们转换为域对象,这可以通过例如

在较小的应用程序上,这可能是不合理的,特别是如果您没有遇到上述问题,尽管这些问题往往会频繁出现