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

本文预计阅读时间 4 分钟
在大的项目上,经理都会采用通配符来约定开发模式,规定项目成员必须要怎么配置从而达到简化配置、节约时间的目的。通配符的使用,七墨也是屡试不爽。
  1. //可以通过传过来的url访问路径,来确定类名及方法
  2. <action name="*/*/*" method="{3}"   class="com.company.xxx.{1}.action.{2}Action">
  3.         <result name="success" type="direct">/{3}.jsp</result>
  4. </action>

例如,根据上面的通配符的规定,传一个 “ ssh_test/user/login.do ”时,通配符如下形式匹配:

第一个 " * ": 匹配class所在的包;

第二个 " * ": 匹配class中的指定Action,因此,完整的class = "com.company.xxx.ssh_test.action.userAction";

第三个 " * " :则匹配 method 和 result中返回的页面, 因此 ,完整的 method="login" ,result标签中返回的页面是 /login.jsp。

这样使用通配符,那么在项目的过程中,就不用为每一个action配置了,开发人员只需要按照这样的格式给定就可以访问到,减少了很多配置工作。

在使用通配符时要注意的几点:

  1. name属性中使用多个通配符时,不能将多个 " * " 号不加分割的放在一起,因为Struts2不知道怎样划分每个星号。 因此,使用多个 "*" 时一定要有一个分隔符,"/" 或 "_"(如user_login.do) 都可以。
  2. 与通配符匹配的值可以用记号{n}来访问,n是1~9的整数,第一个(*)星号就是{1},第二个就是{2},依次类推;注意当用{0}表示时代表整个请求url。【如某个url是login.do(*/*这样的匹配),而返回页面就可以这样{0}.jsp,最后返回的页面就应该是login.jsp】
  3. 对于Struts2中使用通配符和不使用,二者在请求原理上还是不同的。
    当用户给出一条url了以后,Struts2首先会遍历通配符以外所有的请求配置,如果找到对应匹配的url则直接进入对应action,如果未找到,才会去遍历通配符,若有与通配符相匹配的,再进入到此匹配的action。
    所以,使用通配符的要比未使用通配符的要慢(这只是表层而已)。

其实,对于一个比较大的项目来说,从项目本身的庞大性、项目开发人员的编码及开发风格的等的不同性,再加上项目后期的维护性,如果是通过为每一个模块(或功能)写一个对应的配置文件,可以想象一下,从项目开始到项目进入维护阶段,需要写多少个配置文件,而且随着项目功能的逐渐完善,这一过程能保证我们的配置文件是一成不变吗?能保证每个人在配置文件上不出一点差错吗?所以,在大的项目上,都会采用通配符来约定开发模式,规定项目必须要怎么配置从而达到简化配置、节约时间的目的(这才是使用通配符的真正原因)。

参考资料:http://blog.csdn.net/chritina/article/details/48155799

  • 七墨微信
  • 请留下您宝贵的意见,或者每天来本站的文章页面签到,七墨将不胜感激~~
  • weinxin
  • 七墨分享群
  • 要加群的先看本站第一篇文章,不懂的不要加,谢谢~
  • weinxin
七墨
Adobe软件最新全家桶(win、mac)
700多份网站主题源码

来一发,更加快活

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: