Struts 2 动态Action应用

本文详细介绍了在Struts2框架中配置动态Action的过程,包括项目搭建、配置struts.xml、实现Action类方法、创建JSP页面及链接,以及在Struts2.5中对动态Action的额外配置。

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

文章参考自:https://blog.youkuaiyun.com/Leafage_M/article/details/54577687
这位博主文章对动态action配置有更详细的介绍,需要的可以移步查看,此篇文章只是在第一次配置动态Action时失败了,通过博主的文章把问题解决了,因此记录一下配置过程

动态Action是通过Action对象中一个具体的方法来实现动态操作的。

Step 1
创建Java Web项目,将Struts 2的支持类库文件添加到library中,之后在web.xml文件中注册Struts 2提供的过滤器,具体可参看:https://blog.youkuaiyun.com/weixin_39663138/article/details/87630240

Step 2
要使用动态Action,需要在struts.xml中对其进行配置:

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
</struts>

只有value设置为真时,才能使用动态Action

Step 3
创建名称为UserAction的Action对象,在对象中编写add()和update()方法,用于处理添加用户信息的请求和更新用户信息的请求,并根据请求返回相应页面

package com.wyx.action;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {
    private String info;
    public String add() throws Exception{
        info = "添加用户信息";
        return "add";
    }

    public String update()throws Exception{
        info = "更改用户信息";
        return "update";
    }

    public String getInfo(){
        return info;
    }

    public void setInfo(String info){
        this.info = info;
    }
}

Step 4
继续在struts.xml文件中配置UserAction

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <package name="hello" extends="struts-default">
        <action name="userAction" class="com.wyx.action.UserAction">
            <result name="add">user_add.jsp</result>
            <result name="update">user_update.jsp</result>
        </action>
    </package>
</struts>

Step 5
创建user_add.jsp和user_update.jsp页面,用于返回相应请求的页面

user_add.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>add</title>
</head>
<body>
    <font color="red">
        <s:property value="info"/>
    </font>
</body>
</html>

user_update.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>update</title>
</head>
<body>
    <font color="red">
        <s:property value="info"/>
    </font>
</body>
</html>

创建index.jsp页面,添加两个超链接,通过Struts2的动态Action,将请求分别指向UserAction中添加用户信息和更新用户信息的请求

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <a href="userAction!add.action">添加用户</a><br>
  <a href="userAction!update.action">更新用户</a>
  </body>
</html>

注:上述调用的链接为userAction!add.action而不是userAction.action!add

Step 6
在Struts 2.5中,要支持动态Action访问的方法还需要继续配置struts.xml,在<allowed-methods>标签中进行描述,最后struts.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <package name="hello" extends="struts-default">
        <action name="userAction" class="com.wyx.action.UserAction">
            <result name="add">user_add.jsp</result>
            <result name="update">user_update.jsp</result>
            <allowed-methods>add,update</allowed-methods>
        </action>
    </package>
</struts>

上述配置之后就能运行测试,下面介绍另一种配置方法:
修改struts.xml为如下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <package name="hello" extends="struts-default">
        <action name="userAdd" class="com.wyx.action.UserAction" method="add">
            <result name="add">user_add.jsp</result>
        </action>
        <action name="userUpdate" class="com.wyx.action.UserAction" method="update">
            <result name="update">user_update.jsp</result>
        </action>
    </package>
</struts>

再修改index.jsp页面代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <a href="userAdd.action">添加用户</a><br>
  <a href="userUpdate.action">更新用户</a>
  </body>
</html>

两种配置运行之后为如下页面:

index.jsp
在这里插入图片描述
user_add.jsp
在这里插入图片描述
user_update.jsp
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值