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