Struts2入门(3): 配置文件

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









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值