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里面没有全局对象,所以不会影响线程安全