欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringMVC中的名词解释、JavaBean、Entity、Pojo、Model的区别

程序员文章站 2022-06-15 12:06:52
...

MVC名词解释

这一个章节说明项目中应该建立哪些package,形成一个良好开发的习惯,与统一

首先,先了解下三层的一些概念:

MVC是一种设计模式,指的是三层

  • Model 模型层(在开发中用于存放实体类、持久化对象)

  • View 视图层(在开发指 html、jsp 等页面)

  • Controller 控制层(在开发中负责业务逻辑流程的控制)

Model

定义了一些实体类 ,具体对应数据库中的一张表,class 的属性对应表的字段名,通常开发中的entity包就是数据模型层

View

我自己的理解就是视图应用程序用户界面相关部分啦,所以就大概理解为 html,Jsp等页面,

网上搜集的资料总结大概描述为:(不对的地方请帮我举出,谢谢各位看官)

  • View 会从 Model 中取数据显示

    关于这点可能是 html 中慢慢的标签套表达式,表达式满天飞

  • Model 提供数据的最新状态给 View (通知更新)

  • 当Model 变化时,View 负责维护数据表现的一致性。

    页面得刷新,(一次转发)才能变化吧

  • View 还同时将用户的请求通知控制器

    也就是 ajax 请求吧

Controller

  • 控制器定义了应用程序的行为,供了一系列的接口访问路径.

  • 它负责对来自视图的用户请求进行解释,并把这些请求映射成相应的行为,这些行为由模型负责实现

  • 在一个Web应用程序中,它们的表现形式可能是一些来自客户端的GET或POST的HTTP请求

    @ResponseBody //表示该类下面的所以方法将返回 Json格式的字符串
    public class UserController{
        
        @RequestMapping('/login') //提供的访问路径,url: 项目路径 + /login 访问
        public String login(){
            /*具体实现逻辑*/
        }
        @RequestMapping('/regiest')
        public String(){
            /*具体实现逻辑*/
        }
    }
    
  • Controller本身不对model数据进行操作,只是负责接到任务,控制任务走向,分派任务(dispatch),指定具体的model来操作数据,通常进行操作的时候(actions)由具体的service来实现

在此处加入了 Vuex 中的数据处理的关键词,方便理解

JavaBean、Entity、Pojo、Model的区别

Model 层还可以听到一些词语比如: javaBean,pojo,entity,还是有些区别的:

  • entity名称译为实体,在开发过程中可以在项目目录中建立entity包,笼统的指一切实体,

    public class Person{
        private String name;
        private int	age;
        private	String phoneNumber;
        private String address;
    }
    
  • javaBean 意为:

  1. 该类有系列的 private属性,(所以他的成员属性用 gettersetter来访问)
  2. 必须含有一个 公有的无参构造方法,(向外暴露 new 实例)
  3. 该类有可能要被 implement,extend(“侵入”)
  4. 这个类应是可序列化的。实现serializable接口。 (关于这一点,我上学的时候好像没学到??)

大概长下面这种样子:

 public class Chinese extends Person{
 
     /* 勤劳、勇敢、爱和平的中国人,属性为私有,值为 true,通过 setter and getter 操作*/
     private Boolean diligent;
     private Boolean brave;
     private Boolean peaceful;
 
     /* 无参数的构造方法,public公开的,
      * 意味着国家将坚定不移走开放路线,深化改革开放,
      * 时时刻刻向世界展示新中国 new
      */
     public Chinese(){
 
     }
 	
     /*public 公开的有参数的构造方法,想给新中国添加点光彩嘛?*/
     public Chinese(Boolean diligent,Boolean brave,Boolean peaceful){
         this.diligent = diligent;
         this.brave = brave;
         this.peaceful = peaceful;
     }
 
     public Boolean getDiligent() {
         return diligent;
     }
 
     public void setDiligent(Boolean diligent) {
         this.diligent = diligent;
     }
 
     public Boolean getBrave() {
         return brave;
     }
 
     public void setBrave(Boolean brave) {
         this.brave = brave;
     }
 
     public Boolean getPeaceful() {
         return peaceful;
     }
 
     public void setPeaceful(Boolean peaceful) {
         this.peaceful = peaceful;
     }
 }

Chinese 继承了 Person 类,也具有 Person 的属性

  • pojo(plain old java object)朴素的、简单的 java 对象 。
  1. 类的成员是私有的,且有一系列的 setterand getter方法来提供访问
  2. 它没有继承 (extends)也没有 实现(implements) 任何的 class 或者 interface 更没有被其它东西而“侵入”

总结:

从比较可以看出, pojo严格遵循 “朴素” 标准,仅仅只是作为数据的临时载体,不具有业务逻辑处理能力

JavaBean他是 一套 Java Object的编写规范,他除了一些该有的 方法外,往往还含有其它 逻辑方法在其中

Spring 通过 依赖注入 与 切面编程,使得程序之间结构、分工明确,让代码不再“紧耦合”,在使用了 Pojo对象后我们很少用 new 关键词来产生对象

正是Spring 通过Java的反射机制,能 **动态的向某个对象提供它所需要的其他对象,**使得代码更简洁

从一个简单的 MVC 业务流程开始

我在此描述一个登录的业务流程,需要注意的是,平常开发过程中,我们并不只是用到了MVC 三层的分类,还可能有其他层,比如ServiceDao / Mapper下面流程中的描述中即将出现

  1. web视图发送一个请求 去往一个接口,比如/login

  2. 找到对应的 Controller,在spring 中具体路径体现为RequestMapping("/login")

  3. 访问这个路径,执行该``RequestMapping`中的逻辑

  4. Controller 找到对应的Service

  5. Service找到对应的Dao

  6. Dao联合Model操作数据库

  7. 返回结果给Controller

  8. Controller对结果进行处理

Dao层为数据访问层,比较基础的操作,具体到对于某个表、某个实体的增删改查,操作数据库,也就是Mapper层(一些SQL语句)

注意:在比较原生的开发中 我们使用Dao,而关键词Mapper是在Mybatis、Hibernate这样的SQL映射工具出现后常常见到的

service层为业务逻辑层(具体做事的层),接受Controller层的委派,跟Dao / Mapper打交道,交流完再将结果反馈给Controller

元旦快乐!今年也要进步!

--------------------------------转载请注明出处---------------------------------