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

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

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

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值