J2EE中MVC三层架构

合集下载

Struts、Spring、Hibernate三大框架的原理和优点

Struts、Spring、Hibernate三大框架的原理和优点

Struts的原理和优点.Struts工作原理MVC即Model—View—Controller的缩写,是一种常用的设计模式。

MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。

MVC的工作原理,如下图1所示:Struts 是MVC的一种实现,它将Servlet和JSP 标记(属于J2EE 规范)用作实现的一部分。

Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展.Struts的工作原理,视图:主要由JSP生成页面完成视图,Struts提供丰富的JSP 标签库: Html,Bean,Logic,Template等,这有利于分开表现逻辑和程序逻辑。

控制:在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。

ActionServlet是一个通用的控制组件。

这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。

它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。

另外控制组件也负责用相应的请求参数填充Action From(通常称之为FromBean),并传给动作类(通常称之为ActionBean)。

动作类实现核心商业逻辑,它可以访问java bean 或调用EJB。

最后动作类把控制权传给后续的JSP 文件,后者生成视图。

所有这些控制逻辑利用Struts-config.xml文件来配置。

模型:模型以一个或多个java bean的形式存在。

这些bean分为三类:Action Form、Action、JavaBean or EJB.Action Form通常称之为FormBean,封装了来自于Client的用户请求信息,如表单信息。

Action通常称之为ActionBean,获取从ActionSevlet传来的FormBean,取出FormBean中的相关信息,并做出相关的处理,一般是调用Java Bean或EJB等。

J2EE三层架构及其优越性

J2EE三层架构及其优越性

J2EE 的三层架构:
J2EE 与传统的CS 之间的优缺点:
J2EE 的优越性:
1.保留现存的IT 资产:可以充分利用原有的投资,由于基于J2EE 平台的产品几乎能在任何操作系统和硬件配置上运行,现有的操作系统和硬件也能被保留使用。

2.高效的开发:J2EE 允许公司吧一些通用的,很繁琐的服务端任务交给中间件供应商取完成。

这样开发人员可以集中精力在如何创建商业逻辑上,相应缩短开发时间。

3.支持异构环境:J2EE 能够开发部署在异构环境中的可移植程序,基于J2EE 的应用程序不依赖于任何特定操作系统,中间件,硬件,因此设计合理的基于J2EE 的程序只需开发一次就可部署到各种平台。

也允许客户订购与J2EE 兼容的第三方的组成的组件,把他们部署到异构环境中,节省了由自己制定整个方案所需的费用。

4.可伸缩性;J2EE 领域的供应商提供了更为广泛的负载平衡策略,能消除系统中的瓶颈,允许多台服务器集成部署,这种部署可达数千处理器,实现可高度伸缩的系统,满足未来商业的需求。

5.稳定的可用性:J2EE 部署到可靠的操作系统中,他们支持长期的可用性。

CS 的不足:有一个庞大的客户端,并且在数据安全性要求不高的应用中,对于网络联通过于依赖。

客户端需要安装专用的客户端软件及运行环境。

对于版本更新等操作业务复杂。

系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。

表现层 客户端组件 主要功能在于数据的显示,数据如何表现。

应用层 1.业务功能子层 2.应用平台子层 主要是对于业务的处理以及数据的处理。

数据层 1.数据访问子层 2.数据管理子层
主要是实现与数据库的交互。

JavaWeb之三层架构(MVC架构):软件设计架构

JavaWeb之三层架构(MVC架构):软件设计架构

JavaWeb之三层架构(MVC架构):软件设计架构
MVC 开发模式
⼀、JSP 演变历史
1. 早期只有servlet,只能使⽤response输出标签数据,⾮常⿇烦
2. 后来⼜jsp,简化了Servlet的开发,如果过度使⽤jsp,在jsp中即写⼤量的java代码,有写html表,造成难于维护,难于分⼯协作
3. 再后来,java的web开发,借鉴 MVC 开发模式,使得程序的设计更加合理性
⼆、MVC
1. M:Model,模型。

JavaBean
完成具体的业务操作,如:查询数据库,封装对象。

2. V:View,视图。

JSP,HTML
⽤来展⽰数据。

3. C:Controller,控制器。

Servlet
①获取⽤户的输⼊
②调⽤模型
③将数据交给视图进⾏展⽰
界⾯层(表⽰层):⽤户看的得界⾯。

⽤户可以通过界⾯上的组件和服务器进⾏交互。

业务逻辑层:处理业务逻辑的。

数据访问层:操作数据存储⽂件。

MVC 是⼀种思想
MVC 的理念是将软件代码拆分称为组件,单独开发,组合使⽤(⽬的还是为了降低耦合度)
三、MVC 的优缺点
1、优点
①耦合性低,⽅便维护,可以利⽤分⼯协作;
②重⽤性⾼;
2、缺点
①使得项⽬架构变得复杂,对开发⼈员要求⾼;。

J2EE的层次和组成

J2EE的层次和组成

J2EE的层次和组成J2EE的层次和组成J2EE组件和“标准的” Java类的不同点在于:它被装配在一个J2EE应用中,具有固定的格式并遵守J2EE规范,由J2EE服务器对其进行管理。

以下是关于J2EE的层次和组成,欢迎大家参考!目前,Java 2平台有3个版本,它们是适用于小型设备和智能卡的Java 2平台Micro版(Java 2 Platform Micro Edition,J2ME)、适用于桌面系统的Java 2平台标准版(Java 2 Platform Standard Edition,J2SE)、适用于创建服务器应用程序和服务的Java 2平台企业版(Java 2 Platform Enterprise Edition,J2EE)。

J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。

J2EE技术的基础就是核心Java平台或Java 2平台的标准版,J2EE不仅巩固了标准版中的许多优点,例如"编写一次、随处运行"的特性、方便存取数据库的JDBC API、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML 技术的全面支持。

其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。

J2EE使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组件根据他们所在的层分布在不同的机器上。

事实上,sun 设计J2EE的初衷正是为了解决两层模式(client/server)的弊端,在传统模式中,客户端担当了过多的角色而显得臃肿,在这种模式中,第一次部署的时候比较容易,但难于升级或改进,可伸展性也不理想,而且经常基于某种专有的协议??通常是某种数据库协议。

MVC与三层架构图

MVC与三层架构图

M:JavaBean--模型 V:JSP--显示页面 C:Servlet--控制台访问M客户端(IE 等)Servlet获得客户端数据并把数据封装到域对象中CService:服务处理业务逻辑Dao:数据访问Data Access Object 数据库JavaBean:封装数据JSPV数据显示层:最顶层(第三步)业务逻辑层(第二步)数据访问层:最底层(第一步)DAO接口Service接口cn.itcast.domain:JavaBeancn.itcast.dao:DAO接口Cn.itcast.dao.impl:DAO实现cn.itcast.service:业务接口cn.itcast.service.impl:业务实现cn.itcast.web.controller:ServletWEB-INF/pages:JSP(用户无法访问,但内部可以展现给客户端)cn.itcast.util:工具类cn.itcast.exception:自定义的异常访问1调用专门用来服务的方法3取出数据45存放改变的数据546调用6取出数据7存放数据8取出数据1封装数据2封装数据2传递数据3请求7取出结果8请求转发9显示数据101、无经验就先按逆顺序开发:数据显示层——业务逻辑层——数据访问层2、为降低耦合性(为了抽掉某个部分,整个结构所受的影响不大),采取抽象编程——接口3、Structs2才真正的实现了MVC三层架构4、建模(建立JavaBean)没有建好相当于全挂,搞定了JavaBean,数据库也就搞定了。

MVC三层构架

MVC三层构架

MVC框架MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑和数据显示分离的方法组织代码,将业务逻辑被聚集到一个部件里面,在界面和用户围绕数据的交互能被改进和个性化定制的同时而不需要重新编写业务逻辑。

MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。

比如一批统计数据可以分别用柱状图、饼图来表示。

C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

优点耦合性低视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。

因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。

模型是自包含的,并且与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。

如果把数据库从MySQL移植到Oracle,或者改变基于RDBMS数据源到LDAP,只需改变模型即可。

一旦正确的实现了模型,不管数据来自数据库或是LDAP服务器,视图将会正确的显示它们。

由于运用MVC的应用程序的三个部件是相互独立,改变其中一个不会影响其它两个,所以依据这种设计思想能构造良好的松耦合的构件。

[11]重用性高随着技术的不断进步,需要用越来越多的方式来访问应用程序。

MVC模式允许使用各种不同样式的视图来访问同一个服务器端的代码,因为多个视图能共享一个模型,它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。

MVC模式,SSM框架,三层架构,Java开发中常见包名的意义

MVC模式,SSM框架,三层架构,Java开发中常见包名的意义

MVC模式,SSM框架,三层架构,Java开发中常见包名的意义什么是MVC模式?M model 模型-编写程序应有的功能,数据管理和数据库设计。

V view 视图层-界⾯设计⼈员进⾏界⾯设计。

C controller 控制-控制器负责转发请求,对请求进⾏处理。

什么是SSM框架?SSM是Spring+Spring MVC+Mybatis的缩写,主流的Java EE企业级框架。

其中,Spring是⼀个轻量级的控制反转(IOC)和⾯向切⾯(AOP)的容器框架,可以帮助我们创建对象。

Spring MVC控制开发,让开发简单规范。

MyBatis是⼀个基于Java的持久层框架,封装了增删改查操作。

Spring看到这个,很多⼈会和你说什么控制反转(IoC),依赖注⼊(DI)、AOP、事务什么……对新⼿来说,这些是什么⿁呢?控制反转我不写定义,就说⼀下你的电脑。

你的电脑上有usb⼝吧,有hdmi⼝吧。

电脑上⽤什么键盘,不取决于电脑本⾝,⽽是插在usb上的键盘是什么?这个能理解吧。

你看控制电脑⽤什么输⼊的设备并不是由电脑控制的,⽽是你插⼊的键盘是什么来控制的。

这个控制不就反了吗?依赖注⼊就是控制反转。

电脑的输⼊设备依赖它被插⼊的是什么键盘。

插⼊机械键盘,输⼊设备就是机械键盘,插⼊数字键盘就只能输⼊数字。

从插键盘这个事来说:⽆⾮是从电脑⾓度看,是依赖注⼊,输⼊设备是什么依赖注⼊的键盘是什么;从键盘⾓度看是控制反转,插⼊的键盘来控制电脑是什么输⼊设备。

为什么要⽤依赖注⼊?⽬的就是可以灵活搭配。

如果你的电脑上的键盘是焊死在电脑上的,键盘坏了,你的电脑也废了。

你肯定不想这样吧。

Java开发中,我们需要创建⼤量的对象,有些重要的对象牵⼀发⽽动全⾝,这样的对象我们可以交给Spring帮我们来创建,我们只需要提供配置⽂件,这个配置⽂件可以是xml,也可以是java本⾝。

好⽐Spring是个⼯⼚,按图纸就可以做出产品。

AOP什么是切⾯?你可以这样想:⼀个公司有多个销售部,都需要⾏政帮忙搞定⽇常的订⽂具、机票、办公室、出差酒店什么的,都需要财务搞定报销、收付款什么的事务吧,要仓库帮忙发货什么的。

MVC-三层架构

MVC-三层架构

Sub title
优点 1、开发人员可以只关注整个结构中的其中某一层; 2、可以很容易的用新的实现来替换原有层次的实现; 3、可以降低层与层之间的依赖; 4、有利于标准化; 5、利于各层逻辑的复用。 缺点 1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务 可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。 2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表 示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的 业务逻辑层和数据访问层中都增加相应的代码。 3、增加了开发成本。
Java web 设计模式 的简介
Sub title
三层架构 与 MVC 模式 (model view controller )
三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为: 表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL) 区分层次的目的即为了“高内聚,低耦合”的思想,write once,only once。 概念简介 1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的 时候他的所见所得。 2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作, 对数据业务逻辑处理。 3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删 除、修改、更新、查找等。
Sub title
显示层 位于最外层(最上层),离用户最近。用于显示数据和接收用户输入的数 据,为用户提供一种交互式操作的界面。 业务逻辑层(Business Logic Layer) 它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有 关的系统设计,业务逻辑层在体系架构中的位置很关键,它处于数据访问 层与表示层中间,起到了数据交换中承上启下的作用。对于数据访问层 而 言,它是调用者;对于表示层而言,它却是被调用者。 数据层 数据访问层:有时候也称为是持久层,其功能主要是负责数据库的访问, 可以访问数据库系统、二进制文件、文本文档或是XML文档。简单的说 法就是实现对数据表的Select,Insert,Update,Delete的操。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3 Sept. 2008 Confidential
② 图书修改功能的实现 c、将此请求转发到addBook.jsp页面。 将此请求转发到addBook.jsp页面。 addBook.jsp页面
successPage = "/admin/bookManage/addBook.jsp"; request.getRequestDispatcher(successPage).forward(request, response);
3 Sept. 2008 Confidential
2、JSP+持久层结构存在的问题 JSP+持久层结构存在的问题 ① JSP页面代码较多,不利于JSP页面的共享(页面设计人 员看不懂页面的代码)。 ② 数据库连接必须关闭的问题: 在JSP页面用finally块来关闭 ━ 问题: JSP页面无法共享,而且代码凌乱。 在DAO类中用finally块来关闭 ━ 问题: 代码凌乱。
3 Sept. 2008 Confidential
4、J2EE的MVC架构(持久层+Jsp+Servlet) J2EE的MVC架构(持久层+Jsp+Servlet) 架构 +Jsp+Servlet
Servlet 持久层 JSP页面 JSP页面
DB
Tomcat
3 Sept. 2008 Confidential
3 Sept. 2008 Confidential
3、解决方法 重点: ━ 重点: ① 将页面中与显示数据无关的内容,即应用逻辑放到后台的 将页面中与显示数据无关的内容, 类中。 类中。 而且此类要能处理web请求(request) web请求 ② 而且此类要能处理web请求(request)
将应用逻辑放到Servlet中 将应用逻辑放到Servlet中 Servlet
3 Sept. 2008 Confidential
J2EE中MVC三层架构的实现 J2EE中MVC三层架构的实现
3 Sept. 2007 2008 By Neusoft Group. All rights reserved Copyright Neusoft Confidential
J2EE中MVC三层架构的实现 J2EE中MVC三层架构的实现
successPage = "/admin/bookManage/bookManage.jsp"; request.getRequestDispatcher(successPage).forward(request, response);
3 Sept. 2008 Confidential
步骤3 将后台管理菜单中书籍管理子菜单的超链接改为Book/List 步骤3:将后台管理菜单中书籍管理子菜单的超链接改为Book/List 步骤4 bookManage.jsp页面代码的编写 步骤4:bookManage.jsp页面代码的编写 a、从request中获得图书集合books request中获得图书集合books 中获得图书集合 <% (ArrayList)request.getAttribute(“books” ArrayList books = (ArrayList)request.getAttribute(“books”); ……………… %> b、然后从此图书集合中取出每本书籍,并将此书的信息显示在页面上。 然后从此图书集合中取出每本书籍,并将此书的信息显示在页面上。 <%=book.getBook_author() %>
successPage = "/admin/bookManage/addBook.jsp"; request.getRequestDispatcher(successPage).forward(request, response);
3 Sept. 2008 Confidential
步骤3 bookManage.jsp中 添加” 的提交地址改为Book/OpenAdd 步骤3:将bookManage.jsp中“添加”按钮的提交地址改为Book/OpenAdd 步骤4 addBook.jsp页面代码的编写 步骤4:addBook.jsp页面代码的编写 a、从request中获得图书对象books request中获得图书对象books 中获得图书对象 <% )request.getAttribute(“book” Book book = (Book )request.getAttribute(“book”); ……………… %> b、然后从此图书的信息显示在页面上。 然后从此图书的信息显示在页面上。 <%=book.getBook_author() %>
request1 (book)
ModifyBook (Servlet)
3 Sept. 2008 Confidential
② 图书打开修改功能的实现 步骤1 创建Servlet OpenAddBookjava,其RUL-Mapping为Book/OpenAdd。 步骤1:创建Servlet OpenAddBookjava,其RUL-Mapping为Book/OpenAdd 步骤2 步骤2:在OpenAddBook.java的doGet方法 OpenAddBook.java的doGet方法 a、从请求中获得要修改的图书的编号 String book_id = request.getParementer(“book_id”); request.getParementer(“book_id” a、编写获得指定图书信息的代码 bookDao.getBookById(book_id Book book = bookDao.getBookById(book_id ); b、然后将获得的图书(book)存储到request中。 然后将获得的图书(book)存储到request中 request request.setAttribute("book",book); c、将此请求转发到addBook.jsp页面。 将此请求转发到addBook.jsp页面。 addBook.jsp页面
3 Sept. 2008 Confidential
6、图书修改功能MVC实现 图书修改功能MVC实现 MVC ①流程图 OpenModifyBook (Servlet)
请求1 请求1 (Book/OpenModify)
request1 changeBookInfoSuccess .jsp request2 changeBookInf.jsp 请求2 请求2 (Book/Modify)
3 Sept. 2008 Confidential
② 图书修改功能的实现 步骤1 创建Servlet AddBook.java,其RUL-Mapping为Book/Add。 步骤1:创建Servlet AddBook.java,其RUL-Mapping为Book/Add 步骤2 步骤2:在AddBook.java的doGet方法 AddBook.java的doGet方法 a、从请求中获得要修改的图书的编号,以及修改后的图书数据 从请求中获得要修改的图书的编号, request.getParementer(“book_id” String book_id = request.getParementer(“book_id”); request.getParementer(“book_name” String book_name= request.getParementer(“book_name”); a、编写将请求中获得的图书数据封装为一个Book对象、book 编写将请求中获得的图书数据封装为一个Book对象、 Book对象 Book book =new Book(); book.setBook_id(book_id book.setBook_id(book_id ); …… b、然后将此修改后的图书对象(book)存储到数据库中。 然后将此修改后的图书对象(book)存储到数据库中。 BookDAO bookDAO = new BookDAO(); bookDAO.addBook(book);
5、图书列表功能MVC实现 图书列表功能MVC实现 MVC
① 流程图
BookList (Servlet)
请求 (Book/List) request request (books)
bookManage.jsp
3 Sept. 2008 Confidential
Hale Waihona Puke ② 图书列表功能的实现 步骤1 创建Servlet BookList.java,其RUL-Mapping为Book/List。 步骤1:创建Servlet BookList.java,其RUL-Mapping为Book/List 步骤2 步骤2:在BookList.java的doGet方法 BookList.java的doGet方法 a、编写获得所有图书的代码 Array List books = bookDao.getAllBooks(); b、然后将获得的图书集合(books)存储到request中。 然后将获得的图书集合(books)存储到request中 request request.setAttribute("books",books); c、将此请求转发到bookManage.jsp页面。 将此请求转发到bookManage.jsp页面。 bookManage.jsp页面
1、课堂实践内容: 课堂实践内容: JSP+持久层结构存在的问题 JSP+持久层结构存在的问题 解决方法 J2EE的MVC架构(持久层+Jsp+Servlet) J2EE的MVC架构(持久层+Jsp+Servlet) 架构 +Jsp+Servlet 图书列表功能MVC实现 图书列表功能MVC实现 MVC 图书修改功能MVC实现 图书修改功能MVC实现 MVC
相关文档
最新文档