在同一个模块中(可以理解为同一个类), 可能会有很多方法, 它们的业务功能不同, 但是命名相近, 此时需要配置很多个action就变得比较繁琐, 所以通配符就是来解决这个问题的.
通配符的原则: 约定优于配置
举个例子:
配置文件:
<?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>
<!--
修改"struts.action.extension"属性
"struts.devMode"包含了"struts.configuration.xml.reload"的功能
-->
<constant name="struts.action.extension" value="do,,"></constant>
<constant name="struts.devMode" value="true"></constant>
<package name="hello" extends="struts-default" namespace="/user">
<action name="*" class="com.rl.action.UserAction" method="{1}User">
<result name="success">/{1}User.jsp</result>
</action>
</package>
</struts>
Java类代码:
package com.rl.action;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport{
public String saveUser(){
System.out.println("我被保存了...");
return SUCCESS;
}
public String updateUser(){
System.out.println("我被修改了...");
return SUCCESS;
}
}
结果:


在上面的例子中
约定为: 动作类中的方法名必须以User结尾
action标签中的name属性为"*", 这个"*"代表的是url路径中传递过来的值, 而{1}指的是第一个"*", 此时只有一个save与之匹配, 组合成"saveUser", 返回视图中的"/{1}User.jsp"也是相同的道理
可以采用多个"*"+"_"的形式:


"{1}"跟"{2}"分别是指取第一个"*"的值和第二个"*"的值
注意: 在同一个包中只能有一个通配符的action
本文介绍如何在Struts2框架中使用通配符简化Action配置,通过一个示例展示了如何设置配置文件及Java类代码,使得URL路径中的值能自动匹配到对应的Action方法,极大提高了开发效率。
613

被折叠的 条评论
为什么被折叠?



