0
点赞
收藏
分享

微信扫一扫

自定义MVC(导成jar包)+与三层架构的区别+反射+面试题


目录

​​1.什么是MVC?👀👀👀☪往下看​​

​​常用模式:🤩🤩🤩model1:jsp+jdbcmodel2:mvc​​

​​三层架构和MVC的区别?( •̀ ω •́ )✧😺😺😺​​

​​2.MVC结构?​​

​​3.自定义MVC工作原理图​​

​​4.MVC实现​​

​​通过XML对自定义MVC框架进行3步增强​​

​​一、反射增强第一步:​​

​​二、反射增强第二步: 将一组相关的操作放到一个Action中(反射调用方法)​​

​​三、反射增强第三步:利用ModelDriver接口对Java对象进行赋值(反射读写方法)​​

​​下面是附送大家的面试题​​

​​get和post的区别?😄😄​​

​​StringBuilder和StringBuffer和String的区别?​​

1.什么是MVC?👀👀👀☪往下看

MVC全名:Model View Controller,其中Model(模型层)、View(视图层)、Controller(控制层)
它是一种软件设计典范,用于业务逻辑处理、数据、界面显示分离,

自定义MVC(导成jar包)+与三层架构的区别+反射+面试题_jar

常用模式:🤩🤩🤩model1:jsp+jdbc model2:mvc

三层架构和MVC的区别?( •̀ ω •́ )✧😺😺😺

三层架构是一个经典的分层思想,将开发模式分为三层,每个人专注自己擅长模块即可
MVC是一种设计模式,其目的是让html和业务逻辑分开

三层架构:请看下去,看到这里已经很棒了🐱‍🐉🐱‍🐉🐱‍🐉🐱‍🐉🐱‍🐉🐱‍🐉🐱‍🐉🐱‍🐉🐱‍🐉🐱‍🐉🐱‍🐉🐱‍🐉
首先来说,三层架构与MVC的目标一致:都是为了解耦和、提高代码复用。MVC是一种设计模式,而三层架构是一种软件架构。

三层架构分为:表现层(UI)(web层)、业务逻辑层(BLL)(service层)、数据访问层(DAL)(dao层) ,再加上实体类库(Model)

1.实体类库(Model),在Java中,往往将其称为Entity实体类。数据库中用于存放数据,而我们通常选择会用一个专门的类来抽象出数据表的结构,类的属性就一对一的对应这表的属性。

·一般来说,Model实体类库层需要被DAL层,BIL层和UI层引用。马上不枯燥了😘😘😘😘😘😘

2.数据访问层(DAL),主要是存放对数据类的访问,即对数据库的添加、删除、修改、更新等基本操作

 ·DAL就是根据业务需求,构造SQL语句 ,构造参数,调用帮助类,获取结果,DAL层被BIL层调用

3.业务逻辑层(BLL)        →快了😎😎😎😎😎😎

·BLL层好比是桥梁,将UI表示层与DAL数据访问层之间联系起来。所要负责的,就是处理涉及业务逻辑相关的问题,比如在调用访问数据库之前,先处理数据、判断数据。

BLL层只被UIL层引用

用户表现层(UIL),就是用户看到的主界面。

        各层引用关系如下图所示:

自定义MVC(导成jar包)+与三层架构的区别+反射+面试题_servlet_02

MVC与三层架构的对应关系,图示如下:

自定义MVC(导成jar包)+与三层架构的区别+反射+面试题_jar_03

2.MVC结构?

    V(视图层)--》 JSP

    C(控制层)--》 Servlet/Action

    M(模型层)--》 Dao、Entity

    1)实体域模型(entity层)
    2)过程域模型(dao层)
 

注:1)不能跨层调用;
       2)只能由上往下进行调用;View -> Controller -> Model

3.自定义MVC工作原理图

  处理具体业务逻辑
   JSP -----------> Servlet(中央控制器)--------------------->Action(子控制器)--->Model(Dao、DB)

自定义MVC(导成jar包)+与三层架构的区别+反射+面试题_mvc_04

4.MVC实现

案例1:

     1)创建抽象类Action,定义抽象方法execute(处理具体逻辑)
     2)创建HelloAction并继承抽象类Action,重写execute方法
     3)在ActionServlet中定义私有Map<String,Action>(根据不同请求路径名调用不同逻辑处理Action类)        🎉🎉🎉🎉🎉🎉
     4)在ActionServlet中的init方法初始化Map集合
    map.put('请求路径','逻辑处理Action类')
     5)在ActionServlet中的doPost方法中处理请求

   案例2:

   演示完成的MVC流程,form表单提交数据,进行逻辑处理后将结果返回页面显示
     1)在ActionServlet中的init方法中添加
    map.put('/AddAction',new AddAction());
     2)创建AddAction继承抽象类Action,重写execute方式,处理逻辑后,返回结果

通过XML对自定义MVC框架进行3步增强

一、反射增强第一步:

    1)config.xml建模 

     2)获取Action配置信息

     3)反射机制实例化Action子控制器

     4)将请求委托给子控制器处理并返回结果码

     5)根据返回结果码进行页面跳转
      重定向/转发

二、反射增强第二步: 将一组相关的操作放到一个Action中(反射调用方法)

     1)创建DispatcherAction类
     DispatcherAction extends Action          ✨✨✨✨✨✨✨✨
     
     2)根据请求参数获取方法名,利用反射机制调用方法
     参数名:methodName:add/minus/mul/div

     3)创建CalAction类(CalAction提供一组加减乘除的方法)        😉😉😉😉😉😉😉😉
     CalAction extends DispatcherAction
      提供一组与execute方法的参数、返回值相同的方法,只有方法名不一样

三、反射增强第三步:利用ModelDriver接口对Java对象进行赋值(反射读写方法)

    1)利用反射机制对Java对象进行属性赋值
     简化调用:BeanUtils.populate(calBean, parameterMap);

     2)ModelDriver接口返回的对象不能为空        😺😺😺😺😺😺😺😺

 注1:Action多例模式?因为Action的属性要用来接收参数

下面是附送大家的面试题

get和post的区别?😄😄

1.Get是不安全的,因为在传输过程,数据被放在请求的URL中;Post的所有操作对用户来说都是不可见的。 2.Get传送的数据量较小,这主要是因为受URL长度限制;Post传送的数据量较大,一般被默认为不受限制。

StringBuilder和StringBuffer和String的区别?

第一个StringBuilder,第二个String,第三个StringBuffer。这三个的区别:StringBuilder
线程不安全,但是在使用拼接的时候速度会很快
String
在每次new的时候会产生新的节点,但是在jdk8之后使用拼接是跟StringBuilder一样的效果
StringBuffer
线程安全,但是速度慢        👌👌👌👌👌👌

以上就是今天的分享!!!

举报

相关推荐

0 条评论