自信、奉献、快乐
1 MVC概述 MVC并不是JAVA语言所特有的设计思想,也并不是Web应用所特有的思想,它是所有面向对象程序设计语言都应该遵守的规范。 1.1经典的MVC设计模式 MVC(Model-View-Controller)模式,即模型-视图-控制器模式,其核型思想是将整个程序代码分成相对独立而又能协同工作的3个组成部分。 ①模型(Model):业务逻辑层。实现具体的业务逻辑、状态管理的功能。 ②视图(View):表示层。即与用户实现交互的界面,通常实现数据的输入和输出功能。 ③控制器(Controller):控制层。起到控制整个业务流程(Flow Control)的作用,实现View和Model部分的协同工作。 MVC设计模式的结构及各组成部分间的通信方式如图:
MVC设计模式中,事件一般是指客户端Web浏览器提交的各种不同请求,这些请求由控制器进行处理,控制器根据事件的类型来改变模型或各个视图,视图可以接受模型发出的数据更新通知,依据数据根型的结果调整视图效果,呈现在用户面前。而模型也可以通过视图所获得的用户提交的数据进行具体业务逻辑的处理。 随着JSP与Servlet技术的日益成熟,开发人员开始尝试在JAVA Web应用开发中采用MVC设计模式,以实现软件代码更好的可维护性和可重用性。随后出现两种典型的JSP设计模式:1、modle1(JSP设计模式1);2、model2( JSP设计模式2); 1.2JSP设计模式1 在JSP技术的发展初期,由于其便于快速开发的优点,很快就成为了创建Web的应用的热门技术之一。在JSP页面中可以很容易实现内容的显示,业务逻辑的编写以及流程的控制,从而快速地完成应用开发。最初很多的Java Web应用甚至全部由JSP页面构成,这种以JSP为中心的开发模型称为Mode1(设计模式1)。具体实现方式如下图:
在设计模式1中,JSP页面负责接收处理客户端的Web浏览器发送的请求,并在处理后直接进行响应。其间一般会借助Java Bean处理复杂的业务逻辑。 1.3JSP设计模式2 Model2则是MVC设计模式的一种具体实现方式。在Model2中采用Servlet作为控制器,负责接收客户端Web浏览器发送的所有请求,并依据处理的不同结果,转发到对应的JSP页面实现在浏览器客户端的显示。具体实现方式如下图:
2 Struts 2 介绍 目前,Struts已经分化成两个框架:第一个框架是传统的Struts1和WebWork结合后的Struts2。Struts2虽然是在Struts1的基础上发展起来的,但实质上是以WebWork为核心,Struts2为传统的Struts1注入了WebWork的设计理念,统一Struts1和WebWork两个框架,允许Struts1和WebWork开发者同时使用Struts2框架。 Struts分化出来的另一个框架是Shale,这个框架远远超出了Struts1原有的设计思想,它与原有的Struts1的关联很少,它使用全新的设计思想。Shale更像一个新的框架,而不是Struts的升级。而Shale则是建立在JSF之上。 2.1 Struts2框架结构
通过上面的我们看出来,浏览器发出请求后,核心控制器FilterDispatcher根据请求决定调用合适的Action;控制器将用户请求参数用SetXxx()方法写入Action,并且回调execute()方法,然后控制器通过execute()的返回参数决定jsp的显示页面,而显示内容则通过getXxx()方法从Action里获取。并最终通过JSP显示给浏览器。 2.2 Struts2的配置文件 当Struts2创建系统的Action代理时,需要使用Struts2的配置文件。 Struts2的配置文件有两份: •配置Action的struts.xml文件。 •配置Struts2全局属性的struts.properties文件。 Struts.xml文件内定义了Struts2的系列Action,定义Action时,指定该Action的实现类,并定义该Action处理结果与视图资源之间的映射关系。代码如下: --------------------------------------------------------struts.xml--------------------------------------------------------- <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="blog" extends="struts-deault"> <action name="Login" class="com.5d6d.benfox0520.Login"> <result name="success">/welcome.jsp</result> <result name="error">/error.jsp</result> <result name="input">/index.jsp</result> </action> </package> </struts> ------------------------------------------------------------------------------------------------------------------------------ Struts.properties文件形式是系列的key,value对,它指定了Struts2应用的全局属性。 -----------------------------------------------------------struts.properties--------------------------------------------- #struts.devMode=false ------------------------------------------------------------------------------------------------------------------------------ 2.3 Struts2的标签库 Struts2标签库也是Struts2的重要组成部分,Struts2的标签库提供了非常丰富的功能,这些标签库不仅提供了表现层数据处理,而且提供了基本的流程控制功能,还提供了国际化、Ajax支持等功能。 2.4 Struts2的控制器组件 Struts2的控制器组件是Struts2的核心,事实上,所有MVC框架都是以控制器组件为核心的。Struts2的控制器由两部分组成:FilterDispatcher和业务控制器Action. PDF下载地址:http://benfox0520.5d6d.com/thread-5-1-1.html
Powered by: BlogJava Copyright © Ben狐狸