在早期的JavaWeb应用中,JSP文件负责处理业务逻辑,控制网页流程并创建HTML页面,JSP文件是一个独立的,能自主完成所有任务的模块,

这带来了一系列问题:
HTML代码和Java程序代码强耦合在一起
内嵌的流程控制逻辑
调试困难
可维护性差
可读性差

为了解决以上问题,SUN公司先后制定了两种设计模式:jspmodel1以及jspmodel2

本质区别:在于负责流程控制的组件不同。

0x01 Model1

在JSP Model1中,JSP页面负责调用模型组件来响应客户请求,并将处理结果返回给用户。
JSP既要负责流程控制,还要负责产生用户界面,因此它要同时充当视图和控制器的需要,但它不适合开发复杂的大型应用程序。

0x02 MOdel2

JSP Model2用JSP技术实现视图的功能,用Servlet技术实现控制器的功能,用JavaBean实现模型的功能:

Servlet充当控制器的角色,负责处理客户请求,创建JSP页面需要使用的JavaBean对象,并更具客户请求选择合适的JSP页面返回给客户。 在JSP页面内没有流程控制逻辑,它仅负责检索原先由Servlet创建的JavaBean对象,并把JavaBean对象包含的数据作为动态内容插入到静态模板中。 它清晰地分离了数据展示,数据处理和流程控制。

在Model2中,使用一个Servlet或者Filter充当控制器Controller,所有现代的Web框架都是Model2实现。像Struct1和spring MVC这类框架是在他们的MVC架构中使用一个Servlet Controller,而Structs2则使用Filter。 尽管也支持其他的View技术,但一般来说,它用JSP页面作为应用程序的View。至于Model,则是使用POJO对象。许多人选择使用JavaBean保存模型对象的状态,并将业务逻辑转移到一个Action类中。

在Model2应用程序中,每一个HTTP请求都必须被定向到Controller中。请求的URI告诉控制器要调用那一个Action。Action是指应用程序能够执行的一项操作。一个Action类可以用来服务几个不同的Action或单个Action。控制器会仔细查看URI,决定要调用哪一项Action。它还会将模型对象保存在一个可以通过View访问到的地方,以便服务器端的值可以在浏览器中显示出来。最后,控制器用一个RequestDIspatcher跳转到一个View。在View(JSP)页面中,利用EL表达式和定制标签来显示值。

0x03 MVC

目前,javaee体系主要采用的是MVC模式,MVC是模型(model),视图(view)和控制(controller)的缩写。 这种技术是某model2实现的。

MVC主要用于实现web系统的职能分工。

在MVC分层结构中:
model层主要实现系统中的业务逻辑,通常可以用javabean或EJB来实现。
view层主要是用于和用户的交互,主要用jsp来实现。
controller是model和view之间沟通的桥梁,他可以分派用户的请求,并选择恰当的view来实现交互,同时可以解析用户得输入,并将其映射成模型层可以执行的操作。通常用servlet实现。

0x04 什么是三层架构(three-tier application)

通常意义上的三层架构:把整个业务应用分为三层:表现层(UI),业务逻辑层(BLL),数据访问层(DAL)

三层架构的目的:高内聚,低耦合。

表现层(UI):通俗地讲,是展现给用户的东西,也就是用户在使用应用的时候能看到的一切。

业务逻辑层(BLL):根据具体问题的操作,对数据业务进行逻辑的处理

数据访问层:(DAL):直接对数据库进行操作,也就是对数据库进行增删查改等操作。

Javaweb学习笔记--分层设计的更多相关文章

  1. JavaWeb学习笔记总结 目录篇

    JavaWeb学习笔记一: XML解析 JavaWeb学习笔记二 Http协议和Tomcat服务器 JavaWeb学习笔记三 Servlet JavaWeb学习笔记四 request&resp ...

  2. javaweb学习笔记整理补课

    javaweb学习笔记整理补课 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务器端 * 在用户本地有一个客户端 ...

  3. 【JAVAWEB学习笔记】06_jQuery基础

    接05的学习笔记. 四.使用JQ完成省市二级联动 1.需求分析 使用jquery完成省市二级联动 2.技术分析 2.1数组的遍历操作 方式一: $(function(){ // 全选/ 全不选 $(& ...

  4. javaweb学习笔记(二)

    一.javaweb学习是所需要的细节 1.Cookie的注意点 ① Cookie一旦创建,它的名称就不能更改,Cookie的值可以为任意值,创建后允许被修改. ② 关于Cookie中的setMaxAg ...

  5. Javaweb学习笔记(一)

    一.javaweb学习是所需要的细节 1.发送响应头相关的方法 1).addHeader()与setHeader()都是设置HTTP协议的响应头字段,区别是addHeader()方法可以增加同名的响应 ...

  6. Javaweb学习笔记——(二十一)——————过滤器

    过滤器     过滤器概述         1.什么是过滤器:             过滤器javaweb三大组件之一,它与Serlvet很相似,不过它过滤器是用来拦截请求的,而不是处理       ...

  7. Javaweb学习笔记——(十三)——————JSTL、JSTL核心标签库、自定义标签、有标签体的标签、带有属性的标签、MVC、Javaweb三层框架

    JSTLApache提供的标签库 jar包:jstl-1.2.jar,如果传MyEclipse,他会在我们导入jar包,无需自己导入,如果没有使用MyEclipse那么需要自行导入.--------- ...

  8. JavaWeb学习笔记(七)—— JSP

    一.什么是JSP JSP全名是Java Server Pages,它是建立在Servlet规范之上的动态网页开发技术.在JSP文件中,HTML代码与Java代码共同存在,其中,HTML代码用来实现网页 ...

  9. javaweb学习笔记之servlet01

    一.Servlet概述 A servlet is a small Java program that runs within a Web server. Servlets receive and re ...

随机推荐

  1. Tokumx 安装指南(做法如同MongoDB)

    安装说明系统环境:Centos-6.3安装软件:mongodb-linux-x86_64-2.2.2.tgz下载地址:http://www.mongodb.org/downloads安装机器:192. ...

  2. xcopy拷贝判断是否成功 robocopy排除子目录

    xcopy \\172.16.22.65\server\*.* C:\Inetpub\wwwroot\Server /h /r /s /yif %errorlevel% neq 0 echo copy ...

  3. 安装builderRobot到Rational Functional Tester和Performance Tester

    最近研究安装builder,稍微总结一下,以后继续补充: 1. Robot采用专业的测试脚本语言, 从而导致需要学习专门的API以及专门的语法外, 用进程化的Visual Basic作为脚本语言, 导 ...

  4. Java开发手冊 Java学习手冊教程(MtJava开发手冊)

    本文档的版权归MtJava文档小组全部,本文档及其描写叙述的内容受有关法律的版权保护,对本文档内容的不论什么形式的非法复制.泄露或散布.将导致对应的法律责任. MtJava仅仅是一个学习Java的简化 ...

  5. Java对数组的操作(二)——集合与数组的切换

    在Java开发中经常遇见集合与数组的互相切换,怎样实现呢,呵呵呵,非常easy: import java.util.ArrayList; import java.util.Arrays;       ...

  6. ConvertHelper与泛型集合

    在机房重构时.我们常常会用到ConvertHelper. 它把从数据库中查询到的dateTable(也是一个暂时表)转化为泛型,然后再填充到DataGridView控件中. ConvertHelper ...

  7. android133 360 06 一键锁频,清楚数据

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...

  8. Html简单demo_html列表中进行编辑操作

    html列表中进行编辑操作 <div class="_sort_box" style="float: left;"><?php echo $v ...

  9. 谈谈项目中遇到的各种iOS7适配问题

    由于我的项目要适配到iOS7.1, 而现在已经是9时代了,在实际工作中我也是遇到了各种奇葩的坑,所以我想尽快把遇到的iOS7适配问题和解决方案分享出来,以后这些东西可能就用处不大了. 1.字体问题 i ...

  10. jemalloc源码结构分析(三):arena_malloc_small内存分布

    在arena_s结构中,由NBINS数组将bin按照不同规模等级分别存储,每一个等级对应一颗run树,即一颗以chunk_map_t为节点的红黑树,而这些chunk_map_t节点实际分布于各个chu ...