• Struts2 02--通配符


       在以前没有使用Struts时,web与前台的数据交互通过Servlet+jsp页面。一个增删改查往往需要写四个Servlet来处理数据;在使用struts之后,Servlet不再被使用,而是通过struts.xml+*Action.class来获取数据。这时候Action.class不需要在编写四个,只要写一个,里面再写四个方法就行了;再通过struts.xml里面配置访问路径。那么问题来了?

    struts.xml里面有应该怎么来配置呢?

    在上一篇《Struts2 01---环境搭配》中有提到过struts.xml的规范。一个struts.xml里面常会用到的属性有<package> <action> <result>等等。

    在Struts2框架中是通过package来管理action、result、interceptor、interceptor-stack等配置信息的。

    package属性如下:

    一般来说,我们使用的时候配置name extends就足够了。

    <action>属性如下:

    这个我一般会配置name class method三个属性,如果在配置的时候没有设置method属性就会执行对应的Action.class中的execute();

    配置的时候一般一个方法对应一个这样的配置:

    <action name="IndexAdd" class="com.action.IndexAction" method="add">
        <result name="success" type="redirect"> /index.jsp</result>
        </action>

    可是这种配置虽然不难配置,但是随着方法越来越多,配置方法的action也会越来越多:

    <action name="IndexAdd" class="com.action.IndexAction" method="add">
        <result name="success" type="redirect"> /index.jsp</result>
        </action>
    <action name="IndexUpdate" class="com.action.IndexAction" method="update">
        <result name="success" type="redirect"> /index.jsp</result>
        </action>
    <action name="IndexGetAll" class="com.action.IndexAction" method="GetAll">
        <result name="success" type="redirect"> /index.jsp</result>
        </action>

    那么这个时候其实我们是可以通过通配符来简化配置的代码的,拿上面这一段代码来说,使用了通配符之后:

    <action name="Index*" class="com.action.IndexAction" method="{1}">
        <result name="success" type="redirect"> /index.jsp</result>
        </action>

    在同一个Action.class中的方法都只需要一个<action>来执行,地址是action的name属性值+Action.class中的方法名。*代指方法名,{1}代指*。

    其实通配符还有一种:“!”,这个是一个过时的通配符;我不会使用,只是知道有这个通配符。

    通配符的使用不仅可以用在<name>+<method>上,<result>也可以通过通配符来简化代码;

    <result>属性如下:

    type属性里面有很多返回结果类型,但是我一般用的都是转发或者重定向。默认的就是转发,重定向是redirect ;

  • 相关阅读:
    反射的概述_反射应用实例
    日期类之SimpleDateFormat
    StringBuffer & StringBuilder
    String与包装类_字节数组_字符数组间的转换
    两种方法k8s安装dashboard组件
    git学习
    Prometheus搭建
    python学习博客
    Python的全局变量和局部变量
    python参数
  • 原文地址:https://www.cnblogs.com/pengyan-9826/p/7648356.html
Copyright © 2020-2023  润新知