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

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

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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容