通配符方式解决struts框架一个Action对应多个请求的处理

本文介绍了Struts框架如何通过通配符方式实现一个Action处理多个请求,详细讲解了HelloWorldAction.java的实现、struts.xml配置,并解析了通配符机制。在访问特定URL时,Struts会根据通配符匹配到对应的更新方法并返回指定的result。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多

struts提供了三中方法解决
1、指定Action属性
2、感叹号方式
3、通配符方式
主要讲一下通配符方式的个人理解

一、HelloWorldAction.java

package com.imooc.action;

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorldAction extends ActionSupport {

    public String add() {

        return "add";

    }

    public String update() {

        return "update";

    }

    @Override
    public String execute() throws Exception {
        System.out.println("执行Action");
        return SUCCESS;
    }

}

二、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>

    <package name="default" namespace="/" extends="struts-default">


        <action name="helloworld_*" method="{1}" class="com.imooc.action.HelloWorldAction">


            <result>/result.jsp</result>


            <result name="add">/{1}.jsp</result>


            <result name="update">/{1}.jsp</result>


        </action>

    </package>

</struts>

三、机制理解

这里写图片描述

访问地址http://localhost:8888/HelloWorld/HelloWorld_update.action
name中的通配符*即代表update的值,也是{1}的值
通过传过来的参数表明method方法是class类中的update方法
在执行HelloWorldAction类中的update方法中,传出String的值为update代表result标签中的name属性,即知道用哪一个result方法返回update.jsp

四、问题探究

1、namespace的多值通配

<action name="*_*" method="{2}" class="com.imooc.action.{1}Action">


            <result>/result.jsp</result>


            <result name="add">/{2}.jsp</result>


            <result name="update">/{2}.jsp</result>


        </action>

name=“_”前一个用{1}表示,后一个用{2}表示,以此类推

2、project->clean
及时清除Eclipse缓存,不然会影响结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值