Struts2框架动作类的通配符详解

本文介绍如何在Struts2框架中使用通配符简化Action配置,通过一个示例展示了如何设置配置文件及Java类代码,使得URL路径中的值能自动匹配到对应的Action方法,极大提高了开发效率。

在同一个模块中(可以理解为同一个类), 可能会有很多方法, 它们的业务功能不同, 但是命名相近, 此时需要配置很多个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

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值