Struts2核心文件
web.xml
任何MVC框架都需要与Web整合,这就不得不借用web.xml文件,只有配置在web.xml文件中的Servlet才会启用。
通常所有的MVC框架都需要Web应用加载一个核心控制器,对于Struts2而言需要加载StrutsPrepareAndExecuteFiler,只要Web加载StrutsPrepareAndExecuteFiler,StrutsPrepareAndExecuteFiler就会加载Struts框架。
struts.xml
该文件主要管理应用中的Action映射,以及该Action所包含的result定义。
- struts.xml所包含的内容有:
- 全局属性
- 用户请求和相应Action之间的关系
- Action可能用到的参数和返回值
- 各种拦截器的配置
- struts.xml文件代码分析
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
-//Apache Software Foundation//DTD Struts Configuration 2.3//EN
是xml的描述,指明当前使用的是struts-2.3的版本
http://struts.apache.org/dtds/struts-2.3.dtd
是xml的约束,指明当前struts那些标签可以使用,那些不可以使用。
<include file="example.xml"/>
可以将每个功能单独写成一个xml文件,再有incule标签引入struts.xml文件中,以实现功能的组件化。
<package name="default" namespace="/" extends="struts-default">
<default-action-ref name="index" />
<global-results>
<result name="error">/WEB-INF/jsp/error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="error"/>
</global-exception-mappings>
<action name="index">
<result type="redirectAction">
<param name="actionName">HelloWorld</param>
<param name="namespace">/example</param>
</result>
</action>
</package>
<package>
标签:将多个Action组成一个模块的方式。package可以在基于其他package进行扩展,
- name:package名(一个struts.xml文件中可以有多个package,但是package名必须是唯一的)。
- extends:继承父package名
- namespace:定义package的命名空间,影响Action的url地址。例如,若namespace="/",触发Action的地址则为http://localhost:8080/JavaProject/XX.action,若namespace = “/test”,url则为http://localhost:8080/JavaProject/test/XX.action。
- abstruct:设置package的属性为抽象的,抽象的包不能定义Action,值为true或false。
<global-results>
:全局results配置,文件中所有的Action都能使用。
<action>
:一个Action可以被对此映射(Action的name不同)。
- name:Action的名称,访问Action的地址
- class:对应Action的类名
- method:Action的方法名
<result>
:触发Action后所执行的结果
- name:结果名
- type:方法名
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
定义常量,可以将struts.properties中的配置项以constant标签的形式配置到struts.xml中