当前位置:网站首页>自定义MVC(导成jar包)+与三层架构的区别+反射+面试题
自定义MVC(导成jar包)+与三层架构的区别+反射+面试题
2022-06-27 00:09:00 【ˡᵒᵛᵉ一杯美式】
1.什么是MVC?往下看
MVC全名:Model View Controller,其中Model(模型层)、View(视图层)、Controller(控制层)
它是一种软件设计典范,用于业务逻辑处理、数据、界面显示分离,

常用模式:🤩🤩🤩
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与三层架构的对应关系,图示如下:
2.MVC结构?
V(视图层)--》 JSP
C(控制层)--》 Servlet/Action
M(模型层)--》 Dao、Entity
1)实体域模型(entity层)
2)过程域模型(dao层)
注:1)不能跨层调用;
2)只能由上往下进行调用;View -> Controller -> Model
3.自定义MVC工作原理图
*.action 调度 截取*(请求路径名) 处理具体业务逻辑
JSP -----------> Servlet(中央控制器)--------------------->Action(子控制器)--->Model(Dao、DB)

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
线程安全,但是速度慢
以上就是今天的分享!自定义MVC导成jar包就不放代码给你们看了
边栏推荐
- Common techniques of email attachment phishing
- 温故知新--常温常新
- Mindspire, a domestic framework, cooperates with Shanshui nature conservation center to find and protect the treasure life in the "China water tower"
- 气液滑环与其他滑环的工作原理有什么区别
- Can I open an account for stock trading on my mobile phone? Is it safe to open an account for stock trading on the Internet
- 05 | 規範設計(下):commit 信息風格迥异、難以閱讀,如何規範?
- 国产框架MindSpore联合山水自然保护中心,寻找、保护「中华水塔」中的宝藏生命
- 新型冠状病毒变异Delta毒株的模拟(MindSPONGE应用)
- 【Mysql】时间字段默认设置为当前时间
- 如何通俗易懂的描述机器学习的流程?
猜你喜欢

Introduction to message queuing

新型冠状病毒变异Delta毒株的模拟(MindSPONGE应用)

滑环选型选购时需要注意的技巧

Understanding of "the eigenvectors corresponding to different eigenvalues cannot be orthogonalized"

Hit the point! The largest model training collection!

全網最全的混合精度訓練原理

冲刺强基计划数学物理专题二

2022年地理信息系统与遥感专业就业前景与升学高校排名选择

Special topic II on mathematical physics of the sprint strong foundation program

温故知新--常温常新
随机推荐
大赛报名 | AI+科学计算重点赛事之一——中国开源科学软件创意大赛,角逐十万奖金!
Lwip之定时机制
目前哪个证券公司炒股开户是最好最安全的?
Technical dry goods | what is a big model? Oversized model? Foundation Model?
我的c语言进阶学习笔记 ----- 关键字
目标追踪拍摄?目标遮挡拍摄?拥有19亿安装量的花瓣app,究竟有什么别出心裁的功能如此吸引用户?
Simple and fast digital network (network dolls in the network)
高清滑环生产过程当中的质量如何把控
When transformer encounters partial differential equation solution
国内外最好的12款项目管理系统优劣势分析
冲刺强基计划数学物理专题二
Oracle 数据库基本知识概念
2022 Health Expo, Shandong health care exhibition, postpartum health and sleep health exhibition
Can I open an account for stock trading on my mobile phone? Is it safe to open an account for stock trading on the Internet
剑指 Offer 10- II. 青蛙跳台阶问题
kubeadm创建kubernetes集群
Com. Faster XML. Jackson. DataBind. Exc.mismatchedinputexception: tableau ou chaîne attendu. At [Source: X
万字详解-MindArmour 小白教程!
Special topic II on mathematical physics of the sprint strong foundation program
Leetcode skimming 4 Find the median of two positive arrays