Starting Struts2--Core Components(2)

Posted on 2007-08-07 10:45 puras 阅读(1070) 评论(0)  编辑  收藏 所属分类: Struts2.0

The Package Tag:

<package … />被用于配置集合,以便于共享属性,例如拦截器栈或是URL命名空间.通常它由action的配置组成,但它可以包含任何类型的配置信息.它对隔离功能的组织也非常有用,可以更进一步,将其分成不同的配置文件.

这个标签有如下属性:

.name--开发人员为包指定的唯一的名称
.extends--此包将扩展的包的名称;扩展包里的所有配置信息(包含action配置),在新包里都是可用的,在新的命名空间之下.
.namespace--命名空间提供了一个URL到包的映射.例如,两个不同的包,命名空间属性分别是"package1"和"package2",URL看起来则是"/myWebApp/package1/my.action"和"/myWebApp/package2/my.action".
.abstract--如果这个属性的值为"true",这个包则是真正的配置组,并且actions的配置将不能通过包名访问.

确定选择正确的父类包是非常重要的,以便一些必要的被预先配置的特征可供你使用.大多数的时候,这个父包都将是"struts-default.xml"配置文件中的"struts-default"包.然而,当你使用插件时,它将会不同.这时,你将需要从插件的文档中查换你所需要的父类包的名称.

在本章剩余的部分,将讨论包含在包标签内的配置信息.

这里还有两个额包的配置元素可以在<struts>标签内使用.它们是<bean ... />和<constant … />标签.这些标签提供了更高级的路径来重新定义框架.我们将在下一章讨论插件的时候,再来讨论这些标签的用法和配置方法.

Actions

Actions是大多数WEB应用框架中的基本概念,并且它们是来自用户的与HTTP相关请求的最基础的工作单元.

在Struts2中,action有两种不同的方式被使用.

Single Result

第一,并且是action的常用法,它完成工作,并总是返回一个结果.这种情况下,action看起来是这样的:

1class MyAction {
2    public void String execute() throws Exception {
3        return "success";
4    }

5}

 


有几件事值得注意.第一,action类不需要扩展另一个类并且它也不需要实现任何接口.对任何人来说,这个类就是一个简单的POJO.

第二,这个类里有一个名为"execute"的方法.这个名称是一个习惯用法.如果你想使用其他的名称而不是"execute",仅仅需要更改一下action的配置文件.无论这个方法的名称是什么,它都将返回一个字符串的结果代码.Actions配置文件将匹配这个action返回的结果代码到一个特定的结果,其呈现给用户.如果需要,这个方法同样可以抛出一个异常.

简单的action的配置看起来是这样的:

1<action name="my" class="com.fdar.infoq.MyAction" >
2    <result>view.jsp</result>
3</action>


属性"name"提供了执行action的URL信息,在这里,URL则是"/my.action".扩展名".action"在"struts.properties"配置文件里配置.属性"class"提供了action所执行的完整的包和类名.

Multiple Results

接下来,稍微复杂,action可以根据逻辑的结果返回不同的结果.与早先使用的相似的类看起来如下:

 1class MyAction {
 2    public void String execute() throws Exception {
 3        if( myLogicWorked() ) {
 4            return "success";
 5        }
 else {
 6            return "error";
 7        }

 8    }

 9}

10



既然现在可以返回两个不同的结果,我们则需要为每种情况配置一个结果返回给用户.现在,配置将变成:

1<action name="my" class="com.fdar.infoq.MyAction" >
2    <result>view.jsp</result>
3    <result name="error">error.jsp</result>
4</action>



这里为结果代码引入了一个新的"name"属性.事实上,它是始终存在的.这个值(在第一个结果配置中)如果开发者没有提供,则使用默认值"success".

在上面的部分,我们看到了为action确定结果时使用常用的方法.然而,这里还有四种额外的选项可供您使用:
1.action方法返回一个字符串 - 这个被返回的字符串匹配在"struts.xml"配置文件中的一个action的配置.这个在上面的例子中展示过了.
2.代码被之后的插件所利用 - 当代码被之后的插件使用时,视图模版则是使用action名称和action返回的结果字符串相连接而创建的.例如,如果URL是"/adduser.action",并且action返回的是"success",此时,"/adduser-success.jsp"将被呈现组用户.更多此方面的信息请查看
http://struts.apache.org/2.x/docs/codebehind-plugin.html.
3.使用@Result注释 - action类可以使用@Results和@Result注释来注释多个不同的结果.Action返回的字符串需要匹配上一个注释配置结果.
4.Action返回一个Result类的实例 - Action可以不需要返回一个字符串,替代的方案是返回一个配置好并可被使用的Result类的实例.


上一章:Starting Struts2--Core Components(1)
下一章:Starting Struts2--Core Components(3)


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 

posts - 47, comments - 124, trackbacks - 0, articles - 0

Copyright © puras