通配符举例--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对象。刷新或者回车

转载于:https://www.cnblogs.com/hacket/archive/2013/05/15/3079050.html

struts2-通配符和动态方法调用相关推荐

  1. struts2静态方法和动态方法调用

    1 jsp页面 <%@ page language="java" import="java.util.*" pageEncoding="UTF- ...

  2. struts2的通配符和动态方法调用

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC     &quo ...

  3. Struts2笔记——通配符和动态方法调用

     通配符映射 * 一个 Web应用可能有成百上千个 action 声明. 可以利用 struts提供的通配符映射机制把多个彼此相似的映射关系简化为一个映射关系 * 通配符映射规则     > 若 ...

  4. Struts2使用!动态方法调用无效

    在Struts2的action配置中,可以使用method属性来实现方法的动态调用,除此之外还有一种方式可以实现方法的动态调用,那就是在url中 的action后跟!再跟指定的方法名,比如localh ...

  5. 【SSH】——Struts2中的动态方法调用(一)

    首先我们来看一个简单的调用: 1.在web.xml中配置拦截器StrutsPrepareAndExecuteFilter.StrutsPrepareAndExecuteFilter实现了filter接 ...

  6. JAVA框架——struts(一)struts快速入门,struts访问流程,struts配置文件详解,动态方法调用

    一. Struts2框架概述 是一种基于MVC模式的轻量级web框架.本质是一个Servlet.作为控制器建立模型与视图的数据交互.Struts2以WebWord为核心,采用拦截器的机制处理客户的请求 ...

  7. struts2的动态方法调用(DMI)和通配符映射

    动态方法调用 1.Struts2默认关闭DMI功能,需要使用需要手动打开,配置常量 [html] view plaincopy struts.enable.DynamicMethodInvocatio ...

  8. Struts2动态方法调用

    2019独角兽企业重金招聘Python工程师标准>>> 动态方法调用 在Struts2中动态方法调用有三种方式,动态方法调用就是为了解决一个Action对应多个请求的处理,以免Act ...

  9. 【学习笔记11】动态方法调用和使用通配符定义action

    2019独角兽企业重金招聘Python工程师标准>>> 动态方法调用: 如果Action中存在多个方法时,我们可以使用 !+方法名调用指定方法.如下: public class He ...

  10. Struts2学习---基本配置,action,动态方法调用,action接收参数

    首先我们先来直接配置,然后再来讲原理:  第一步:jar包的引入:  我们可以到struts2的官网上下载:  http://struts.apache.org/download.cgi#struts ...

最新文章

  1. 孙叫兽进阶之路之如何进行情绪管理
  2. iOS.Dev.Support.MultiVersions
  3. 无语!Docker桌面不再对企业用户免费
  4. linux png格式的文件,PNG文件结构分析之一(了解PNG文件存储格式)(转)
  5. JSON数据的解析方式
  6. 在内存不足时,new (std::nothrow)并不抛出异常,而是将指针置NULL
  7. Python基础import导包问题
  8. 【机器学习】PRC(PR曲线)
  9. HTMLifier将scratch游戏打包为html文件
  10. I/O多路复用select服务器
  11. 玩转人工智能(11)使用Pyspark上手机器学习
  12. 某些网页页面偏左,什么原因?
  13. 【国内SEO大牛】网站统计显示被违禁词搜索进来原因
  14. 读完 Effective Java,我整理了 59 条技巧!(含pdf)
  15. NLP相关知识点问答总结(三)
  16. 上海电机学院计算机类分数,2021年上海电机学院投档线及各省最低录取分数线统计表...
  17. Docker与自动化部署
  18. 一个工作薄有多少工作表,每个工作表有多少行和多少列
  19. 机器学习不会解决自然语言理解(NLU)问题
  20. Keyboard, mouse and joystick

热门文章

  1. 【安卓开发 】Android初级开发(二)Activity启动模式
  2. 微课与计算机技术的论文,微课在高校计算机教学的运用论文
  3. C++对象的动态建立
  4. 常见的C语言字符串操作
  5. socket io 不使用redis_Redis这么快,线程模型竟然是单线程
  6. HTML5新布局元素布局,HTML5新的布局元素
  7. python写前端图形界面_如何Tkinter模块编写Python图形界面
  8. pat 乙级 1018 锤子剪刀布(C++)
  9. 工业以太网交换机几点常见故障解析
  10. 工业级千兆以太网光纤收发器产品介绍