这个MVC结构是否符合这种模式?

时间:2016-03-14 11:24:15

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

我正在制作一个基于MVC模式的项目,但我对方法的位置(插入,更新和删除)有疑问,我不知道它是否在模型类中或是在另一部分(请查看代码)。对此的另一个疑问是接口(class Car implements CarInterface { ... }),它是必要的还是我可以避免它?

控制器:

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
    ...
}

3 个答案:

答案 0 :(得分:0)

最好使用界面,所以如果您将CarMobel更改为MotoModel,您可以确定您已经正确命名了方法并且可以轻松访问

答案 1 :(得分:0)

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

接口可以在dao类中实现。

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

答案 2 :(得分:0)

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

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) {
     ...
    }

}

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