一,Struts2配置文件类型
- struts-default.xml , struts-plugin.xml: Struts2提供的配置文件,在Struts提供的包中
- struts.xml:是Web应用默认的Struts2配置文件(开发人员编写)
- struts.properties:框架中属性配置文件 (开发人员编写)
二,struts.xml 配置
1.包配置:<package>
配置文件struts.xml的包使用<package>元素声明。主要用于放置一些项目的相关配置。
<package>包含的属性:
- name:声明包的名称,以方便在其他的位置引用包,此属性是必需的
- extends:用于声明继承包
- namespace:指定名称空间,用于访问此包下的Action需要的路径(名称空间的值需要以"/"开头,否则,找不到Action对象的访问地址)
- abstract:将包声明为抽象类型(包中不包括action)
代码示例:
<struts>
<!-- 声明包 -->
<package name="myPackage" extends="struts-default">
....
</package>
</struts>
2. <action>与<result> ,通配符
(1)<action>配置:
Struts2框架中的Action对象,是一个控制器的角色。Struts2框架通过Action对象处理HTTP请求,其请求的地址映射需要配置在struts.xml文件中,配置方式采用<action>元素进行配置
<action>包含的属性:
- name:用于配置Action对象被请求的映射(必须要配置的,在建立Action对象的映射时,必须指定它的URL映射地址,否则,请求找不到Action对象)
- class:指定Action对象的类名
- method:设置请求Action对象时,调用Action对象的哪一个方法(调用一个Action对象时,默认情况下,执行的execute()方法,需要调用指定的方法,可以用method属性进行配置)
- converter:指定Action对象类型转化器的类
struts.xml文件中,支持通配符的使用。主要针对在非常多的Action的情况下,通过一定的命名约定,使用通配符来配置Action对象,从而达到一种简化配置的效果。
常用的通配符:
- 通配符“ * ”:匹配0或多个字符
- 通配符“ \ ”:是一个转义字符,如需要匹配“ / ”,则使用“ \/ ”进行匹配
Action对象是Struts2框架中的请求处理对象,针对不同的业务请求及处理结果,Action返回一个字符串。字符串就是Action处理结果的逻辑视图名,Struts2框架就会根据这个名字,到配置文件struts.xml中查找这个逻辑视图名称匹配的视图,找到后就会返回给浏览器。
Struts2框架中通过Action的结果映射配置返回视图
<result>属性包含:
- name:指定Result的逻辑名称,与Action对象的返回值相对应。例如execute()的返回值是input,就将name的属性配置为input(不设置name属性,默认success)
- type:设置返回结果的类型,如请求转发,重定向等
利用include标签,可以将一个struts.xml配置文件分割成多个配置文件,然后在struts.xml中使用<include>标签引入其他配置文件。
例如一个购物程序,可以将用户配置,订单配置,商品配置放在不同的配置文件中,然后在struts.xml文件中利用<include>标签引入
4.<constant>
所有在struts.properties文件中定义的属性,都可以配置在struts.xml文件中。而在struts.xml中,是通过<constant>标签来进行配置的
5.<exception-mapping>与<global-exception-mapping>
这两个标签都是用来配置发生异常时对应的视图信息的,两个应用范围不同:一个是Action范围的,一个是包范围的,当同一类型异常在两个范围都被配置时,Action范围的优先级要高于包范围的优先级.这两个标签包含的属性也是一样的:
- name:用来表示该异常配置信息
- result:指定发生异常时显示的视图信息,这里要配置为逻辑视图 (必需属性)
- exception:指定异常类型(必需属性)
代码示例:
<?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.3.dtd">
<struts>
<package name="default" extends="struts-default">
<global-exception-mappings>
<exception-mapping result="逻辑视图" exception="异常类型"/>
</global-exception-mappings>
<action name="Action名称">
<exception-mapping result="逻辑视图" exception="异常类型"/>
</action>
</package>
</struts>
6.<default-class-ref>
当我们在配置Action的时候,如果没有为某个Action指定具体的class值时,系统将自动引用<default-class-ref>标签中所指定的类。有特殊情况,可以指定类
7.<default-action-ref>
如果在请求一个没有定义过的Action资源时,系统就会抛出404错误。这种错误不可避免,但这样的页面并不友好。我们可以使用<default-action-ref>来指定一个默认的Action,如果系统没有找到指定的Action,就会指定来调用这个默认的Action。
<struts>
<!-- 声明包 -->
<package name="myPackage" extends="struts-default">
<default-action-ref name="acctionError"></default-action-ref>
<action>
...
</action>
</package>
</struts>