J2EE Web核心技术《Web组件与框架开发技术》——第4 章 Web系统架构设计及MVC模式(第1部分)

上传人:ca****in 文档编号:74778630 上传时间:2022-04-14 格式:DOC 页数:11 大小:198KB
收藏 版权申诉 举报 下载
J2EE Web核心技术《Web组件与框架开发技术》——第4 章 Web系统架构设计及MVC模式(第1部分)_第1页
第1页 / 共11页
J2EE Web核心技术《Web组件与框架开发技术》——第4 章 Web系统架构设计及MVC模式(第1部分)_第2页
第2页 / 共11页
J2EE Web核心技术《Web组件与框架开发技术》——第4 章 Web系统架构设计及MVC模式(第1部分)_第3页
第3页 / 共11页
资源描述:

《J2EE Web核心技术《Web组件与框架开发技术》——第4 章 Web系统架构设计及MVC模式(第1部分)》由会员分享,可在线阅读,更多相关《J2EE Web核心技术《Web组件与框架开发技术》——第4 章 Web系统架构设计及MVC模式(第1部分)(11页珍藏版)》请在装配图网上搜索。

1、杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料第4 章 Web系统架构设计及MVC模式(第1/4部分)在早期的软件开发实现中,人们把软件设计的重点放在数据结构和算法的选择上,如Knuth提出了数据结构+算法=程序。而对于大规模的复杂软件系统来说,软件系统本身的体系架构设计比起对程序的算法和数据结构的选择和设计已经变得明显更重要得多。因此,人们逐渐认识到软件体系架构设计的重要性,但什么是好的软件体系架构设计?“高内聚、低藕合”是系统设计的主要目标,但如何能够达到这样的设计目标?本章系统地介绍Web系统架构设计、MVC模式及在项目中的应用;另外,也还介绍几种常见的分离系统中的类之间关系的

2、设计方法,如利用JSTL标签封装业务处理逻辑代码,利用JavaBean组件分离表现逻辑和业务处理逻辑的代码,利用AOP分离系统中的核心和横切关注点实现代码。1.1 Web系统架构设计及MVC架构模式1.1.1 以页面为中心的Web系统架构1、直接使用JSP页面构建Web系统对于小型的Web应用系统,在设计和开发实现中,可以直接使用JSP页面实现技术构建,这样的设计方案也称为以页面为中心(Page Centric)的设计方案。因为在小型的Web应用系统中,动态功能实现比较简单,因此可以将所有的动态处理和功能实现都由JSP页面中的Java脚本代码(Scriptlet)实现,如图4.1所示为其工作原

3、理示图。Web浏览器JSP页面数据库系统Http请求Http响应修改数据库查询数据库图4.1以页面为中心的Web系统架构示图2、该架构设计方案的优缺点以页面为中心的设计方案的主要优点就是技术实现比较简单,对开发人员的技术能力的要求比较低,不需要系统地掌握J2EE Web开发技术就能够开发实现。但其缺点也是比较明显的,各个JSP页面中的HTML标签和Java脚本代码强耦合在一起,如【例4-2】所示的页面代码。这样的设计方案将导致JSP文件的实现者不仅要熟悉Web页面设计和实现相关的技术,也还要熟悉与JSP及Java相关的编程技术;直接在页面中内嵌与业务处理逻辑有关的功能实现代码,不利于JSP页面

4、及系统的整体维护和功能扩展。开发人员因为要理解应用系统的整体流程,必须要浏览相关的各个JSP页面文件;各个页面之间存在强耦合和紧密相关,更改业务逻辑或数据处理相关的Java脚本代码,可能就需要修改相关的多个不同的JSP页面文件。另外,系统的整体调试也非常困难,Java脚本代码难以阅读也无法重用,将原本由Servlet组件处理的业务流程逻辑都由JSP页面文件承担。3、该设计方案的主要应用场合以页面为中心的设计方案主要适用于小型的以静态页面为主的Web应用系统。第2章中的各个示例基本上都是基于这样的设计思想实现的,如【例2-2】中的响应登录请求的responseUserLogin.jsp页面中的代

5、码示例、【例2-3】中的读写Cookie信息的代码示例、【例2-11】中的利用application对象实现系统访问总数的计数器代码示例等。4、以页面为中心的Web系统架构实现示例下为以一个Web应用系统中的用户登录功能实现为示例,说明如何直接使用JSP页面实现技术构建Web应用系统。1)实现用户登录功能的请求页面【例4-1】为本示例中的用户登录请求的JSP页面代码示例,其中设计有一个登录表单,该表单向服务器端的userLogin.jsp页面发送Http请求(黑体标识的属性)。【例4-1】用户登录请求的JSP页面代码示例用户登录功能的请求页面 您的名称: 您的密码: 2)构建响应请求的服务器端

6、userLogin.jsp页面【例4-2】所示为响应登录请求的服务器端userLogin.jsp页面中的代码示例,在其中利用JSP中的内置对象request获得表单中的各个请求参数;然后再识别所输入的请求参数是否满足系统中所要求的参数值(也就是登录的业务逻辑),但为了简化示例的功能实现,没有利用JDBC技术访问数据库表;最后,根据处理的结果显示输出不同的状态信息。【例4-2】响应登录请求的服务器端userLogin.jsp页面代码示例响应请求的服务器端userLogin.jsp页面从【例4-2】的示例中,明显地了解到以页面为中心的Web系统架构实现中,请求和响应处理都采用JSP页面组件实现,并

7、且直接将处理的Java脚本代码内嵌到JSP页面中。3)测试本示例的功能实现效果在浏览器中输入http:/127.0.0.1:8080/J2EEWebApp/index.jsp的请求URL地址,如图4.2(a)所示。在表单中输入登录的请求参数,用户名为admin、密码为1234,并提交表单后,将出现如图4.2(b)所示的结果信息。 图4.2(a) 登录功能请求页面表单 图4.2(b) 响应请求的结果信息如果在登录表单中输入错误的身份信息,如错误的密码登录系统,如图4.3(a)所示。提交登录表单后,将出现如图4.3(b)所示的处理结果信息。 图4.3(a) 输入错误的密码登录系统 图4.3(b)

8、响应登录失败请求的结果信息1.1.2 JSP Model One Web系统架构1、利用JSP Model One 模式架构Web应用系统该构架模式的主要实现方式是利用“JSP + JavaBeans(或者JSP+Servlet)”等标准的J2EE Web组件技术构建出Web应用系统,其核心思想是将完成业务功能处理的Java脚本程序代码从表现层中的各个JSP页面分离出,并包装到Java组件(JavaBean)类程序中。在JSP页面中通过动作标签创建Java组件的对象实例,并利用和标签操作对象中的属性。但仍然还需要应用Java脚本对业务组件中的方法进行调用和根据处理的结果转发到不同的目标页面中。

9、2、JSP Model One模式的工作原理图4.4所示为JSP Model One 模式系统构架的工作原理图,用户在浏览器端的请求页面中发出Http请求,该Http请求一般是向应用服务器端的某个JSP页面发出;JSP页面再调用具体完成业务功能的JavaBean组件程序中的业务功能方法,由该业务功能方法实现最终的业务功能操作(如访问数据库表中的数据等);然后业务功能组件再将处理后的结果数据返回到某个显示结果的JSP页面中,响应请求的JSP页面则将处理后的结果发送到显示结果的JSP页面中以实现结果的显示输出。Web应用服务器端Web浏览器客户端请求页面响应请求的JSP页面JavaBean组件程序

10、数据库系统显示处理结果JSP页面图4.4 JSP Model One 模式系统构架的工作原理显示结果3、该架构模式的主要技术特性在此架构设计中的各个JSP页面不仅要承担系统中的各种数据输入和输出等视图(View)表现部分的功能,也还要承担系统中的请求和响应的控制调度(Control)的职责。因此,在职责分配方面体现为多重!不符合面向对象类设计中的单一职责原则。另外,该设计方案也还会导致在JSP页面中出现大量的Java脚本代码,因为在JSP页面中还需要对业务功能组件中的业务方法进行调用,这可以参考【例4-3】中所示的利用JSP Model One 模式构架的Web站点中的某个功能页面的代码示例。

11、4、该设计方案的主要应用场合该架构模式一般适用于中型Web应用系统,其中的业务逻辑处理和数据访问功能实现代码并不复杂。5、JSP Model One Web系统架构实现示例第2章中的【例2-1】和【例2-2】示例其实是以页面为中心的Web系统架构实现示例,现对该示例进行重构(Refactor)和扩展为采用JSP Model One的Web系统架构实现。1)在项目中添加业务功能处理UserInfoManageImple类【例4-3】所示为实现用户登录业务功能处理的UserInfoManageImple类代码示例,其中利用UserInfoBaseVO实体类(该类中的详细代码请参考【例2-7】示例)

12、包装用户登录的基本信息,并在doUserLogin()方法中识别登录的请求参数是否为指定的值(用户名为yang、密码为1234),注意其中黑体所标识的语句。【例4-3】实现用户登录业务功能处理的UserInfoManageImple类代码示例package com.px1987.webcrm.model.imple;import com.px1987.webcrm.model.vo.UserInfoBaseVO;public class UserInfoManageImple public UserInfoManageImple() public boolean doUserLogin(Use

13、rInfoBaseVO oneUserInfoBaseVO) String userName=oneUserInfoBaseVO.getUserName();String userPassWord=oneUserInfoBaseVO.getUserPassWord();if(userName.equals(yang)&userPassWord.equals(1234)return true; elsereturn false;2)修改【例2-2】响应登录请求的responseUserLogin.jsp页面代码在【例4-4】所示的responseUserLogin.jsp页面中创建业务实体类及业

14、务类的对象实例,并利用标签直接将表单中的请求参数包装到业务实体对象中;然后再调用业务功能方法处理登录的请求,并获得和识别登录后的处理结果;如果登录成功,则保存用户的身份信息到会话HttpSession对象中,实现会话跟踪。如果登录失败,则构建错误信息并保存到request请求对象中;最后分别转发跳转到不同的目标JSP页面中显示登录结果的状态信息,修改后的最终页面代码如【例4-4】所示。【例4-4】修改后的响应登录请求的responseUserLogin.jsp页面代码示例 响应登录请求的页面 对比【例4-4】和【例4-2】两个示例页面中的代码,可以了解到JSP Model One Web系统架

15、构是对以页面为中心的Web系统架构的设计方案的优化,但在【例4-4】的示例中仍然会出现Java脚本代码,只是比【例4-2】示例中的Java脚本代码量相对减少了,并将业务功能处理和逻辑判断等方面的代码分离到业务功能类中。3)测试本示例的最终实现效果是否正确部署本示例中的各个页面和业务功能程序类到Tomcat服务器中,然后在浏览器中按照图4.5所示的URL地址执行用户登录的功能页面userLogin.jsp,并在登录表单中输入有效的身份信息,如图4.5所示。图4.5 在登录表单中输入有效的身份信息单击表单中的【提交】按钮后,将出现如图4.6(a)所示的响应结果信息。而如果在图4.5所示的登录表单中

16、输入错误的信息,将出现如图4.6(b)所示的响应结果信息。 图4.6(a) 响应登录成功请求的结果信息 图4.6(b) 响应登录失败请求的结果信息1.1.3 JSP Model Two Web系统架构1、利用JSP Model Two 模式架构Web应用系统JSP Model Two Web系统架构虽然已经具备了使用MVC模式实现Web应用系统架构的雏形,但并非严格意义上的MVC架构,该构架模式其实是MVC构架模式在J2EE Web组件技术上的具体应用,也称为Web MVC架构。在JSP Model Two Web系统架构模式中,仍然应用MVC构架模式中的模型(M)视图(V)控制器(C)三种不

17、同形式的组件来构建Web应用系统。其中的模型层组件(Model)由JavaBean组件承担,并完成业务功能和数据处理等方面的功能;而视图(View)层组件由JSP页面承担,并实现人机交互的前台界面和处理后的结果的显示输出;而控制(Control)调度方面的功能则由系统中的Servlet组件承担,主要实现调度JSP页面和JavaBean组件和转发目标页面等方面的功能。2、JSP Model Two模式的工作原理如图4.7所示为JSP Model Two模式的系统构架的工作原理图,用户在浏览器端的请求页面中发出Http请求,该Http请求向应用服务器端的某个控制器Servlet组件发出;该Serv

18、let组件将根据请求的类型相应地再调用具体完成业务功能的JavaBean组件类中的业务功能方法,由该业务功能方法实现最终的业务功能操作和数据访问(如访问数据库表中的数据等);然后业务功能组件再将处理后的结果数据返回到该控制器Servlet组件中,控制器Servlet组件将根据处理后的结果状态的不同分别转发到对应的目标页面中显示结果,其中对处理结果的显示输出和请求采用两个不同的JSP页面。图4.7 JSP Model Two 模式系统构架的工作原理Web应用服务器端Web浏览器客户端请求页面JavaBean数据库系统显示处理结果JSP页面显示结果响应请求的Servlet组件3、该架构模式的主要技

19、术特性在此架构设计中将系统中的表现层中的功能组件和业务逻辑处理功能组件彻底地分离,JSP页面只承担输入和输出方面的功能,而业务逻辑处理和数据访问都由JavaBean组件程序承担。因此,各自的职责相互分离;而表现层和业务层之间的通讯,则由控制层Servlet组件承担。整个系统中的表现、业务和控制调度三者的程序代码彻底分离,各自职责单一,但有相互配合。4、该设计方案的主要应用场合该构架模式可以应用于复杂的大型Web应用系统的开发实现中,同时也是J2EE技术平台中的许多MVC框架如Struts/Struts2框架的基础架构。5、JSP Model Two Web系统架构实现示例下面通过对【例4-3】

20、和【例4-4】所示的JSP Model One Web系统架构实现的示例进一步完善,并重构和扩展为JSP Model Two Web系统架构实现。1)修改userLogin.jsp页面向控制层Servlet组件发送Http请求在JSP Model Two Web系统架构实现中,所有的页面请求(通过表单或者超链接)都应该要向控制层Servlet组件程序发送,而不再向JSP页面发送。因此,需要修改第2章【例2-1】示例中的userLogin.jsp页面内的表单标签内的action属性为如下黑体标识的值,其中利用EL表达式动态获得Web应用系统的Context名称(Web应用上下文名),并向控制层S

21、ervlet程序发送Http请求:. 其他标签,在此省略对于显示登录成功后的状态信息继续采用第2章【例2-20】所示的动态获得HttpServletRequest对象中的数据的showOneOnLineUserInfo.jsp页面代码示例。2)设计和开发实现控制层Servlet组件本示例中的控制层Servlet组件采用第3章中的【例3-1】实现用户登录功能处理的Servlet程序类代码示例,在此不再重复地附录。3)设计和开发实现业务层业务功能处理组件本示例中的业务层中的业务功能处理组件采用【例4-3】中的代码示例,在此不再重复地附录。4)测试本示例的最终功能效果是否正确部署本示例中的各个页面文

22、件和业务功能类、控制层Servlet组件到Tomcat服务器中,然后在浏览器继续按照图4.5所示的URL地址执行项目中的用户登录的功能页面userLogin.jsp,并在登录表单中输入有效的身份信息,如图4.5所示。单击表单中的【提交】按钮后,将出现如图4.8(a)所示的响应结果信息。而如果在图4.5所示的登录表单中输入错误的信息,将出现如图4.8(b)所示的响应结果信息。 图4.8(a) 响应登录成功请求的结果信息 图4.8(b) 响应登录失败请求的结果信息对比图4.8(a)和图4.6(a)中的浏览器URL地址栏中的信息,在图4.8(a)示图中的URL地址为请求的目标Servlet程序的UR

23、L地址,但在浏览器窗口中所显示的信息来自于【例2-20】所示的showOneOnLineUserInfo.jsp页面文件,因为在Servlet程序中采用请求转发的方式跳转到目标页面中。而在图4.6(a)示图中的URL地址为请求的目标JSP页面的URL地址,没有经过Servlet程序的处理。6、理解MVC架构模式中所倡导的“表现”与“业务”分离的思想在JSP Model Two Web系统架构实现的示例中,在其中的请求页面userLogin.jsp中并没有包含任何的“Java脚本”程序代码,如图4.9所示的页面标签。图4.9 在请求页面中没有包含任何的脚本代码同样在该示例的响应输出页面中也没有包含任何的“Java脚本”程序代码,如图4.10所示的页面标签。图4.10 在响应输出页面中也没有包含任何的脚本代码因此,在JSP Model Two Web系统架构实现中,所有与业务功能处理和请求/响应等调度方面的功能程序都由对应的JavaBean组件和Servlet组件承担。页面设计者美工和程序开发者程序员分工明确,Java程序员可以集中精力创建可重用的代码,而HTML设计者可以集中精力于页面内容的表现实现。杨教授工作室,版权所有,盗版必究, 11/11页

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!