Action的方法访问

-------------------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】

原文地址:https://www.cnblogs.com/siwuxie095/p/7326112.html