MVC开发模式
JSP演变历史
- 早期只有Servlet,没有JSP,这样只能使用response输出标签数据,得手动拼接HTML和全部数据,非常之痛苦,如下图
- 后来SUN公司推出了jsp,开发者可以直接在HTML页面中编写动态的java代码去获取数据,简化了Servlet的开发(实际把数据和html标签的组装这一工作,交给了jsp自动去做,本质没变,下图是tomcat运行时,访问jsp页面时,在tomcat的work目录下自动生成的jsp对应的java文件,jsp本质就是个servlet)
- 但是项目体量很大的话,系统又有HTML代码,又有JAVA代码,很乱
- 若过度使用JSP,会造成项目代码混乱,难以维护,难以分工合作
- 再后来,JavaWeb开发,借鉴了MVC开发模式,使得程序的设计更加合理,维护更加方便
MVC
它是一种设计思想,用于解决系统架构问题。
- M:Model,模型,负责完成具体的业务逻辑。如查询数据库,封装对象
- V:View,视图,用于展示数据
- C:Controller,控制器,不参与具体业务,只做分发和流程控制
将程序分为3部分,3部分各司其职,降低系统的耦合度,便于分工协作,以及项目维护
在比较原始的的JavaWeb开发中,Servlet当作Controller,JavaBean当作Model,JSP当作View。
优点
- 降低系统耦合性,方便维护,方便分工协作
- 重用性高
缺点
- 不适合小型,中型的应用程序
- 增加了系统架构的复杂性,对开发人员要求高
既然采用了MVC的开发模式,那么JSP只用于视图展示,JSP中不再编写Java代码,那么如何把数据传到JSP页面中呢 =>用 EL表达式 与 JSTL标签
三层架构
是一种软件设计架构(注意与MVC开发模式做区分)
- 界面层(表示层):用户看到的界面,用户可通过页面上的组件和服务器进行交互
- 业务逻辑层:处理业务逻辑
- 数据访问层:操作数据存储
其实三层架构一般在后端开发中,只体现了两层,在项目里,会将处理核心业务的类放在一层,比如放在service包下,负责持久层操作的类会放在一层,比如放在dao包或repository包下。各层遵循单一职责原则,层与层之间,保持松散耦合。每一个模块对外界保持尽可能少的关注。比如dao层就只提供纯粹的数据库CRUD操作,dao只关心DB,只关心数据的增删改查,不关心任何业务逻辑;service层则只关心业务逻辑,不关心dao层对数据处理的细节。