• Struct.xml Action配置


    <package  name="default" namespace="/"   extends="struts-default">
            
            <action name="hello">
               <result>
                  /Hello.jsp
               </result>
            </action>
        </package>

    struct通过这个action寻找目的视图的过程其实是分为以下几步的:

    1. 找出与url中地址匹配name的action

    2. 找到这个action后,看他的class与method属性,得到这个class对象对应的method方法的返回值(一定是字符串)

         class默认值是ActionSupport

         method默认值是execute

    3.  寻找与返回值具有匹配的name的result

     

    所以Action的配置有以下三种:

    具体视图的返回可以由用户自己定义的Action来决定

    具体的手段是根据返回的字符串找到对应的配置项,来决定是视图的内容

    Action 的class的处理

    • 具体的Action的实现可以是一个普通的java类,里面有public String execute方法即可(忘掉)
    • 实现Action接口且实现他的execute方法(忘掉)
    • 从ActionSupport类继承,好处是它可以直接使用Struct2封装好的方法

     

    Action如果没有class属性,那么默认的就是ActionSupport。

    看ActionSupport这个类的源码,会发现有一个方法:

     public String execute() throws Exception {
            return SUCCESS;
        }

    其实Struct就是默认调用的这个方法

    但是Action执行的时候并不一定执行execute方法

    Action 配置

    • 1 可以通过在配置Action的时候加上一个method属性
    <action name="userAdd" class="com.bjsxt.struts2.user.action.UserAction" method="add">
         <result>/user_add_success.jsp</result>
    </action>

         忘掉,太不灵活,会产生大量的action(一个方法一个action)

    • 2 在url地址中动态指定(动态方法调用DMI)
    <package name="user" extends="struts-default" namespace="/user">
               
            <action name="user" class="com.bjsxt.struts2.user.action.UserAction">
                <result>/user_add_success.jsp</result>
            </action>
        </package>

      

           然后要配url,配置url的时候,用个感叹号把方法分开

    <a href="<%=context %>/user/user!add">添加用户</a>
    <a href="<%=context %>/user/user!delete">删除用户</a>

            这样的话对于同一个类 只需要上面一条action即可,但是在UserAction中注意要写上不同的方法

    • 3.通配符
    <struts>
        <constant name="struts.devMode" value="true" />
        <package name="actions" extends="struts-default" namespace="/actions">
            <action name="Student*" class="com.bjsxt.struts2.action.StudentAction" method="{1}">
                <result>/Student{1}_success.jsp</result>
            </action>
            
            <action name="*_*" class="com.bjsxt.struts2.action.{1}Action" method="{2}">
                <result>/{1}_{2}_success.jsp</result>
                <!-- {0}_success.jsp -->
            </action>
        </package>
    </struts>

    {1} 表示第一个*

           使用通配符,可以将配置量降到最低

           遵守 约定大于配置的原则,

        匹配顺序

    • 如果有多个action符合的话,不带通配符的级别高
    • 只要是含有通配符的都是一个级别,谁在前面匹配谁
  • 相关阅读:
    PAT2019顶级7-2:美丽的序列(线段树+DP)
    ZOJ2112 Dynamic Rank(可持久化线段树套树状数组)
    CF1353E K-periodic Garland(动态规划)
    CF1353D Constructing the array(优先队列)
    HDU2069 Coin Change(基础DP)
    surf(树状数组+DP)
    双倍快乐(回文树)
    ZOJ3591 Nim(博弈论)
    HDU6601 Keep On EveryThing But Triangle(可持久化线段树)
    HDU6599 I Love Palindrome String(回文树)
  • 原文地址:https://www.cnblogs.com/tech-bird/p/4145314.html
Copyright © 2020-2023  润新知