【问题标题】:Is this MVC structure right to comply the pattern? [duplicate]这种 MVC 结构是否符合该模式? [复制]
【发布时间】:2016-06-29 09:54:18
【问题描述】:

我正在制作一个基于 MVC 模式的项目,但是我对方法的位置(插入、更新和删除)有疑问,我不知道它是在模型类中还是在另一部分中(请看代码)。对此的另一个疑问是接口(@98​​7654321@),这是必要的还是我可以避免它?

控制器:

class ServletCar extends HttpServlet {
   ...
   public void doPost( ... )
   {
       ...
       switch (action) {
           ...
           case 'insert':
               Car n = new Car();
               n.set( request );
               n.insert();
               ...
               break;
           ...
       }
       ... 
   }
}

查看(Car.jsp):

...
<form action="ServletCar" ...>
    ...
</form>
...

型号:

class Car {
    // attributes
    ...

    // gets ands sets
    ...

    // functions i,u,d
    public void insert( ... ) { ... }
    public void update( ... ) { ... }
    public void delete( ... ) { ... }

    // other methods
    ...
}

【问题讨论】:

  • 你错了,你不会在stackoverflow中发现这个示例代码有任何问题。

标签: java jsp jakarta-ee model-view-controller jstl


【解决方案1】:

你应该创建一个服务层,所以在你的控制器中你只需要重定向到正确的服务,这些服务构成了所有的逻辑。像这样的:

class ServletCar extends HttpServlet {
   private CarService carService;
   public void doPost( ... )
  {
   ...
   switch (action) {
       ...
       case 'insert':
           carService.insert(carParam)
           break;
       ...
   }
   ... 
  }
}

public interface CarService {
    save(Car car);
    update(Car car);
    delete(Car car);
}

public class CarServiceImpl implements CarService {

    save (Car car) {
     ...
    }

}

在您的控制器中,只需重定向到具有所有业务逻辑的服务,在您的服务中,所有业务逻辑、数据访问......

【讨论】:

  • 好的,但是根据你的代码我还有一个问题,你知道是MVC,这意味着M代表Car,V代表JSP,C代表ServletCar,我将把CarService放在什么包中和 CarServiceImpl ??谢谢。
  • 您可以拥有一个名为 org.app.model 的包,其中包含您所有的 bean,以及另外 2 个包,org.app.persistence 用于您的 DAO 对象、存储库和 org.app.service 用于您的服务
【解决方案2】:

这里的汽车似乎不是豆子。它似乎是一个数据访问对象。设计一个单独的 bean 和 dao 对象总是更好。

接口可以在 dao 类中实现。

还应该有一个重定向查看。你在使用简单的 servlets mvc 吗?在这种情况下,我们需要放置请求调度程序。

【讨论】:

    【解决方案3】:

    最好使用接口,所以如果你将 CarMobel 更改为 MotoModel,你会确定你有正确命名的方法,并且很容易访问它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      • 2012-05-22
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      相关资源
      最近更新 更多