前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >struts核心配置文件详解(action配置)

struts核心配置文件详解(action配置)

原创
作者头像
爱撒谎的男孩
发布2018-05-10 18:53:25
9121
发布2018-05-10 18:53:25
举报
文章被收录于专栏:码猿技术专栏

struts核心配置文件详解(action配置)

配置action

  • 前面我们已经说过Action类的三个实现方式,现在我们该说说Action类在struts.xml中的配置问题了

指定特定的方法执行(method)

  • 我们知道ActionSupport类实际上相当与一个POJO类,这个和springmvc不同,struts2中的控制层Action类没有和实体类分离,其中可以有很多的方法,我们知道struts2默认调用的execute方法,但是如果我们想要指定其他的方法来处理请求呢,这时我们就需要使用method这个属性了
  • method: 是<action name="" class="" method="">标签中的属性,指定的是Action类中的方法名,如果不使用这属性,那么默认的值是execute
代码语言:javascript
复制
        <!--  使用method指定 SimpleAction中的login方法执行这个login.action这个URL -->
        <action name="login" class="com.jsnu.struts2.controller.SimpleAction" method="login">
            <result name="success">/jsp/success.jsp</result>
            <result name="input">/jsp/input.jsp</result>
        </action>

配置默认的处理类

  • 上面我们讲解了method的使用方式,但是现在有一个问题,如果一个Action类中有多个处理方法,那么每次定义action都需要在其中指定相同的class属性,如果我们把这个class抽离出来,不用每一个action都写class属性。
  • 只需要在<package>标签内部加上<default-class-ref class="">即可,那么这个<package>包下的所有的action没有设置class的是属性的都是使用的这个默认的处理类。
  • 但是如果<action>标签中指定了class属性,那么会覆盖这个默认的处理类
代码语言:javascript
复制
<package name="test" extends="struts-default" namespace="/">
​
        <!-- 定义这个包下的默认处理类 -->
        <default-class-ref class="com.jsnu.struts2.controller.SimpleAction"></default-class-ref>
​
        <!--  这个action使用的是另外一个处理类,此时的默认处理类对这个action没有作用,被覆盖掉-->
        <action name="testaction"
        class="com.jsnu.struts2.controller.TestAction" >
            <result name="success">/jsp/success.jsp</result>
        </action>
​
        <!-- 这个action没有指定class属性,那么就会使用默认处理类的exit方法 -->
        <action name="simpleAction" method="exit">
            <result name="success">/jsp/success.jsp</result>
        </action>
​
        <!--  使用method指定 SimpleAction中的login方法执行这个login.action这个URL,同样的没有指定class,使用默认处理类中的login方法 -->
        <action name="login"  method="login">
            <result name="success">/jsp/success.jsp</result>
            <result name="input">/jsp/input.jsp</result>
        </action>
</package>

配置默认的处理action

-如果用户输入的的URL地址在这个<package>下,即是namespace符合,但是在其中没有相应的action的做出响应,可能是地址输错了,此时的我们需要使其跳转到error.jsp页面,给用户一个提示。那么我们这个时候就需要使用默认的action。

  • 默认的action的作用就是在用户输入地址没有响应,但是符合<package>下的一个namespace,那么可能是用户输错了,那么我们为了提高友好性,此时需要跳转到error.jsp页面,此时就需要一个默认的action类映射了

-直接在<package> 定义即可,其中的name属性指定的package下的已经存在的action的名称

代码语言:javascript
复制
<package name="test" extends="struts-default" namespace="/">
​
        <!-- 指定默认的action,如果在namespace路径下的找不到指定的action来映射请求,那么就会使用package下的默认的action来做出响应
            name: 指定这个package下的action的名字,相当于已经定义好的action
        -->
        <default-action-ref name="login"></default-action-ref>
​
        <!-- 定义这个包下的默认处理类 -->
        <default-class-ref class="com.jsnu.struts2.controller.SimpleAction"></default-class-ref>
​
​
        <!--  使用method指定 SimpleAction中的login方法执行这个login.action这个URL,同样的没有指定class,使用默认处理类中的login方法 -->
        <action name="login"  method="login">
            <result name="success">/jsp/success.jsp</result>
            <result name="input">/jsp/input.jsp</result>
        </action>
</package>

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • struts核心配置文件详解(action配置)
    • 配置action
      • 指定特定的方法执行(method)
        • 配置默认的处理类
          • 配置默认的处理action
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档