Javaweb学习笔记--分层设计

在早期的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):直接对数据库进行操作,也就是对数据库进行增删查改等操作。

时间: 2024-08-09 11:32:36

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

【我的《冒号课堂》学习笔记】设计原则(1)间接原则

间接原则 All problems in computer science can be solved by another level of indirection, except of course for the problem of too many indirections. ——David Wheeler 这是一句计算机界的名言.在计算机领域中这样的例子数不胜数,像文件系统中的路径path,HTTP中的URI.数据库中的外键foreign key.程序中的变量均具有间接指代作业. 先

Javaweb学习笔记4—Reuest&Response

 前几天博客被黑了,导致博客登陆不上,把前几天应该发的东西的东西重新发一遍 今天来讲javaweb的第四段学习. Request和Response还是比较重要的 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下载 另外:如果图看不清的话请右击---在新窗口中打开会清楚很多. 响应对象 1,Response响应: 常用响应对象:ServletResponse HttpServletResp

Javaweb学习笔记5—Cookie&Session

 前几天博客被黑了,导致博客登陆不上,把前几天应该发的东西的东西重新发一遍  今天来讲javaweb的第五阶段学习. Cookie和Session同样是web开发常用到的地方. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下载 另外:如果图看不清的话请右击---在新窗口中打开会清楚很多. 一.会话管理技术概述 1 什么是会话? 这里的会话指的是web开发中的一次通话过程,当打开浏览

Javaweb学习笔记6—EL表达式与JSTL及自定义标签

 前几天博客被黑了,导致博客登陆不上,把前几天应该发的东西的东西重新发一遍 今天来讲javaweb的第六阶段学习. EL表达式与JSTL及自定义标签是对上篇文章介绍的JSP的扩展,不能说是很重要的东西,但是也要了解. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下载 另外:如果图看不清的话请右击---在新窗口中打开会清楚很多. 一.EL表达式 1,EL简介 Expression Lan

JavaWeb学习笔记之Servlet(一)

1. 引子: 当我们开始进入JavaWeb开发的学习时,我们就必须要和Servlet和HTTP这两个词进行打交道了,尤其是Servlet.即使到了后面使用JSP (我们知道JSP其本身就是一个Servlet)来进行开发我们的应用. 下图就是 Servlet API中相应的UML图,在学习JavaWeb 开发时,我们最好对下面的各个Servlet中的方法做一定的了解及其相应的图中的关系,尤其是HttpServletRequest和HttpServletResponse 中的方法. 2. 部署服务器

Javaweb学习笔记10—文件上传与下载

 今天来讲javaweb的第10阶段学习.文件的上传与下载,今天主要说的是这个功能的实现,不用说了,听名字就是外行人也知道肯定很重要啦. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下载 另外:如果图看不清的话请右击---在新窗口中打开会清楚很多 一*, 文件的上传:      1 *分析实现步骤: 1.1* 客户端浏览器通过文件域选择本地要上传的文件. * 点击"上传"按钮

【JAVAWEB学习笔记】09

今天晨读单词: order:订单constraint:(强制)约束foreign key:外键references:指向orderitem:订单项join:加入resourceBundle:资源捆绑classLoader:类加载器properties:属性inputstream:输入流 今日学习目标: 1.能够描述表与表的关系 2.能独立编写一对多的表关系SQL语句 3.能独立编写多对多的表关系SQL语句 4.能使用SQL进行多表查询 5.能使用JDBC完成单表增删改查操作 值得注意的是:除了d

【JAVAWEB学习笔记】07

今天主要学习了BootStrap,viewport的介绍和最后对网站进行了重构 今天晨读单词: Compatible:兼容性viewport:视口device:设备initial:初始化(缩写init)Template:模板scale:缩放container:容器fluid:液体,流navbar:导航条icon:图标dropdown:向下separator:分割group:组current:当前inverse:相反的active:激活default:默认的item:项 Viewport介绍 一.

【JAVAWEB学习笔记】13_servlet

JavaWeb核心之Servlet 教学导航 学习目标: 案例一.完成用户登录功能 案例二.记录成功登录系统的人次 一.Servlet简介 1.什么是Servlet Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求.响应给浏览器的动态资源.但servlet的实质就是java代码,通过java的API  动态的向客户端输出内容 servlet规范:包含三个技术点 1)servlet技术 2)filter技术---过滤器 3)listener技术--