zoukankan      html  css  js  c++  java
  • 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符合的话,不带通配符的级别高
    • 只要是含有通配符的都是一个级别,谁在前面匹配谁
  • 相关阅读:
    Python踩坑总结
    you-get下载酷我音乐付费歌曲
    Windows下python2和python3共存时pip失效(pip找不到)的解决办法
    正负混合排序,正数在前,负数在后
    用Python做窗口化滚动点名系统
    sublime3自定义快捷键运行python,支持input()函数
    python中字典,没键加键,有键操作其键对应的值,的思想
    python可变容器类型做函数参数的坑
    Ascii码 unicode码 utf-8编码 gbk编码的区别
    python文件操作各种模式和常用方法总结r r+ rb r+b
  • 原文地址:https://www.cnblogs.com/tech-bird/p/4145314.html
Copyright © 2011-2022 走看看