您的位置:首页 > 编程语言 > Java开发

Struts2的struts.xml中配置及通配符的使用

2015-09-01 11:27 465 查看
用Struts2很长时间,关于配置文件struts.xml中通配符的使用还是第一次真正用在项目中(可能之前都是一些小项目吧)。对于它的使用还真是现在才明白一些,以一个简单的例子做示范.
在一个普通的小型项目中可能会,写很多个配置文件,然后include进struts.xml文件中,这是没有通配符的时候的用法。
对于一个比较大的项目来说,从项目本身的庞大性、项目开发人员的编码及开发风格的等的不同性,再加上项目后期的维护性,如果也是通过为每一个模块(或功能)写这样的配置文件,可以想象一下,从项目开始到项目进入维护阶段,需要些多少个配置文件,而且随着项目功能的逐渐完善,这一过程能保证我们的配置文件是一成不变,能保证每个人在配置文件上不出一点差错吗......所以,在大的项目上,经理都会采用通配符来约定开发模式,规定项目成员必须要怎么配置从而达到简化配置、节约时间的目的。
//可以通过传过来的url访问路径,来确定类名及方法
<action name="*/*/*" method="{3}" class="com.company.xxx.{1}.action.{2}Action">
<result name="suc" type="direct">/{3}.jsp</result>
</action>
例如,根据上面的通配符的规定,传一个 “ system/user/login.do ” 时,这时会这样匹配===>
1、name中的第一个 " * " 匹配class所在的包,第二个 " * " 匹配class中的指定Action,因此,完整的class = "com.company.xxx.system.action.userAction"
2、而第三个 " * " 则匹配 method 和 result中返回的页面, 因此 ,完整的 method="login" ,result标签中返回的页面是 /login.jsp
这样使用通配符,那么在项目的过程中,就不用为每一个action配置了,开发人员只需要按照这样的格式给定就可以访问到,减少了很多配置工作。在使用通配符时要注意的几点:
a、name属性中使用多个通配符时,不能将多个 " * " 号不加分割的放在一起,因为struts2不知道怎样划分每个星号。 因此,使用多个 "*" 时一定要有一个分隔符,
"/" 或 "_"(如user_login.do) 都可以。
b、与通配符匹配的值可以用记号{n}来访问,n是1~9的整数,第一个(*)星号就是{1},第二个就是{2},依次类推;注意当用{0}表示时代表整个请求url
【如某个url是login.do(*/*这样的匹配),而返回页面就可以这样{0}.jsp,最后返回的页面就应该是login.jsp】
c、对于struts2中使用通配符和不使用,二者在请求原理上还是不同的。
当用户给出一条url了以后,struts2首先会遍历通配符以外所有的请求配置,如果找到对应匹配的url则直接进入对应action
如果未找到,才会去遍历通配符,若有与通配符相匹配的,再进入到此匹配的action。
所以,使用通配符的要比未使用通配符的要慢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: