struts.xml 配置详解之六 通配符

1.      Action 配置

1.7 、通配符映射

通配符样式:可以包含一个或多个下列特殊记号

特殊记号

说明

  *

  匹配0 个或多个字符,斜线(/ )字符除外

  **

  匹配0 个或多个字符,包含斜线(/ )字符

  /

  反斜线字符被用作转义序列,因此'/*' 匹配星号(* )字符,'//' 匹配反斜线(/ )字符

示例:

代码清单 1UserAction.java 片段

public class UserAction extends ActionSupport {

 

      public String add() {

           System.out .println("add 方法被调用 " );

           return SUCCESS ;

      }

 

      public String del() {

           System.out .println("del 方法被调用 " );

           return SUCCESS ;

      }

 

      public String modify() {

           System.out .println("modify 方法被调用 " );

           return SUCCESS ;

      }

 

      public String query() {

           System.out .println("query 方法被调用 " );

           return SUCCESS ;

      }

 

}

代码清单 2MP3Action.java 片段

public class MP3Action extends ActionSupport {

 

      public String add() {

           System.out .println("add 方法被调用 " );

           return SUCCESS ;

      }

 

      public String del() {

           System.out .println("del 方法被调用 " );

           return SUCCESS ;

      }

 

      public String modify() {

           System.out .println("modify 方法被调用 " );

           return SUCCESS ;

      }

 

      public String query() {

           System.out .println("query 方法被调用 " );

           return SUCCESS ;

      }

 

}

jsp 访问代码

代码清单 3main.jsp 片段

< a href = " <%= path %> /add_User.action" > 增加 User </ a >

< br />

< a href = " <%= path %> /del_User.action" > 删除 User </ a >

< br />

< a href = " <%= path %> /modify_User.action" > 修改 User </ a >

< br />

< a href = " <%= path %> /query_User.action" > 查询 User </ a >

< br />

< br />

< a href = " <%= path %> /add_MP3.action" > 增加 MP3 </ a >

< br />

< a href = " <%= path %> /del_MP3.action" > 删除 MP3 </ a >

< br />

< a href = " <%= path %> /modify_MP3.action" > 修改 MP3 </ a >

< br />

< a href = " <%= path %> /query_MP3.action" > 查询 MP3 </ a >

< br />

action 映射和action 结果中:

1、   通配符匹配的值 可以用记号{N} 来访问,N 是第1 9 的数字,指出替换 的是哪一个通配符 匹配的值。

2、          整个请求URI 用记号{0} 来访问。

代码清单 3struts.xml 片段

<package name="login" extends="struts-default">

      <action name="*_*" class="com.coderdream.action.{2}Action"

           method="{1}">

           <result name="success">/WEB-INF/msg/{0}Suc.jsp </result>

      </action>

</package>

详细解析:

1、 当请求“/add_User.action 时,name 中的第一个星“* ”匹配方法add ,第二个星“* ”匹配ActionUser ,所以会访问UserAction 中的add 方法

2、 结果映射中使用的记号是{0} ,于是被整个请求URI (即add_User )替换,所以会访问add_User Suc.jsp 页面 。

注意点:

1、 如果要使用多个通配符,要用下划线(_ 隔开;

2、 不同的方法 可以映射不同的结果 ,这比动态方法调用更灵活(动态方法调用 只能访问同一个结果

3、 多个action 映射 可以匹配同一个请求

代码清单 4struts-1.xml 片段

< package name = "login" extends = "struts-default" >

      <!-- 1 、全通配符   -->

      < action name = "*" class = "com.coderdream.action.UserAction" >

           < result name = "success" > /WEB-INF/msg/starSuc.jsp </ result >

      </ action >

     

      <!-- 2 、部分通配符   -->

      < action name = "*User" class = "com.coderdream.action.EditUserAction" >

           < result name = "success" > /WEB-INF/msg/editUserSuc.jsp </ result >

      </ action >

     

      <!-- 3 、无通配符   -->

      < action name = "addUser"

class = "com.coderdream.action.AddUserAction" >

           < result name = "success" > /WEB-INF/msg/addUserSuc.jsp </ result >

      </ action >

</ package >

1) 当请求“/addUser ”时,框架优先 匹配无通配符 action ,此处会匹配AddUserAction

2) 当请求“/queryUser ”时,框架按出现顺序 匹配通配符的action ,此处会匹配UserAction ,而不会匹配EditUserAction

3) 所以如果想让使用“部分通配符 ”的action 被访问,“全通配符” 的配置应该放在最后

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值