我是靠谱客的博主 大力小猫咪,最近开发中收集的这篇文章主要介绍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>

最后

以上就是大力小猫咪为你收集整理的Struts2学习笔记 | 通配符映射的全部内容,希望文章能够帮你解决Struts2学习笔记 | 通配符映射所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(83)

评论列表共有 0 条评论

立即
投稿
返回
顶部