`
CoderDream
  • 浏览: 471290 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

【张冰Struts2学习笔记】0601.struts.xml配置详解之六 Action配置3 通配符

阅读更多

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

 

1.      Action 配置

1.7 、通配符映射

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

特殊记号

说明

  *

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

  **

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

  \

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

示例:

代码清单 1 UserAction.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 ;

      }

 

}

代码清单 2 MP3Action.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 访问代码

代码清单 3 main.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} 来访问。

代码清单 3 struts.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 映射 可以匹配同一个请求

代码清单 4 struts-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 被访问,“全通配符” 的配置应该放在最后

 

我的联系方式: 85337464

我的博客: http://coderdream.iteye.com

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics