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对象。刷新或者回车

  • 相关阅读:
    CND库(Bootstrap 、React、Vue、Angular.js、JQuery)
    使用线性渐变实现滚动进度条
    设置鼠标光标样式
    百度地图API部分功能
    网页的三种布局(固定布局,流式布局,弹性布局)
    这一次带你彻底了解远程Cookie操作
    js获取各种高度和宽度
    点击按钮,回到页面顶部的5种写法
    Chrome默认字体大小
    CSS Grid 网格布局
  • 原文地址:https://www.cnblogs.com/hacket/p/3079050.html
Copyright © 2011-2022 走看看