zoukankan      html  css  js  c++  java
  • struts2通配符和动态方法调用

    通配符举例--BookAction

     1 public class BookAction extends ActionSupport {
     2 
     3     public String execute() throws Exception {
     4         System.out.println("BookAction ********** execute()");
     5         return null;
     6     }
     7     /*
     8      * 显示图书添加页面
     9      */
    10     public String add(){
    11         System.out.println("显示图书添加页面");
    12         return "add";
    13     }
    14 }

    通配符举例--struts-pattern.xml

     1 <struts>
     2    <package name="pattern" namespace="/pattern" extends="struts-default">
     3 
     4    <!-- method:指定执行调用action中的方法,如果不加该属性,默认调用action中的execute()方法 -->
     5       
     6       <action name="BookAction" class="cn.itcast.pattern.BookAction" method="add">
     7          <result name="add">/pattern/BookAction.jsp</result>
     8       </action>
     9    </package>
    10 </struts>

    通配符举例—BookAction如何自定义方法

    在action中增加新的方法的要求:

    • 方法最好要用public修饰
    • 方法的名称自定义
    • 方法没有参数
    • 方法的返回值为String

    要定义的方法就是与execute方法的方法名称不同,其他的都一样,只有这样的定义方法struts2才识别

    通配符映射

      

    动态方法调用-这种方式不常用

    •动态方法调用: 通过 url 动态调用 Action 中的方法

      如果Action中存在多个方法时,我们可以使用!+方法名调用指定方法

    默认情况下, Struts 的动态方法调用处于激活状态, 若想禁用该功能, 则可以在 struts.xml 文件中添加如下 constant 元素:

      <constant name="struts.enable.DynamicMethodInvocation" value="false"/>

      Jsp页面的代码:

    1      动态方法调用!形式:<br>
    2     <a href="${pageContext.request.contextPath}/pattern/BookAction!add.action">图书添加</a><br>
    3     <a href="${pageContext.request.contextPath}/pattern/BookAction!delete.action">图书删除</a><br>

     

    Action代码:

     1 import com.opensymphony.xwork2.ActionSupport;
     2 
     3 @SuppressWarnings("serial")
     4 public class BookAction extends ActionSupport {
     5         public String add(){
     6         System.out.println("BookAction...add()");
     7         return "add";
     8     }    
     9     public String delete(){
    10         System.out.println("BookAction...delete()");
    11         return "success";
    12     }
    13 }

      Action配置:

    1 <action name="BookAction" class="cn.zengfansheng.struts.pattern.BookAction">
    2          <result name="add">/pattern/BookAction.jsp</result>
    3          <result name="success">/pattern/success.jsp</result>
    4 </action>

    使用通配符定义action-相对于动态方法调用,开发中比较常用这种方式调用action中的方法

      jsp页面代码:

    1     动态方法调用!形式:<br>
    2     <a href="${pageContext.request.contextPath}/pattern/BookAction!add.action">图书添加</a><br>
    3     <a href="${pageContext.request.contextPath}/pattern/BookAction!delete.action">图书删除</a><br>

      Action配置:

    1 <action name="*_*" class="cn.zengfansheng.struts.pattern.{1}" method="{2}">
    2              <result name="add">/pattern/{1}.jsp</result>
    3              <result name="success">
    4                  <param name="location">/pattern/success.jsp</param>
    5              </result>
    6 </action>

    全局结果

      当多个action中都使用到了相同result,这时我们应该把result定义为全局结果

    1 <package ....>
    2     <global-results>
    3         <result name="message">/message.jsp</result>
    4     </global-results>
    5 </package>

      注:局部的会覆盖全局-但全局和局部同时存在时,局部的会覆盖全局的。

    全局结果和局部结果的区别:
      * 全局结果:对该包下所有的action配置起作用
      * 局部结果:只对当前的action起作用

       Struts2中 应用范围内action的实例,每个请求都会创建一个action实例-也就是对于每一个请求都会new一个Action对象。刷新或者回车

  • 相关阅读:
    NYOJ 625 笨蛋的难题(二)
    NYOJ 102 次方求模
    ZJU Least Common Multiple
    ZJUOJ 1073 Round and Round We Go
    NYOJ 709 异形卵
    HDU 1279 验证角谷猜想
    BNUOJ 1015 信息战(一)——加密程序
    HDU 1202 The calculation of GPA
    "蓝桥杯“基础练习:字母图形
    "蓝桥杯“基础练习:数列特征
  • 原文地址:https://www.cnblogs.com/hacket/p/3079050.html
Copyright © 2011-2022 走看看