Java MVC 介绍

发布时间: 更新时间: 总字数:665 阅读时间:2m 作者: 分享 复制网址

MVC模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)视图(View)控制器(Controller)

介绍

传统不分层架构

  • 所有的代码都写到一个地方(比如struts的Action类),代码不仅要处理页面逻辑,还要做业务逻辑和数据访问。代码耦合度高,维护复杂。

MVC 在 SSH 框架的使用

MVC 在 Java 中 Action、Service、DAO 的对比:

  • 模型(Model):单纯的业务对象的存取,组装放到DAO里完成
  • 视图(View):Action里只做和页面相关的事,不操作业务对象
  • 控制器(Controller):Service 不依赖于任何表现技术,不操纵任务用于表现的对象,对于业务对象,尤其是跨多个业务对象的操作,要放到Service里面来

在 SSH 框架中 jsp,actionfrom,service,action,dao 的调用顺序:

  • jsp发起请求
  • actionform封装请求参数
  • action接受请求,并接受封装好的actionfrom
  • action调用service
  • service经过业务逻辑处理之后随后调用DAO
  • DAO对数据库进行CRUD

MVC 优点

  • 代码更易读。每一层的每个方法的意义和目的更加明确,读以起来受的干扰更少
  • 拆开后的每一层都更容易测试

示例

传统代码

public String addUser() {
    if(user == null) {
        return FAIL_NO_USER;
    }
    Result result = null;
    if(Role.ADMIN.equals(user.getRole())) {
        result = doSomethingForAdmin(user) ;
    } else {
        result = doSomethingForOthers(user);
    }
    Transaction trans = sess.beginTransaction();
    Query query = sess.createQuery("update Result set level = :level");
    query.setParameter("level", result.getLevel());
    query.executeUpdate();
    trans.commit();
    sess.close();
    return SUCCESS;
}

MAC 代码

在action里:

public String addUser() {
  if(user == null) {
      return FAIL_NO_USER;
  }
  Result result = service.process(user);
  dao.update(result);
  return SUCCESS;
}

在service里:

public Result process(User user) {
  Result result = null;
  if(Role.ADMIN.equals(user.getRole())) {
      result = doSomethingForAdmin(user) ;
  } else {
      result = doSomethingForOthers(user);
  }
  return result;
}

在dao里:

public void update(Result result) {
  Transaction trans = sess.beginTransaction();
  Query query = sess.createQuery("update Result set level = :level");
  query.setParameter("level", result.getLevel());
  query.executeUpdate();
  trans.commit();
  sess.close();
}
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数