从一个高度层次来看,Strtsu2属性pull-MVC(或是MVC2)框架;这与传统的MVC框架略有不同,因为action的角色采用模型,而不是控制器,虽然这样有一些重叠."pull"来自于视图从action拉数据,而不是持有一个分开的可用模型对象.
我们知道在概念方面意味着什么,但在执行层面意味着什么?这个模型-视图-控制器模式在Struts2中被实现成了五个核心部分--actions,拦截器,值栈/OGNL,结果类型和结果/视图技术.
图1:The MVC / Struts2 Architecture
图1描述了从Struts2高度层面上的结构, 包含了模型,视图和控制器.控制器是一个实现了Struts2里分派Servlet过滤器以及拦截器,模型实现的actions,视图则是由结果类型和结果的组成.值栈和ONGL提供了一个通用的路线,链接和集成其他组件.
我们在这章讨论一些通用的部分,将会有很多信息涉及到配置.配置WEB应用,配置actions,拦截器,结果等等.记住,这些说明只是为了提供如果完成的背景,或许不是最有效的配置应用的方式.在后面的章节我们将讨论更加容易和更有效的方式以完成同样的目标,使用约定俗成的配置,注释和零配置插件.
在我们进入详细讲解核心构成之前我们先来讨论一下全局的配置.
Configuration
在配置Struts2之前,你需要先下载发行版或是在你的Maven2的"pom.xml"文件中配置它的依赖关系:
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.0.6</version>
</dependency>
做完之后,Struts2应用的配置就可以分成三个独立的文件,如图2中所示.
Figure 2: Configuration file scope for framework elements
需要在你的"web.xml"文件里为WEB应用的配置FilterDispatcher Servlet过滤器:
1 <filter>
2 <filter-name>action2</filter-name>
3 <filter-class>
4 org.apache.struts2.dispatcher.FilterDispatcher
5 </filter-class>
6 </filter>
7 <filter-mapping>
8 <filter-name>action2</filter-name>
9 <url-pattern>/*</url-pattern>
10 </filter-mapping>
11
它配置了基本的WEB应用.剩下来的事就是使用"struts.properties"配置文件来自定义WEB应用的执行环境,通过"struts.xml"配置文件来配置WEB应用的构件.我们现在来看看这两个配置文件的详细描述.
The struts.properties File
这个配置文件提供了一个改变框架默认行为的机制.一般情况下,你是不需要修改这个文件的,一个例外是你想配置一个对于开发者友好的调试环境.所有的包含在"struts.properties"配置文件中的配置项,都可以使用"init-param"标签配置在"web.xml"文件中,同样也可以使用"constant"标签配置在"struts.xml"配置文件中.
Properties允许修改如改变Freemarker选项,替换action的映射类,决定是否重新加载XML配置文件,默认使用的用户界面主题等等.更多的关于properties的最新信息,请查阅位于http://struts.apache.org/2.x/docs/strutsproperties.html的Struts2的Wiki.
一个默认的名为"default.properties"配置文件包含在发行版的Struts2-Core JAR文件中.想要修改一个配置项,只需在你项目的源文件的类路径的根目录里创建一个名为"struts.properties"的文件.之后,添加你想修改的配置项.新的值将覆盖掉默认值.
在开发环境中,这有一些配置项你可能需要更改:
struts.i18n.reload = true -- 能够重新加载国际化文件
struts.devMode = true -- 能够在开发模式下提供更全面的调试
struts.configuration.xml.reload = true 能够重新加载XML配置文件(适用于action),修改之后可以在Servlet容器里重新加载整个WEB应用
struts.url.http.prot = 8080 -- 设置服务运行的端口(以便生成正确的URL)
The struts.xml File
"struts.xml"文件包含配置信息,你将修改它用于发布action,我们将在本章剩余的部分详细的讲解指定的元素.现在,让我们看看不会改变的结构.
注:
根据你应用的功能,可能会从你的应用中移除"struts.xml"文件.配置上我们将在本章讨论一种替换的方法,使用注释,"web.xml"启动参数,和交替的URL映射配置.
唯一的配置仍然需要"struts.xml"文件,如全局结果,异常处理,和自定义的拦截器栈.
这是一个XML文件,所以第一个元素是XML的版本和编码信息.下一个则是XML的文档类型定义(DTD).DTD提供了一些文件里的元素的结构,并最终用XML来解析和编辑.
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE struts PUBLIC
3 "-//Apache Software Foundation//DTD Struts Configuration
4 2.0//EN"
5 "http://struts.apache.org/dtds/struts-2.0.dtd">
6 <struts>
7 <package
8 name="struts2"
9 extends="struts-default"
10 namespace="/struts2">
11 …
12 </package>
13 </struts>
我们现在到达了<struts>标签.这是Struts2具体配置的最外层标签.所有其他的标签都将被包含在这个当中.
The Include Tag:
<include ... />标签用于将Struts2应用模块化时引入其他配置文件时使用并且它始终是<struts>标签的子标签.它仅仅包含一个"file"属性,用于提供被引入的文件的名称,那个文件必须与"struts.xml"配置文件的结构相同.例如,如果你想拆分一个计费应用的配置文件,你可以选择按组将缴费,管理和报表配置到单独的文件中:
1 <struts>
2 <include file="billing-config.xml" />
3 <include file="admin-config.xml" />
4 <include file="reports-config.xml" />
5 …
6 </struts>
引入文件时,顺序是重要的.来自引入文件的信息将在文件中引入标签的位置开始有效.因此,使用一个配置在另一个文件中的标签,这个引入的配置必须出现在被引用之前.
有一些文件你是必须明确的引入,还有一些文件是自动引入的.比如说"struts-default"和"struts-plugin.xml".两者都包含了默认的结果类型,拦截器,拦截器栈,包,以及WEB应用执行环境的配置信息(也可以配置在"struts.properties"文件中)的配置.区别在于"struts-default.xml"文件提供的是Struts2的核心配置,而"struts-plugin.xml"提供的是详细插件的配置.每个插件JAR文件中都应包含一个"struts-plugin.xml"文件,所有这些都将在启动的时候加载.
另外可以参考该文章:http://www.iteye.com/problems/48001
分享到:
相关推荐
Struts2是一个强大的Java web开发框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了构建可维护...通过深入学习和分析这个实例,开发者可以更好地理解和运用Struts2框架,构建更高效的企业级web应用。
Struts2是一个强大的Java web框架,它为构建MVC(模型-视图-控制器)架构的应用程序提供了全面的支持。在本“Struts2项目实例”中,我们将深入探讨如何使用Struts2框架来实现基本的CRUD(创建、读取、更新、删除)...
Struts1是一个经典的Model-View-Controller(MVC)框架,它在Java Web开发中扮演着重要的角色。本文将深入探讨Struts1的基本原理,帮助理解其架构设计和工作流程。 **1. MVC架构** MVC模式是软件工程中一种用于分离...
Struts MVC是一个基于Java平台的模型-视图-控制器(MVC)框架,它在Web应用开发中扮演着核心角色,特别是在构建复杂的企业级应用程序时。这个“struts_MVC.rar”压缩包显然包含了用于创建一个网上购书系统的资源,...
通过分析这个实例,学习者可以了解如何将Struts2的这些特性应用到实际项目中,包括如何配置Action、如何编写拦截器、如何利用OGNL传递数据、如何进行表单验证,以及如何组织和管理MVC结构。此外,实例可能还包含了...
实例分析 文章中提到,通过一个具体的例子来介绍如何使用Struts实现MVC机制的Web应用。尽管原文没有给出具体的示例代码,但我们可以想象这样一个场景:一个简单的在线购物系统,其中包括商品列表、购物车管理和...
Struts2是一个强大的Java Web应用程序框架,...记得分析每个类的作用,理解它们之间的交互,以及Struts2如何通过MVC模式协调这些组件来处理HTTP请求和响应。通过这种方式,你可以逐步构建起对Struts2框架的全面认识。
通过分析和运行这些项目实例,可以深入理解Struts1和Struts2之间的差异,以及如何将它们与Spring和Hibernate集成,从而提高自己的技能水平。不过,随着技术的发展,现在的趋势是转向更现代的框架,如Spring Boot,它...
Struts2是一个流行的Java web应用程序框架,它基于MVC(模型-视图-控制器)设计模式,用于构建高效且可维护的web应用。Struts2是Struts1.x和WebWork社区合并的产物,可以看作是WebWork的增强版,具备稳定性、高性能...
Struts2是一个基于MVC(Model-View-Controller)设计模式的开源Java Web框架,它在Web应用开发中被广泛使用。本项目源码提供了一个基础的Struts2应用程序实例,对于初学者来说,这是一个很好的学习资源,可以深入...
在Java Web开发中,Struts2框架因其强大的MVC(模型-视图-控制器)架构而备受青睐。Struts2提供了丰富的标签库,简化了视图层的开发,使开发者可以更加专注于业务逻辑。本文将深入探讨Struts2中的标签及其使用实例。...
1. **MVC模式**:Struts2基于Model-View-Controller(MVC)设计模式,它将业务逻辑、数据和用户界面分离,使开发更为高效。在实例中,你可能会创建模型类、视图JSP页面和控制器Action类。 2. **Action类**:Action...
总的来说,Struts2的源码分析可以帮助开发者深入理解其内部机制,包括请求处理流程、拦截器的运作方式以及视图组件的实现。这有助于提高应用的可维护性,优化性能,并使开发者能够更好地定制和扩展框架。对于熟悉...
1. **MVC模式的实现**:Struts2遵循Model-View-Controller模式,你可以看到如何将业务逻辑(Model)、视图(View)和控制(Controller)分离。 2. **Action配置**:查看项目的配置文件,了解Action的定义和结果配置...
Struts2是一个强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发中,为开发者提供了构建可维护、可扩展的Web应用程序的高效工具。这个“STRUTS2学习实例5”可能是系列教程的一部分,旨在帮助学习者...
【标题】"Hibernate与Struts2和Spring组合开发实例"涉及的是Java企业级应用开发中的核心技术栈,也就是著名的SSH(Spring、Struts2、Hibernate)框架的整合使用。这三个框架分别在应用程序的不同层面发挥关键作用,...
#### 应用实例分析 为了更直观地理解Struts框架的工作原理,我们通过一个全面预算管理系统中的预算资料模块来具体分析: 1. **构建视图**: - 使用JSP页面作为视图的展示层,利用Struts提供的自定义标签来简化...
Struts2是一个流行的Java web框架,用于构建MVC(模型-视图-控制器)架构的Web应用程序。在本章中,我们将深入理解如何通过一个简单的HelloWorld实例来启动和运行Struts2应用,同时了解其核心组件和配置过程。 首先...
Struts2是一个流行的Java Web框架,它简化了MVC(模型-视图-控制器)架构的实现。本文将深入探讨Struts2的源码分析,特别是关于StrutsPrepareAndExecuteFilter的初始化过程,这是Struts2的核心组件之一,负责处理...