Struts2学习笔记 | 通配符映射

1.概述

  • 在之前的学习中,一个action我们都得去配置一次,那么如果有若干个action时,我们就得去配置若干个<action></action>节点,不易于维护。

  • 一个Web应用可能有成百上千个action声明,可以利用Struts提供的通配符映射机制把多个彼此相似的映射关系简化为一个映射关系。


2.格式

类似于下面这样的格式,但是在Action类中必须要有对应的方法才能匹配

使用*之后可以使用{1},{2}来代替第一个*,第二个*,以此类推。

<action name="UserAction-*" class="struts.ss.UserAction" method="{1}">
      <result name="{1}-success">/success.jsp</result>
 </action>

3.通配符映射的规则

  • 若找到多个匹配,没有通配符的那个将胜出
<?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>
    <!-- 配置Struts可以受理的请求的扩展名 -->
    <constant name="struts.action.extension" value="action,,do"></constant>

    <package name="default" extends="struts-default" strict-method-invocation="false">

        <!-- 假如匹配的是UserAction-save ,则会优先匹配第二个而不是第一个-->
        <action name="UserAction-*" class="struts.ss.UserAction" method="{1}">
            <result name="{1}-success">/success.jsp</result>
        </action>

        <action name="UserAction-save" class="struts.ss.UserAction" method="test">
            <result name="query-succerr">/success.jsp</result>
        </action>

    </package>
  • 若指定的动作不存在,Struts将会尝试把这个URI与任何一个包含着通配符*的动作名进行匹配

  • 被通配符匹配到的URI字符串的子串可以用{1},{2}来引用
    {1}匹配第一个子串,{2}匹配第二个子串等等
    {0}匹配整个URI

  • 若Struts找到的带有通配符的匹配不止一个,则按先后顺序进行匹配

  • 可以匹配零个或多个字符,但不包括/字符,如果想把/字符包括在内,需要使用**,如果需要对某个字符进行转义,需要使用\


3.关于Struts2.5以上版本的说明

  • 在看视频学习的时候其教学视频用的是2.3版本的,因此在包前面不用修改其它配置,<package name="default" extends="struts-default" >...</package>就好

  • 但是我自己使用的是Struts2.5,没修改包的属性后直接配置action后,会报错,在包属性添加strict-method-invocation="false"就好了。
    即:<package name="default" extends="struts-default" strict-method-invocation="false">....</package>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值