-------------------siwuxie095

Action 的方法访问

Action 的方法访问方式共有三种,如下:

1、通过 method 属性的配置实现

在 action 标签的 method 属性中配置执行 Action 中的某个方法

(1)编写 Action

BookAction.java:

package com.siwuxie095.action;

import com.opensymphony.xwork2.ActionSupport;

public class BookAction extends ActionSupport {

//添加

public String add() {

System.out.println("--- add ---");

return NONE;

}

//修改

public String update() {

System.out.println("--- update ---");

return NONE;

}

}

(2)配置 Action

struts.xml:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<!-- 配置 Action 的方法访问 -->

<package name="methoddemo" extends="struts-default" namespace="/">

<!-- method 属性:Action 中要执行的方法的名称 -->

<!-- 执行 add() 方法 -->

<action name="addAction" class="com.siwuxie095.action.BookAction" method="add"></action>

<!-- 执行 update() 方法 -->

<action name="updateAction" class="com.siwuxie095.action.BookAction" method="update"></action>

</package>

</struts>

(3)访问路径

1)http://localhost:8080/工程名/addAction

2)http://localhost:8080/工程名/updateAction

「最好加上 .action 后缀,以防某些浏览器无法访问」

缺陷:

Action 中的每个方法都需要进行配置,如果 Action 中

有很多方法,就要配置很多 Action

2、通过通配符的配置实现

在 action 标签的 name 属性中使用通配符 * 代表任意字符

(1)编写 Action(同上 BookAction.java)

(2)配置 Action

struts.xml:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<!-- 配置 Action 的方法访问 -->

<package name="methoddemo" extends="struts-default" namespace="/">

<!--

name 属性:在其中配置通配符 *

method 属性:{1} 代表 name 属性中出现的第一个 * 所代替的字符

执行 Action 的 add() 方法,访问 book_add

执行 Action 的 update() 方法,访问 book_update

-->

<action name="book_*" class="com.siwuxie095.action.BookAction" method="{1}"></action>

</package>

</struts>

(3)访问路径

1)http://localhost:8080/工程名/book_add

2)http://localhost:8080/工程名/book_update

「最好加上 .action 后缀,以防某些浏览器无法访问」

3、通过动态方法访问的配置实现(不建议)

动态方法访问在 Struts2 中默认是不开启的,如果需要使用需要先开启一个常量

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

(1)编写 Action(同上 BookAction.java)

(2)配置 Action

struts.xml:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

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

<!-- 配置 Action 的方法访问 -->

<package name="methoddemo" extends="struts-default" namespace="/">

<!--

name 属性:在其中配置通配符 *

method 属性:{1} 代表 name 属性中出现的第一个 * 所代替的字符

执行 Action 的 add() 方法,访问 book_add

执行 Action 的 update() 方法,访问 book_update

-->

<action name="bookAction" class="com.siwuxie095.action.BookAction"></action>

</package>

</struts>

(3)访问路径

1)http://localhost:8080/工程名/bookAction!add

2)http://localhost:8080/工程名/bookAction!update

「最好加上 .action 后缀,以防某些浏览器无法访问」

补:

1、如果 Action 方法有返回值,在配置文件中没有配置 或 配置不一致,会报错

2、Action 方法可以有返回值,但返回值类型必须是 String

3、Action 方法可以没有返回值,此时,不需要配置 result 标签

1)法一:返回值类型为 void

2)法二:返回值类型为 String,返回 NONE 或 "none"

【made by siwuxie095】

Action的方法访问的更多相关文章

  1. [原创]java WEB学习笔记55:Struts2学习之路---详解struts2 中 Action,如何访问web 资源,解耦方式(使用 ActionContext,实现 XxxAware 接口),耦合方式(通过ServletActionContext,通过实现 ServletRequestAware, ServletContextAware 等接口的方式)

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. Struts2框架之Action类的访问

    1. 通过<action>标签中的method属性,访问到Action中的具体的方法. * 传统的配置方式,配置更清晰更好理解!但是扩展需要修改配置文件等! * 具体的实例如下: * 页面 ...

  3. Struts2_day01--访问action的方法

    访问action的方法(重点) 1 有三种方式实现 第一种 使用action标签的method属性,在这个属性里面写执行的action的方法名称 第二种 使用通配符方式实现 第三种 动态访问实现(不用 ...

  4. struts2学习笔记之八:Action中方法的动态调用

    方法一:action名称+!+方法名称+后缀 Action类中增加addUser()和delUser()方法, package com.djoker.struts2; import org.apach ...

  5. Apache HttpComponents Client 4.0快速入门/升级-2.POST方法访问网页

    Apache HttpComponents Client 4.0已经发布多时,httpclient项目从commons子项目挪到了HttpComponents子项目下,httpclient3.1和 h ...

  6. struts2的Action该方法不能去

    最近做的一个特征,使用struts2,input标签内容,并与相应的内容背景的实体类,当提交方法,无法进入action该方法和程序没有报错被,检验N通方法还没有找到,查找终于找到了,它是input标签 ...

  7. OpenCV不同类型Mat的at方法访问元素时该如何确定模板函数的typename(转)

    自从OpenCV推出了Mat后越来越像是Matlab了,使用起来方便了很多,但是,在用at方法访问Mat时,如何选用合适的typename类型来访问相应的Mat元素是个头疼的问题. 比如: int H ...

  8. 反射工具类.提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class,被AOP过的真实类等工具函数.java

    import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.Validate; import org.ap ...

  9. Controller层的方法访问标志与Spring装配与AspectJ切面处理

    最近在做AspectJ实现的日志模块,在spring配置中加入了<aop:aspectj-autoproxy/>,之后发现,只要有用到自定义注解的类,某些方法经MVC请求时就报空指针错误. ...

随机推荐

  1. iptables规则绑定在port而不是拦截在协议栈

    版权声明:本文为博主原创,无版权.未经博主同意能够任意转载,无需注明出处,任意改动或保持可作为原创! https://blog.csdn.net/dog250/article/details/2417 ...

  2. jdk、jre、JVM的简单区别与联系

    2015-10-20 23:08:52 (1)jdk Java development toolkit(开发工具包),JDK是整个JAVA的核心,包括了Java运行环境jre(Java Runtime ...

  3. 数据库视图View的使用

    一.视图的概念: 概念: 视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据 ...

  4. Docker容器编排器概览

    就像Apple推出iPhone让智能手机变成主流,Docker让容器变成了主流.自从项目发布以来,Docker着重于提升开发者的体验.基本理念是可以在整个行业中,在一个标准的框架上,构建.交付并且运行 ...

  5. HDU 1166 敌兵布阵 (线段树模版题)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  6. Vue踩坑记录册

    1.vue-cli+webpack项目 修改项目名称 解决办法: 1 删除 node_modules 文件夹(如果修改项目名称,需要在在package.json中修改对应的name) 2 重新安装依赖 ...

  7. ApacheOFBiz的相关介绍以及使用总结(三)

    Ofbiz中还提供了一些基础性服务,可以直接用来使用,下面就简单介绍说明一下.   ofbiz邮件发送服务   ofbiz中提供发送邮件相关功能:sendMailFromScreen   contex ...

  8. Codeforces-20152016-northwestern-european-regional-contest-nwerc-A题

    一.题目 二.题意 (1)一开始理解成:它最多需要开多少台电脑.同时,我又有个疑问,既然是最多需要开多少台,那不变成了总共有几个人开几台是最大的结果.然后,WA了无数发.直到比赛结束......其实说 ...

  9. 【POJ】1061 青蛙的约会 / 【BZOJ】1477(扩欧)

    青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 119148   Accepted: 25070 Descript ...

  10. lnmp环境自动化部署

    lnmp.sh #!/bin/bash#This project to install lnmp#Author:菜逼cd命令玩家#Time:2016.10.13#objective:简化人工手动操作, ...