【MVC模式】Front前端控制器模式、Jsp Model1 和 Jsp Model2、MVC思想

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/sinat_42483341/article/details/100120956

Front前端控制器模式

Front前端控制器模式,是一种JavaEE模式:用一个servlet控制主入口,然后根据不同的情况,将请求分发给相应的处理程序。


Jsp Model1 和 Jsp Model2

(1)Jsp Model1
在这里插入图片描述
Model 1模式的实现比较简单,适用于快速开发小规模项目。但从工程化的角度看,它的局限性非常明显:JSP页面身兼View和Controller两种角色,将控制逻辑和表现逻辑混杂在一起,从而导致代码的重用性非常低,增加了应用的扩展性和维护的难度。

(2)Jsp Model2——MVC

Jsp Model2中使用了三种技术JSP、Servlet和JavaBeans

  • Jsp负责生成动态网页,只用做显示页面。
  • Servlet负责流程控制,用来处理各种请求的分派。
  • JavaBeans负责业务逻辑,对数据库的操作。
    使用Jsp Model2的交互过程:

用户通过浏览器向Web应用中的Servlet发送请求,Servlet接受到请求后实例化JavaBeans对象,调用JavaBeans对象的方法,JavaBeans对象返回从数据库中读取的数据。Servlet选择合适JSP,并且把从数据库中读取的数据通过这个JSP进行显示,最后JSP页面把最终的结果返回给浏览器。
Model 2已经是MVC设计思想下的架构,由于引入了MVC模式,使Model 2具有组件化的特点,更适用于大规模应用的开发,但也增加了应用开发的复杂程度。

Jsp Model2 优点

I.消除了Jsp Model1的缺点
II.该模式适合多人合作开发大型的Web项目
III.各司其职,互不干涉
IV.有利于开发中的分工
V.有利于组件的重用

Jsp Model2 缺点

Web项目的开发难度加大,同时对开发人员的技术要求也提高了


代码命名规范

1.项目名:没有要求,不起中文
2.包:公司域名倒写com.bjsxt
3.数据访问层:dao, persist, mapper
4.实体:entity, model, bean,javabean, pojo
5.业务逻辑: service,biz
6.控制器: controller, servlet,action,web
7.过滤器: filter
8.异常: exception
9.监听器:listener
10.注释:类上和方法上使用文档注释/** */,在方法里面使用/* *///
11.类: 大驼峰
12.方法,属性:小驼峰


MVC 开发模式

关于异常处理方法
在数据访问层、控制器中处理异常,在service中只抛出异常

关于使用框架:
一个框架只负责自己的一部分。而不是说使用一个框架之后,整个项目结构全变了。
比如,学mybatis,就bao层需要改动
学springmvc,就servlet需要改动。
service层的业务逻辑是自己写的,不存在使用框架替换的情况。
学习框架的过程,就是把自己原来写的项目结构一点一点替换的过程,

一些框架的作用
MyBatis:数据访问层框架
Spring框架:Ioc,AOP
SpringMVC框架:对servlet封装
在这里插入图片描述
在这里插入图片描述
1、 M: Model 模型,实体类和业务和dao

2、 V: view 视图. JSP

3、C:Controller 控制器,servlet

  • 作用:视图和逻辑分离

4、MVC 适用场景:大型项目开发.

5、图示例

  • 先设计数据库
  • 然后写实体类
  • 持久层
  • 业务逻辑
  • 控制器
  • 视图
    在这里插入图片描述

关于servlet的线程安全

是否线程安全,看servlet的service方法外部自定义类(如下图的FlowerService)声明中,有没有定义多余的全局对象。

绝对不要为了线程安选而像下面18行这样写:这样会每次调用new一个对象,在大量调用时,严重消耗内存。GC只有在JVM内存不够的时候才会回收。
在这里插入图片描述

看到里面有一个全局的Dao,点进去
在这里插入图片描述
而Dao里面没有全局对象,所以不会影响线程安全
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sinat_42483341/article/details/100120956