Struts2的通配符配置方式[通俗易懂]

Struts2的通配符配置方式[通俗易懂]Struts2的Action类很有意思,你可以使用3种方式来实现具体的Action类:以上三种Action的实现方式都可以被struts2框架自动识别,如果你在struts.xml里面配置了一个ac

大家好,又见面了,我是你们的朋友全栈君。

Struts2的Action类很有意思,你可以使用3种方式来实现具体的Action类:

  1. 让你的Action类继承自ActionSupport类(项目中最常用这种方式,因为ActionSupport类中定义了很多帮助方法)
  2. 让你的Action类实现Action接口
  3. 使用POJO的方式来实现,只要Action类中有一个返回值为String的execute方法就好了(这种方式使Action类最容易被测试)

以上三种Action的实现方式都可以被struts2框架自动识别,如果你在struts.xml里面配置了一个action块但是没有配置action类的路径,这样框架默认使用ActionSupport来处理请求。

但是在实际使用struts2的过程中我发现了一个问题,一个Action只有一个execute方法来处理一类请求,如果我开发的某块功能有100个不同的请求那我岂不是要写100个Action类,每个类实现一个execute方法,这样虽然满足了一个类一个责任的设计原则,但是会不会造成“类爆炸”?后来看了struts2的文档才知道,其实我们可以使用struts2灵活的通配符配置来达到减少action类的目的:

先来看看一个简单的时序图

Struts2的通配符配置方式[通俗易懂]

请求从这个页面发起,只是简单的两个链接

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="infoadd">ADD INFO</a><br>
<a href="infodel">DEL INFO</a><br>
</body>
</html>

请求的控制转发是在struts.xml里面配置的

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <package name="mypack" extends="struts-default">
        <action name="info*" class="com.stone.struts2.action.MyFirstAction" method="{1}">
            <result>/{1}info.jsp</result>
            <allowed-methods>add,del</allowed-methods>
        </action>
    </package>
</struts>

上面这个XML的配置内容有几点需要注意:

  1. 我开启了struts2的RMI,apache struts基于安全性考虑,RMI默认是关闭的。
  2. 大家看到action name的值跟平常有点不一样,我使用了星号通配符用来匹配JSP中的两个链接:infoadd和infodel, 要配置method=”{1}”, 这样要被调用的method名字就分别是add和del了。
  3. result的JSP页面的名字也可以用通配符来配置,我分别定义了两个JSP,addinfo.jsp和delinfo.jsp,这样正好一一对应。
  4. 注意在struts2.5之后,基于安全性考虑struts2默认开启了SMI,必须显示定义Action中能被请求调用的方法,所以我有配置<allowed-methods>

看看这个Action类

public class MyFirstAction extends ActionSupport {
    
    public String add() {
        return SUCCESS;
    }
    
    public String del() {
        return SUCCESS;
    }
}

这个demo是为了测试struts2的通配符配置,所以两个JSP里面的内容只是返回一句话而已,这里我就不贴出来了,现在看看调用,我点第一个链接:

Struts2的通配符配置方式[通俗易懂]

Struts2的通配符配置方式[通俗易懂]

点第二个链接

Struts2的通配符配置方式[通俗易懂]

由此可见,struts2的通配符配置真的是很灵活很强大滴,这样我们在实际项目开发中可以少写很多Action类并减少很多配置。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154857.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • DataList事件ItemDataBound与DataBind()

    DataList事件ItemDataBound与DataBind()     学习控件,往往需要知道控件所拥有的事件,比如说DataList控件吧,以前没有用过,但凭着对其它控件(如:Dropdownlist)的认知,想当然就知道只要给数据源绑定数据就OK了。那样控件应该就能显示数据了,虽然这样的想法不无道理,但有时候总有例外,比如Component的combobox,除了要绑定数据源,还要先在绑定前指定文本域名与值域名的属性值,方可显示。查找了MSDN的相关说明如下:地址:http://msdn.microsoft.com/zh-cn/library/system.we

    2022年10月13日
  • 黑苹果 MacOS 10.15 Catalina 安装详细教程带工具资料「建议收藏」

    黑苹果 MacOS 10.15 Catalina 安装详细教程带工具资料「建议收藏」图文教程悦享地址:点击打开链接视频教程B站地址:点击打开链接​一、准备工作  一个8G以上的U盘(有的U盘标的是8G,实际只有X,实际容量小于7.5G的会失败)  MacOS镜像、TransMac(刻录工具)、DiskGenius(分区工具)、EasyUEFI(引导工区)、EFI驱动文件。    二、制作启动U盘  1、将您的U盘插入电脑,为保证成功,首先将U盘以默认值格…

  • 用HTML5做的导航条(步骤非常详细)

    用HTML5做的导航条(步骤非常详细)转载请注明出处:这里写链接内容首先准备网页背景图片和导航背景图片,放在同一目录下的images文件夹中编写html文件

  • 直立智能车(平衡车)毕业论文[通俗易懂]

    直立智能车(平衡车)毕业论文[通俗易懂]直立智能车设计摘要随着微电子控制技术的发展和人们对出行工具的日益增长的需求,一款简单易操作、容易携带、清洁无污染的两轮自平衡车开始走进大众的视野,但这种小型代步工具仍可能存在一定的不稳定性和安全隐患,本次课题主要通过在实验室制作一款简易的自平衡小车,通过手机蓝牙控制,以此模拟真实的使用者驾驶体验,在模拟实验中提升平衡车的稳定性,解决可能出现的实…

  • linux查看运行中的java_linux怎么查看当前进程

    linux查看运行中的java_linux怎么查看当前进程【www.hyheiban.com–知识文库】在linux系统下可以通过命令查看进程,那么具体是那个命令呢?下面由小编为大家整理了linux查看进程的命令,希望对大家有帮助!一、linux查看进程的命令有ps、pstree、pgrep等1、ps显示进程信息,参数可省略-aux以BSD风格显示进程常用-efH以SystemV风格显示进程-e,-A显示所有进程a显示终端上所有用户的…

  • apk 查看签名,以及apk签名方法

    apk 查看签名,以及apk签名方法1、查看apk签名    jarsigner-verify-verbose-certsout/target/product/hq6735_65u_b1p_l1/system/app/FineOSSystemManager/FineOSSystemManager.apk2、添加签名    1.找到系统签名文件,文件路径:在源码的\build\targe

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号