Javaweb经典三层架构的演变
1.Javaweb经历了三个时期
①JSP Model1第一代
JSP Model1是JavaWeb早期的模型,它适合小型Web项目,开发成本低!Model1第一代时期,服务器端只有JSP页面,所有的操作都在JSP页面中,连访问数据库的API也在JSP页面中完成。也就是说,所有的东西都耦合在一起,对后期的维护和扩展极为不利。
②JSP Model1第二代
JSP Model1第二代有所改进,把业务逻辑的内容放到了JavaBean中,而JSP页面负责显示以及请求调度的工作。虽然第二代比第一代好了些,但还让JSP做了过多的工作,JSP中把视图工作和请求调度(控制器)的工作耦合在一起了。
③JSP Model2
JSP Model2模式已经可以清晰的看到MVC完整的结构了。
·JSP:视图层,用来与用户打交道。负责接收用来的数据,以及显示数据给用户;
·Servlet:控制层,负责找到合适的模型对象来处理业务逻辑,转发到合适的视图;
JavaBean:模型层,完成具体的业务工作,例如:开启、转账等。
这就是javaweb经历的三个年代,JSP Model2适合多人合作开发大型的Web项目,各司其职,互不干涉,有利于开发中的分工,有利于组件的重用。但是,Web项目的开发难度加大,同时对开发人员的技术要求也提高了。
2.JavaWeb经典三层框架
我们常说的三层框架是由JavaWeb提出的,也就是说这是JavaWeb独有的!
所谓三层是表述层(WEB层)、业务逻辑层(Business Logic),以及数据访问层(Data Access)。
·WEB层:包含JSP和Servlet等与WEB相关的内容;
·业务层:业务层中不包含JavaWeb API,它只关心业务逻辑;
·数据层:封装了对数据库的访问细节;
注意,在业务层中不能出现JavaWeb API,例如request、response等。也就是说,业务层代码是可重用的,甚至可以应用到非Web环境中。业务层的每个方法可以理解成一个万能,例如转账业务方法。业务层依赖数据层,而Web层依赖业务层!
1、Servlet的出现
上世纪90年代,随着Internet和浏览器的飞速发展,基于浏览器的B/S模式随之火爆发展起来。 最初,用户使用浏览器向WEB服务器发送的请求都是请求静态的资源,比如html、css等。 但是可以想象:根据用户请求的不同动态的处理并返回资源是理所当然必须的要求。
java 为了应对上述需求,就必然推出一种技术来支持动态需求,因此servlet技术诞生
使用Servlet技术,页面中的所有信息需要通过输出语句来生成。下面的代码(部分代码)生成的页面的内容就是“HelloWorld!”。
![](/assets/blank.gif)
public void doGet(HttpServletRequest request,HttpServletResponse)throws IOException,ServletException {response.setContentType("text/html;charset=gb2312");PrintWriter out = response.getWriter();out.println("<html>");out.println("<head><title>Hello World!</title></head>");out.println("<body>");out.println("<p>Hello World!</p>");out.println("</body></html>"); }
![](/assets/blank.gif)
2、Jsp的出现
servlet诞生后,sun公司很快发现servlet编程很繁琐,1)servlet代码有大量冗余代码,out输出就得写上百遍;2)开发servlet必须精通网页前端和美工,你得非常不直观的在Servlet中写前端代码,这使得实现各种页面效果和风格非常困难。
所以,sun公司借鉴 微软的asp,正式推出了jsp(servlet1.1)。采用HTML语言直接生成界面,在界面中使用<% %>脚本标识嵌入Java代码
一个简单的jsp例子
![](/assets/blank.gif)
<html><head><title>测试</title></head><body>第一阶段<% String str = “test” ; out.println(str); %></body> </html>
![](/assets/blank.gif)
3、 倡导了MVC思想的servlet版本servlet1.2出现------------jsp+javabean+servlet
jsp出现后,也存在问题,1)前端开发人员需要看大量他看不懂的后端代码;2)同样,servlet开发人员也在复杂的前端代码中找到其能写servlet代码的地方
所以,MVC思想的JSP+JavaBean+Servlet诞生了
JSP(V):JSP完成输入和输出,主要使用HTML标签和JSP标签
Servlet(C):主要完成控制,接收请求,调用业务处理(JavaBean),根据调用的结果找到一个JSP页面对用户进行响应
JavaBean(M):完成所有的处理过程
4、框架阶段
倡导了MVC思想的jsp+javabean+servlet出现,也存在问题:1)jsp页面中嵌入了很多java代码,使得结构很乱;2)对于大型项目,servlet过多,转向频繁,流程,配置等不易集中管理,因而出现了struts
4.1、Struts的出现
2001年6月,struts1.0出现,struts针对jsp推出了一套struts标签,从而使得jsp中没有了Java代码,结构清晰,功能强大。针对servlet,它提供了Action类来代替了servlet,这个Action类具有servlet的功能,并且能够进行一些请求过滤和自动转码的功能。
4.2、Spring的出现
原本已经开起来很完美了,但是又有一个问题,就是我们在Action调用DAO、Java bean等对象的时候都需要在自身代码中构建它们的对象来使用,这样增加了程序的耦合性,这与我们:“高内聚、松耦合”的思想不符合,那么怎么解决这个问题呢?因而出现了Spring框架。
Spring框架有两大功能:IOC(控制反转)和AOP(面向切面的编程),其中IOC就是说:当一个类中想要调用另外一个类的对象时,不需要再通过new 关键字来创建,而是由Spring框架来负责:创建、分配和管理,从而降低了程序中的耦合性。而AOP可以用来做一些日志的打印和输出,用于提示程序执行过程中的一些具体信息等。
4.3 、SpringMVC的出现
最后struts和Spring的整合,由于每一个bean都要在Spring中注册,每一个URL都要在struts配置文件中配置。当bean很多和URL对应的请求很多的时候,配置文件无疑会是很庞大的,这个就会使得配置起来很麻烦的费力。那么还有没有更好的办法使得能够结合Spring的功能和struts的功能,但是又可以使配置文件不会批量的增加?因而SpringMVC出现了
SpringMVC通过“基于注解”的方式代替了struts,并且通过Controller类来代替和实现了Action的功能。由于是基于注解的,所以很多的配置信息放在了Controller类中配置,从而降低了.xml文件的配置复杂度。
转载于:https://www.cnblogs.com/jiangzhaowei/p/9365056.html
Javaweb经典三层架构的演变相关推荐
- java框架三层架构是_MVC框架模式和Javaweb经典三层架构
一.MVC设计模式 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Co ...
- javaweb基本三层架构并使用Eclipse开发Servlet
javaweb基本三层架构并使用Eclipse开发Servlet JAVAEE分层模型 web应用程序基本架构 Domain Object Data Access Object 业务逻辑层 控制器层 ...
- 系统架构:经典三层架构
引言 经典三层架构是分层架构中最原始最典型的分层模式,其他分层架构都是其变种或扩展,例如阿里的四层架构模式和DDD领域驱动模型.阿里的 四层架构模型在三层基础上增加了 Manager 层,从而形成变种 ...
- MVC设计模式与JavaWeb的三层架构
引言: MVC是一种设计思想,是无色无味看不见摸不着的.它是设计师脑子里的东西,而web的三层架构则是落地实现,也就是划分各部分的包(controller.service.dao),然后进行代码的编写 ...
- 开启 J2EE(七)— Model1、Model2和三层架构的演变
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/akkzhjj/article/details/37667261 Model1和Model2是Java ...
- [SpringBoot] [使用]经典三层架构及“DO/BO/VO/DTO“对象总结
前言 突然想写点关于SpringBoot相关使用方便的文章. 之前进行了2个月的项目重构, 于是先给大家介绍一下几种经典的项目组成. 三层架构 经典的三层架构主要是Dao/Service/Contro ...
- javaWeb 11(三层架构)
分层模式 分层模式是最常见的一种架构模式 分层模式是很多架构模式的基础 分层 将解决方案的组件分隔到不同的层中 在同一个层中组件之间保持内聚性 层与层之间保持松耦合 三 ...
- 关于MVC与三层架构、个人总结网上杂七杂八得出的最终成果、asp.net (core) MVC、JavaWeb的MVC
阅读本文必须明白的事情 首先需要明白的是不同语言实现的MVC与三层架构对应的层是不一样的!!! 拿.net来说,.net实现MVC与其他语言的MVC具体实现是不同的,asp.net MVC与 MVC ...
- 三层架构和SpringMVC概述
目录 一.关于三层架构和MVC 1.三层架构 (1)表现层 (2)业务层 (3)持久层 2.MVC 模型 3.经典三层架构和MVC的关系 二.SpringMVC 概述 1.SpringMVC的优势 2 ...
最新文章
- LTE QCI分类 QoS
- 【问题收录】svn: E155010: 提交失败(Ubuntu14.04环境)
- VS2019配置PCL
- 四种连接数据库的方法(DriverManager、DataSource子类、DBCP、c3p0)
- 查看JupyterNotebook的kernel及存放位置
- extern “C”总结
- 计算机网络模拟校园,计算机网络课程设计-模拟校园网组网实验
- 后台给前台传值 php,前后台传值的几种方式(html,js,php)
- SpringCloud工作笔记070---SpringCloud中使用Redis存储List类型数据
- 百度OCR文字识别API使用心得===com.baidu.ocr.sdk.exception.SDKError[283604]
- 爱立信携Batelco完成巴林首次5G测试
- C++习题 对象数组输入与输出
- 编辑器、编译器和IDE的区别
- C++技术之一:C++类 _stdcall
- 高级计算机器,高级计算器最新版
- 2008-03-31 雨纷飞
- excel删除无尽空白行_史上最简单的Excel工资条制作方法,实用收藏!
- 小程序开发实战学习笔记 1
- 如何下载Twitter 数据副本?
- 如何开发自己的通用Mapper