1.传统的访问方式-很少使用

通过<action>标签中的method属性,访问到action中的具体方法

具体实现:

  1.action代码

import com.opensymphony.xwork2.ActionSupport;

/**
* action访问方式
* 演示传统的配置方式
* @author NEWHOM
*
*/
public class CustomerAction extends ActionSupport { private static final long serialVersionUID = 1L; public String add(){ System.out.println("添加Customer成功..."); return NONE;
} public String delete(){ System.out.println("删除Customer成功..."); return NONE;
} }

  2.配置文件代码

        <!-- 传统的配置方式 -->
<action name="Customer_add" class="com.struts2.web.action3.CustomerAction" method="add"/>
<action name="Customer_delete" class="com.struts2.web.action3.CustomerAction" method="delete"/>

  3.页面代码

    <h3>传统的配置方式</h3>
<a href="${pageContext.request.contextPath }/Customer_add.action">添加Customer</a>
<a href="${pageContext.request.contextPath }/Customer_delete.action">删除Customer</a>

2.通配符访问方式-经常使用

通配符的访问方式:(访问的路径和方法的名称必须要有某种联系.) 通配符就是 * 代表任意的字符  

  1.action代码

/**
* action访问方式
* 演示通配符的访问方式
* @author NEWHOM
*
*/
public class UserAction extends ActionSupport{ private static final long serialVersionUID = 1L; public String add(){ System.out.println("添加User成功..."); return NONE;
} public String delete(){ System.out.println("删除User成功..."); return NONE;
} }

  2.配置文件代码

        <!-- 通配符的访问方式 -->
<action name="User_*" class="com.struts2.web.action3.UserAction" method="{1}"/>

  3.页面代码

    <h3>通配符的访问方式</h3>
<a href="${pageContext.request.contextPath }/User_add.action">添加User</a>
<a href="${pageContext.request.contextPath }/User_delete.action">删除User</a>

3.动态的访问方式-很少使用

如果想完成动态方法访问的方式,需要开启一个常量,struts.enable.DynamicMethodInvocation = false,把值设置成true。
注意:不同的Struts2框架的版本,该常量的值不一定是true或者false,需要自己来看一下。如果是false,需要自己开启。
  1.action代码
/**
* action访问方式
* 演示动态的方式
* @author NEWHOM
*
*/
public class LinkManAction extends ActionSupport{ private static final long serialVersionUID = 1L; public String add(){ System.out.println("添加LinkMan成功..."); return NONE;
} public String delete(){ System.out.println("删除LinkMan成功..."); return NONE;
} }

  2.配置文件代码

    <!-- 开启动态访问的常量 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/> <!-- 动态的访问方式 -->
<action name="LinkMan" class="com.struts2.web.action3.LinkManAction"/>

  3.页面代码

    <h3>动态方法的访问方式</h3>
<a href="${pageContext.request.contextPath }/LinkMan!add.action">添加LinkMan</a>
<a href="${pageContext.request.contextPath }/LinkMan!delete.action">删除LinkMan</a>

4.Struts2中Action的三种访问方式的更多相关文章

  1. Struts2之命名空间与Action的三种创建方式

    看到上面的标题,相信大家已经知道我们接下来要探讨的知识了,一共两点:1.package命名空间设置:2.三种Action的创建方式.下面我们开始本篇的内容: 首先我们聊一聊命名空间的知识,namesp ...

  2. struts2开发action 的三种方法以及通配符、路径匹配原则、常量

    struts2开发action 的三种方法 1.继承ActionSupport public class UserAction extends ActionSupport { // Action中业务 ...

  3. Action的三种实现方式,struts.xml配置的详细解释及其简单执行过程(二)

    勿以恶小而为之,勿以善小而不为--------------------------刘备 劝诸君,多行善事积福报,莫作恶 上一章简单介绍了Struts2的'两个蝴蝶飞,你好' (一),如果没有看过,请观 ...

  4. Action的三种编写方式

    -------------------siwuxie095 Action 的三种编写方式 在 Struts2 的应用开发中,Action 作为框架的核心类,实现 对用户请求的处理,Action 类被称 ...

  5. SpringMVC中HandlerMapping的三种配置方式

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE beans PUBLIC "-/ ...

  6. iOS中正则表达式的三种使用方式

    1.利用NSPredicate(谓词)匹配 例如匹配有效邮箱: NSString *email = @“nijino_saki@163.com”: NSString *regex = @"[ ...

  7. java中线程的三种实现方式

    一下记录下线程的3中实现方式:Thread,Runnable,Callable 不需要返回值时,建议使用Runnable:有返回值时建议使用Callable 代码如下所示: package com.f ...

  8. Golang中map的三种声明方式和简单实现增删改查

    package main import ( "fmt" ) func main() { test3 := map[string]string{ "one": & ...

  9. struts2简单入门-Action的三种配置方式

    普通的配置方式 优点:可读性高 缺点:重复的配置太多. 使用情况 一个actian只有一个方法,只需要处理一种请求. 代码演示 <action name="voteResult&quo ...

随机推荐

  1. idae父子项目Test执行报Result Maps collection already contains value for xxx

    现象:同一个springmvc工程使用eclipse和idea用Tomcat启动都没问题,但是如果走单元测试使用到了@ContextConfiguration这个spring的上下文注解idea出问题 ...

  2. ASE19 团队项目 alpha 阶段 Frontend 组 scrum7 记录

    本次会议于11月11日,11:30 在微软北京西二号楼13158,持续15分钟. 与会人员:Jingyi Xie, , Ziwei Wu, Jiaqi Xu, Jingwei Yi, Hanyue T ...

  3. redis 发布订阅(pub/sub )

  4. JS对象 屏幕分辨率的高和宽 window.screen 对象包含有关用户屏幕的信息。 1. screen.height 返回屏幕分辨率的高 2. screen.width 返回屏幕分辨率的宽

    屏幕分辨率的高和宽 window.screen 对象包含有关用户屏幕的信息. 1. screen.height 返回屏幕分辨率的高 2. screen.width 返回屏幕分辨率的宽 注意: 1.单位 ...

  5. celery中配置redis密码时的ValueError: invalid literal for int() with base 10: 'xxxx'

    原配置: celery_broker = 'redis://:xxxx#xxxx@172.17.0.1:6379/0' # docker0 错误原因: 密码中不能有 # ? 等特殊字符 (无语O__O ...

  6. 2019南昌邀请赛预选赛 I. Max answer (前缀和+单调栈)

    题目:https://nanti.jisuanke.com/t/38228 这题题解参考网上大佬的. 程序的L[i],R[i]代表a[i]这个点的值在区间 [L[i],R[i]] 中最小的并且能拓展到 ...

  7. Employment Planning

    Employment Planning 有n个月,每个月有一个最小需要的工人数量\(a_i\),雇佣一个工人的费用为\(h\),开除一个工人的费用为\(f\),薪水为\(s\),询问满足这n个月正常工 ...

  8. 关系型数据库---MYSQL---系统学习

    1.概述 1.1 mysql数据库是一种  客户端/服务器体系  的 数据库系统: 服务器部分 在启动运行后没有人机界面,所以终端用户  无法直接使用MySQL: 对MySQL数据库进行访问.操作  ...

  9. 利用SparkSQL(java版)将离线数据或实时流数据写入hive的用法及坑点

    1. 通常利用SparkSQL将离线或实时流数据的SparkRDD数据写入Hive,一般有两种方法.第一种是利用org.apache.spark.sql.types.StructType和org.ap ...

  10. SSM框架整合依赖

    <dependencies> <!--mybatis核心jar包--> <dependency> <groupId>org.mybatis</gr ...