文档章节

Struts2中的动态方法调用

开源俱乐部
 开源俱乐部
发布于 2014/06/11 16:02
字数 489
阅读 64
收藏 0

一、动态方法调用介绍

        在Struts2开发中,默认执行的是execute方法,有时候我们会在一个Action中写多个方法,这时候我们需要在请求中调用我们想调用的方法,而不是采用多写Action的方式。

        使用动态方法可以避免Action太多。

二、动态方法调用常见方法

本示例中的Action类代码如下所示:

package blog.wlb.net.oschina.my;

public class SimpleAction {
	public String test1(){
		System.out.println("执行测试方法1");
		return "test1";
	}
	
	public String test2(){
		System.out.println("执行测试方法2");
		return "test2";
	}
	
	public String test3(){
		System.out.println("执行测试方法3");
		return "test3";
	}
	
	public String test4(){
		System.out.println("执行测试方法4");
		return "test4";
	}
}

本示例中的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.devMode" value="true" />
    <package name="default" extends="struts-default">
        <action name="simple" class="blog.wlb.net.oschina.my.SimpleAction">
            <result name="test1">/test1.jsp</result>
            <result name="test2">/test2.jsp</result>
            <result name="test3">/test3.jsp</result>
        </action>
    </package>
</struts>

(1)指定method方法

        Get地址请求形如:http://localhost:8080/web/simple.action?method:test1

        Post请求代码如下所示:

<form action="web/simple.action" method="post">
    <input type="hidden" name="method:test1" />
    <input type="submit" value="提交" />
</form>

(2)叹号方式调用

        形如:http://localhost:8080/web/simple!test1.action

        注意:这种方式官方不推荐。

(3)通配符方式

        修改struts.xml中代码

<action name="simple_*" class="blog.wlb.net.oschina.my.SimpleAction" method="{1}">
            <result name="test1">/test1.jsp</result>
            <result name="test2">/test2.jsp</result>
            <result name="test3">/test3.jsp</result>
</action>

        具体访问为

        http://localhost:8080/web/simple_test1

        http://localhost:8080/web/simple_test2

        http://localhost:8080/web/simple_test3

        http://localhost:8080/web/simple_test4

        这种的意思是所有请求的为simple_开头的action都会根据下划线后面的参数动态的匹配action中的方法。

        这种方式是官方推荐的方式。

三、知识扩展

(1)如何启用或禁用动态方法调用

        动态方法调用默认是启用的,如果想禁用,可以在struts.xml中设置如下代码:

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


© 著作权归作者所有

共有 人打赏支持
开源俱乐部
粉丝 10
博文 39
码字总数 31422
作品 0
朝阳
架构师
私信 提问
struts2基于动态代理的Interceptor

struts2核心功能都是基于struts2拦截器的,而拦截器又是基于java的动态代理。 要实现struts2拦截器,需在struts.xml中配置拦截器,每个action可以指定拦截器,指定了拦截器之后默认的拦截器链...

cjun1990
2015/10/23
1K
0
struts2 spring hibernate 原理

近期换了家公司,这家公司用的是最传统的SSH。刚开始工作的时候没注意三大框架的一些原理,今天自己谈谈看, 1、struts2 struts2是基于filter的,但同样也需要servlet的支持。一个请求被过滤...

tiger1986
2013/10/20
0
0
Apache Struts 2 远程命令执行漏洞,你受到影响了?

Apache Struts 2 漏洞又来了...看看你所在的企业是否受到影响? 乌云导读 Apache Struts2 服务在开启动态方法调用的情况下可以远程执行任意命令,漏洞利用代码已经开始流传。 今日Apache St...

oschina
2016/04/26
13.8K
21
Java程序员从笨鸟到菜鸟之(四十六)细谈struts2(八)拦截器的实现原理及源码剖析

本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 拦截器(interceptor)是Struts2最强大的特性之一,也可以说是struts2的核心,拦截器可以让你在Action和res...

长平狐
2012/11/12
49
0
struts.enable.DynamicMethodInvocation疑惑

Struts2中有个比较让我疑惑的地方,就是这个常量的设置struts.enable.DynamicMethodInvocation,其含义是动态方法调用,我一直以为只有将将常量的值设为true,才能通过login!checkLogin.acti...

joyvag
2011/11/29
4.8K
1

没有更多内容

加载失败,请刷新页面

加载更多

Python如何开发桌面应用程序?Python基础教程,第十三讲,图形界面

当使用桌面应用程序的时候,有没有那么一瞬间,想学习一下桌面应用程序开发?行业内专业的桌面应用程序开发一般是C++,C#来做,Java开发的也有,但是比较少。本节课会介绍Python的GUI(图形用...

程序员补给栈
24分钟前
1
0
kafka在的使用

一、基本概念 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统...

狼王黄师傅
30分钟前
1
0
Android JNI总结

0x01 JNI介绍 JNI是Java Native Interface的缩写,JNI不是Android专有的东西,它是从Java继承而来,但是在Android中,JNI的作用和重要性大大增强。 JNI在Android中起着连接Java和C/C++层的作...

天王盖地虎626
昨天
1
0
大数据教程(11.8)Hive1.2.2简介&初体验

上一篇文章分析了Hive1.2.2的安装,本节博主将分享Hive的体验&Hive服务端和客户端的使用方法。 一、Hive与hadoop直接的关系 Hive利用HDFS存储数据,利用MapReduce查询数据。 二、Hive与传统数...

em_aaron
昨天
3
0
跟我学Spring Cloud(Finchley版)-15-Hystrix监控详解

Hystrix提供了监控Hystrix Command的能力,本节来详细探讨。 监控端点与数据 应用整合Hystrix,同时应用包含spring-boot-starter-actuator 依赖,就会存在一个/actuator/hystrix.stream 端点...

周立_ITMuch
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部