在学了struts2的环境搭建和最基本的开发步骤后,再来总结一些知识点,以便更好地理解(struts2基本开发步骤 见:http://lekihuo.iteye.com/blog/679103)
一、关于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><!-- 该文件放到src目录下,编译后自动部署到classes目录 --> <include file="otherModule.xml"></include> <package name="test123" namespace="/a/b" extends="struts-default" abstract="fault"> <action name="hello" class="sample1.HelloWorldAction" method="execu"> <result name="ok">/showHello.jsp</result> </action> </package> </struts>
1)package标记
在一对package标记中,可以配置多个action,实际应用中一般将有相似业务逻辑或者是同一个模块中的action配置在同一个package中,这跟Java代码中的package类似
package属性介绍
1.name 必须的,其他包要继承该包,必须经过该属性进行引用
2.namespace 定义该包的命名空间,默认为“/”,命名空间做为访问该包下action路径的一部分,例如上面的action访问路径为:/a/b/hello
3. extends 默认继承了struts-default包,可使这个包下面默认应用了struts2一些新功能,如拦截器等
4.abstract 默认值为"fault",当 abstract=”true” 则该包内不能有action,struts-default.xml 就是这样的,该文件在struts2-core-2.0.12.jar中
2)include 标记
如果package、action、interceptors等配置比较多时,都放到一个struts.xml文件不太容易维护。因此,就需要将struts.xml文件分成多个配置文件,然后在struts.xml文件中使用< include>标签引用这些配置文件。这样做的优点如下:
结构更清晰,更容易维护配置信息,配置文件可以复用。
要注意一下,用< include>引用的xml文件也必须是完整的struts2的配置。实际上< include>在引用时是单独解析的xml文件,而不是将被引用的文件插入到struts.xml文件中。
3)action 标记
一个Action可以配置多次(只要action配置中的name不同即可)
action的属性:
name 我们给Action起的名称,url中要用
class 这个没的说,Action类的路径,默认为ActionSupport
method 要调用的action中的方法名,默认为execute方法
附:Struts2里Action名称的搜索顺序
如:根据上面的配置,在地址栏输入 htpp://.......app/a/b/c/d/hello.action
在Struts2中,首先会按照命名空间规则,先查"/a/b/c/d"这个命名空间下有无hello,没有此action后,会在"/a/b/c"这个命名空间查,以此类推,直至"/a/b"下查到有该action。还有一点,如果在"/a/b"下还是无法查到该action,则会继续到"/a"下查,还是没有,则会查默认名称空间"/",要是还没有,则页面提示找不到action
4)result 标记
该标记用于配置跳转
result的属性
name 默认值"success"
type 转发类型,Struts2 中result常用的视图转发类型(dispatcher(默认)、redirect、redirectAction、plainText)
注意:该标记指定的页面前如果不加"/",则表示相对路径。
如上:把showHello.jsp前面的“/”去掉,则执行action后,会找/a/b/showHello.jsp