12 第1页 | 共2 页下一页
返回列表 发新帖
查看: 2538|回复: 15
打印 上一主题 下一主题

详谈Struts2的核心概念(上)续

[复制链接]

1026

主题

1

听众

6011

积分

高级设计师

Rank: 6Rank: 6

纳金币
5996
精华
1

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2011-7-27 23:49:56 |只看该作者 |倒序浏览
3 Struts2的配置文件
• Struts2框架主要有两个核心配置文件:struts.properties和struts.xml。struts.xml与Struts1版本中的struts-config.xml非常类似,主要负责管理应用中的Action映射,以及该Action包含的Result定义等,而struts.properties文件则定义了Struts2框架的全局属性。所有的配置文件说明见表所示,图展示了几个配置文件所在位置和相互关系。


3.1 全局配置文件--struts.properties
• struts.properties文件是一个标准的Properties文件,该文件包含了系列的key-value对象,每个key就是一个Struts2属性,该key对应的value就是一个Struts2属性值。struts.properties文件通常放在Web应用的WEB-INF/classes路径下,实际上,只要将该文件放在Web应用的CLASSPATH路径下,Struts2框架就可以加载该文件。以下是一部分配置片段。
• struts.enable.DynamicMethodInvocation=false"
• struts.devMode=false
3.2 核心配置文件--struts.xml
• struts.xml文件主要负责管理应用中的action映射,以及该action包含的result定义等。在struts.properties配置中的有一项struts.configuration.files,这里可以看出struts.xml这个文件名不一定是固定的,可以配置为其他文件名的。struts.xml内容主要包括:Action、Interceptor、Packages、Namespace等。后面的章节将详细介绍如何配置这些元素。
&bull; 在struts.xml中可以使用<include>标签把内容分到几个文件中去。这里非常像JSP中的<jsp:include>动作标签,可以把其他文件的内容导入进来,被导入的每个配置文件必须和struts.xml文件有一样的格式。<include>标签的格式如下所示。
3.3 struts.xml的缺省实现
&bull; struts-default.xml这个文件被包含在struts2-core.jar中,文件名已经可以看出这个文件的作用是struts.xml的缺省配置,它将自动被加载然后导入到struts.xml中去。代码5-1是struts-default.xml的部分片段。
3.4 Velocity模板规则文件
&bull; 如果在程序中使用了Velocity(一个基于java的模板引擎,可以替代JSP作为显示页面)可以把文件velocity.properties放到classpath中去,系统将自动加载。同时还要配置struts-default.vm文件,
&bull; 代码 velocity.properties
&bull; # Velocity 资源定义.
&bull; velocimacro.library = action-default.vm, tigris-macros.vm, myapp.vm
4 struts.xml的配置
&bull; Struts2绝大多数的配置都是在struts.xml中完成的,学习struts.xml文件是学习使用struts2的基础。本节将详细讲述如何在struts.xml中定义和配置各种元素。
4.1 action配置
&bull; action是Struts2的基础“工作单元”。配置一个基本的action只需要两个信息:action名字和对应的action类,这两部分就建立了一个最简单的action配置。属性“method”用来告诉Struts2调用action的那个方法。在action处理之后一般的需要展示处理结果给用户,所以还需要把action和result映射在一起。如代码所示。
&bull; 代码 Action配置:struts.xml
&bull; <!—Struts action配置-->
&bull; <action name="helloWorld" class="example.HelloWorld" method=”doWork”>
&bull; <result name="failure" path="Error.jsp"/>
&bull; <result name=”ok” path="HelloWorld.jsp"/>
&bull; </action>
4.2 result配置
&bull; Struts2定义了一些默认result:error,input,login,none和success。开发者当然也可以根据应用情况自由的定义结果。结果以“名字-值”的形式影射到结果类型。result标签告诉Strtus 2在action被调用以后下一步做什么。result在struts.xml文件中定义,嵌套在<action>标签里。如果location参数是唯一的参数,可以这样简单的定义:
&bull; <!—在result中添加参数-->
&bull; <action name="bar" class="myPackage.barAction">
&bull; <result name="success" type="dispatcher">
&bull; <param name="location">foo.jsp</param>
&bull; </result>
&bull; </action>
4.3 拦截器(interceptor)配置
&bull; interceptor是能在一个action执行的前后执行的代码。它是做Web应用程序时很有用的工具。最常见的由Interceptor实现的功能如:安全检查(确保访问者是登陆用户)、跟踪日志(记录每个action)、效率瓶颈检查(记录每个action开始和结束的时间以检查程序中的瓶颈)。也可以把interceptor连在一起组成interceptor栈(interceptor-stack)。比如在action执行前同时做登陆检查,安全检查和记录日志,可以定义一个interceptor的栈。interceptor必须事先定义好,然后可以连在一起组成一个栈。如代码5-7所示,定义了一个interceptor和一个interceptor栈。
4.4 包(package)配置
&bull; 所谓packages就是把actions、results、results、types、interceptors这些元素打包到一个逻辑单元中去,从概念上讲,packages就更像一个程序中的对象,可以被其他子包从写,而且可以拥有自己独立的部分。Name属性是packages的必填元素,它作为一个关键字被后边的包引用;extends元素是可选的,它允许包扩展一个和多个前边定义的包。Abstract元素是可选的,如抽象类和抽象函数一样它是必须被继承的,可以申明一个不包含actions的package。
4.5 命名空间(Namespace)配置
&bull; 命名空间属性允许把action配置分成不同的命名空间,这样可以使功能不同action中使用相同的名字。默认命名空间用“”(空字符串)表示。如果系统在指定的命名空间中没有找到某个action,就会到默认命名空间中查找。可以在所有用"extends"扩展的命名空间外配置全局action不指定命名空间。
&bull; Struts2中有以“/”命名的根命名空间,它是请求直接来自应用程序根路径的时候的命名空间。和其他命名空间一样,如果在根命名空间中没有所需的action别名,系统会回到默认命名空间中查找。如代码5-9所示,这里使用了默认命名空间、“/”和声明了的命名空间“barspace”
4.6 在struts.xml中定义Bean
&bull; 在struts.xml中还可以作JavaBean的定义如下: s
&bull; <!--在struts.xml中定义Bean --->
&bull; <struts>
&bull; <bean type="com.opensymphony.xwork2.ObjectFactory"
&bull; name="myfactory"
&bull; class="com.company.myapp.MyObjectFactory" />
&bull; </struts>
4.7 在struts.xml中使用通配符
&bull; 当配置文件中action mapping的数量很多的时候,使用通配符是一个很好的办法,可以将一些相似的mapping绑在一起,用一个比较通用的mapping来表示。在路径中用*来代替变化的部分,而action的处理类和JSP中{1}刚好是代替这个变量。
&bull; <!--在struts.xml中使用通配符-->
&bull; <action name="/edit*” class="example.Edit{1}Action">
&bull; <result name="failure" path="/mainMenu.jsp"/>
&bull; <result name=”ok” path="/{1}.jsp"/>
&bull; </action>
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

无效楼层,该帖已经被删除

797

主题

1

听众

1万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
5568
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2011-8-9 15:10:32 |只看该作者
回复

使用道具 举报

462

主题

1

听众

31万

积分

首席设计师

Rank: 8Rank: 8

纳金币
2
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

地板
发表于 2012-2-2 23:31:34 |只看该作者
不会吧,太恐怖了
回复

使用道具 举报

462

主题

1

听众

31万

积分

首席设计师

Rank: 8Rank: 8

纳金币
2
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

5#
发表于 2012-2-8 23:30:47 |只看该作者
很有心,部分已收录自用,谢谢
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

6#
发表于 2012-3-15 23:26:22 |只看该作者
呵呵,真得不错哦!!
回复

使用道具 举报

462

主题

1

听众

31万

积分

首席设计师

Rank: 8Rank: 8

纳金币
2
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

7#
发表于 2012-3-17 23:32:14 |只看该作者
不错啊 经典
回复

使用道具 举报

462

主题

1

听众

31万

积分

首席设计师

Rank: 8Rank: 8

纳金币
2
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

8#
发表于 2012-3-25 23:23:34 |只看该作者
加精、加亮滴铁子,尤其要多丁页丁页
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

9#
发表于 2012-4-8 23:27:22 |只看该作者
心中有爱,爱咋咋地
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

10#
发表于 2012-7-18 23:22:54 |只看该作者
很经典,很实用,学习了!
回复

使用道具 举报

12 第1页 | 共2 页下一页
返回列表 发新帖
您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-2-24 02:20 , Processed in 0.076560 second(s), 30 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部