sturts2核心组件struts.xml

  Struts2框架的核心配置文件就是struts.xml,该文件主要负责管理Struts2框架业务的业务控制器Action。在默认的情况下,Struts2将自动加载在WEB-INF/classes路径下的struts.xml文件中

struts.xml的默认配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>

</struts> 

该文件包含唯一的一个根元素<struts>,我们可以在该元素中添加子标签,来实现自己的配置,主要有如下7个配置功能

属性第一元素<constant>

  该标签用来定义一个属性

导入字文件元素<include>

  该标签用来导入一个子文件

包定义元素<package>

  定义了一组<action>和拦截器元素,可以定义多个<action>元素,name表示表的名字,extend属性表示继承自struts-default.xml中所定义的包的名字,继承的意义是,被继承的包中的拦截器都可以在起继承的包中使用

Action映射配置元素<action>

  Action mapping是框架中的基本工作单元,框架通过对请求路径进行映射来决定由哪个action来处理请求。Action mappings能指定一系列的Result、异常处理器及拦截器,<action>元素的所有属性中只有name属性是必需的,其他属性都是可选的。

  按照作用个不同,可以配置5种类型的请求映射

(1)配置直接转发的请求

  只有一个name属性来表示要匹配的映射地址,并在子元素<result>中配置要转发的页面

	<action name="index">
		<result>login.jsp</result>
	</action>

(2)指定处理的Action类

  除了要使用name属性来匹配映射地址外,还可以使用class属性来指定要使用的Action类名,这样默认哟个execute()方法处理

	<action name="showmessage" class="action.LoginAction">
		<result name="success">/lymessage.jsp</result>
		<result name="error">/error.jsp</result>
	</action>

(3)指定Action的处理方法

 如果需要多个处理函数,可以再<action>中添加method属性,指定要调用的函数名,如果不指定method,则默认execute()处理

	<action name="showmessage" class="action.LoginAction" method="showMessage">
		<result name="success">/lymessage.jsp</result>
	</action>

(4)通过请求地址来指定执行的函数

  尝试了,但实现不了!

(5)配置通配符映射

<action name="*Action" class="Action.LoginAction" method="{1}">
	<result name="success">/welcome.jsp</result>
	<result name="error">/error.jsp</result>
	<result name="tongpeifu">/{1}.jsp</result>
</action>

Restl配置元素<result>

  <result>有两个属性:name和type。他们都是可选的,name的默认值是success,type的属性是dispathcer。ActionSupport定义了几个标准的ResultToken

String SUCCESS = "success";
String NONE = "none";
String ERROR = "error";
String INPUT = "input";
String LOGIN = "login";

配置全局映射元素<global-results>

  定义在<action>元素中的<result>我们可以称为局部<result>,除此之外,还可以定义全局<result>,这些全局<result>会被多个<action>共享,框架首先会选择嵌套在<aciton>中的<result>,如果没有匹配的就去全局<result>中寻找。全局的<result>列表定义在<gloal-results>内,<gloal-results>放在<package>中,如下所示:

<global-results>
	<result name="success">/welcom.jsp</result>
	<result name="error">/error.jsp</result>
	<result name="input">/input.jsp</result>
</global-results>

配置拦截器<insterceptors>

  通过拦截器,我们可以在Action中的方法执行之前先执行一些事先定义好的方法,也可以在Action中的方法结束之后执行一些我们定义好的方法,在开发过程中,拦截器将是一个强有力的工具。拦截器有很多功能,如下所示

》校验:检查输入是否正确

》属性封装:将输入输出和转化为对象的属性

》日志:记录关于每个Action的详细信息

》切面:记录Action的吞吐量

我们可以将多个拦截器链接在一起形成一个拦截器堆栈。

拦截器是以java类实现的,所以每一个拦截器都有一个唯一的类名为了让拦截器的参考更容易,我们可以在框架中为每个拦截器注册一个更简单的名字

<interceptors>
	<interceptor name="myinter" class="server.MyInterceptor" />
	<interceptor-stack name="mystack">
		<interceptor-ref name="defaultStack"></interceptor-ref>
		<interceptor-ref name="myinter"></interceptor-ref>
	</interceptor-stack>
</interceptors>

在定义拦截器的时候,单个的拦截器和拦截器栈可以以任意的顺序混合在一起,Struts2框架会安装拦截器在栈里面的顺序调用它们。大多数程序都会定义一个默认的拦截器栈,默认的拦截器栈会作用与<package>中的没一个<action>上

<default-interceptor-ref name="defaultStack"/>

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值