Struts2 配置文件
Strcts2 主要的配置文件有 web.xml ,struts.xml,struts-config.xml,struts.properties ,其中对于一般的 struts 应用只需要对 web.xml 和 struts.xml 文件进行配置
;
web.xml
web.xml 是一个 JEE 配置文件,位于 WEB-INF 目录下,对于 struts2 应用来说,需要在 web.xml 中配置 FilterDispatcher 类的过滤器元素,常用的过滤器为
StrutsPrepareAndExecuteFilter等,示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
以上示例中为web应用配置了一个
StrutsPrepareAndExecuteFilter 过滤器,所有的 URL 请求都会首先被 Struts2 的过滤器解析;
struts.xml
struts.xml 文件最主要的作用是配置 Action 和请求之间的对应关系,和逻辑视图名和物理视图资源之间的对应关系,位于 WEB-INF/classes 目录下;
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="helloworld" extends="struts-default" namespace="/">
<action name="hello" class="demo.HelloAction" method="execute">
<result name="success">/success.jsp</result>
<result name="fail">/fail.jsp</result>
</action>
</package>
</struts>
<struts>:根标签,包含多个<package>标签;
<constant>:structs2全局配置,覆盖 default.properties 的相关属性,
示例中的配置为开启调试模式;
<package>:声明包元素,用于对action的分组和模块化,一般把同一个业务逻辑的action归为一个package;
- name:package 的标识名;
- extends:该 package 所拓展的包名,一般使用 "struts-default" 包;
- namespace:该 package 下的 action 所在的命名空间,不设置的话默认从项目src目录开始;
<action>:动作元素,用于声明一个Action和请求的对应信息;
- name:该 action 类的 URL 映射名;
- class:该 action 类的物理位置,一般为“包名.类名”的格式;
- method:URL 请求对应的 action 类的运行方法,一般为 “execute”;
<result>:action 元素的 逻辑视图 到 物理视图的映射;
- name:该result在action类中返回的字符串;
当工程规模比较大时,就需要将 struts.xml 文件进行分拆为多个 xml 文件,struts支持这一特性,以下示例在 struts.xml 导入于拆分的xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<include file="my-struts1.xml"/>
<include file="my-struts2.xml"/>
</struts>
struts-config.xml
struts-config.xml 用于配置 web 客户端组件之间的视图和模型之间的连接,一般很少会接触到这些设置,详情可以在
http://struts.apache.org/download.cgi 下载的 document-zip 文档中查询到;
struts.properties
struts.properties 文件用于配置structs框架的默认行为,其中的配置其实可以在 web.xml 的 init-param 和 struts.xml 配置文件中实现,如果需要维持这些配置参数的独立性,可以在WEB-INF/classes 目录下创建该文件进行配置,详情参数参见
http://struts.apache.org/download.cgi
下载的 document-zip 文档;
struts2 调试模式的开启、关闭
structs可以通过 struts.xml 配置文件开启,关闭调试模式,开启该模式,可以在日志中输出更多的调试信息,方便开发效率,一般在生产环境中为了安全会关闭该模式;
开启调试模式:
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true" />
......
</struts>
关闭调试模式:
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="false" />
......
</struts>
struts2 更改action路由的后缀
在struts2中,所有的动作类都的 URL 访问会有一个后缀".action",如下:
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="hello">
<result>/helloWorld.jsp</result>
</action>
</package>
</struts>
假设项目名为“test_struts”,可以通过以下URL访问该action
http://localhost:8080/test_struts/demo/hello.action
1)去除访问 action 的“.action”后缀
<struts>
<constant name="struts.action.extension" value="" />
<package name="default" namespace="/" extends="struts-default">
<action name="hello">
<result>/helloWorld.jsp</result>
</action>
</package>
</struts
可以通过以下URL访问该action:
http://localhost:8080/test_struts/hello.action
2)更改访问 action 的后缀为其他后缀
例如修改访问后缀为 ".html" :
<struts>
<constant name="struts.action.extension" value="html" />
<package name="default" namespace="/" extends="struts-default">
<action name="hello">
<result>/helloWorld.jsp</result>
</action>
</package>
</struts>
可以通过以下URL访问该action:
http://localhost:8080/test_struts/hello.html