Struts通配符

  在Struts2的配置文件:struts.xml中可以使用通配符

  优势:大大减少配置文件的内容

  劣势:减少了配置文件的可读性

  通配符使用原则:约定高于配置,即优先按照约定规则执行,之后才会按照配置执行。

例如,struts 配置:

  

<!--对投资的管理-->

<package name="invest" extends="json-default">    

        <action name="investAction_*" class="investAction" method="{1}">

            <result name="success">

                /jsp/invest_{1}.jsp

            </result>

        </action>

</package>

解释:(1) * 表示后面匹配任意字符;

   (2)第一个  {1}  表示的就是第一个 * 。

      例如我们访问  "/invest/investAction_addInvest",根据struts配置,就会默认访问   InvestAction.java中addInvest方法,返回参数后,再根据struts的配置,去

    找到 "/jsp/invest_addInvest.jsp"   

     (3)如果是下面配置:

  

<!--对投资的管理-->

<package name="invest" extends="json-default">    

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

            <result name="success">

                /jsp/{2}/update{2}.jsp

            </result>

        </action>

</package>

   即:我们访问一个action:/myProgram/invest_addInvest  ,可以知道: {1} 表示myProgram; {2}表示invest ; {3}表示addInvest

    那么相应的class解析为:com.cn.myProgram.action.investAction

    jsp地址为: /jsp/invest/updateinvest.jsp

   试想,如果我们页面访问多个Action,如:

<body>

 <a href="invest_addInvest.action">添加页面</a><br>

 <a href="invest_updateInvest.action">删除页面</a><br>

 <a href="invest_deleteInvest.action">修改页面</a><br>

</body>

  我们上面的一个配置就可以满足这3个请求。

  最后,匹配的先后顺序是:

  优先对应完全名称相同的配置,然后再去配置通配符;如果同是通配符配置的路径,那么会优先匹配前面的。

  即有请求: "/invest/invest_addInvest",有strust配置:

<!--对投资的管理-->

<package name="invest" extends="json-default">    

        <!-- 1-->

        <action name="invest/invest_addInvest" class="com.cn.invest.action.InvestAction" method="addInvest">

            <result name="success">

                /jsp/invest/addInvest.jsp

            </result>

        </action>

 <!-- 2-->

        <action name="invest/*_*" class="com.cn.invest.action.InvestAction" method="{2}">

            <result name="success">

                /jsp/invest/addInvest.jsp

            </result>

        </action>

 <!-- 3-->

        <action name="invest/invest_*" class="com.cn.invest.action.InvestAction" method="{1}">

            <result name="success">

                /jsp/invest/addInvest.jsp

            </result>

        </action>

</package>

  那么:

   不管配置1在什么位置,会优先匹配。

   配置2和配置3具有相同的优先级,谁在前面先匹配谁。尽管配置3匹配度更高一些。

  

 

你可能感兴趣的:(struts)