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

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

配置action

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

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

  • 我们知道ActionSupport类实际上相当与一个POJO类,这个和springmvc不同,struts2中的控制层Action类没有和实体类分离,其中可以有很多的方法,我们知道struts2默认调用的execute方法,但是如果我们想要指定其他的方法来处理请求呢,这时我们就需要使用method这个属性了
  • method: 是<action name="" class="" method="">标签中的属性,指定的是Action类中的方法名,如果不使用这属性,那么默认的值是execute
        <!--  使用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属性,那么会覆盖这个默认的处理类
<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的名称

<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>

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Laoqi's Linux运维专列

Linux入门到精pao通lu

3184
来自专栏前端小叙

vue报错集锦

1、vue报错: 没安装 less-loader css-loader style-loader        可能的很大原因:没安装less 2、vuex报错...

4506
来自专栏Android-薛之涛

Android-多线程

        通俗的说:我们平日里打开的QQ,微信,简书,都是一个进程。进程是程序的一次动态执行过程,它需要经历从代码加载,代码执行到执行完毕的一个完整的过程...

1002
来自专栏LanceToBigData

linux(七)之linux系统中查找文件

前面介绍一篇文章介绍了关于vi编辑器的使用,感觉是不是那么多的命令怎么记得住呀,小编也是这样让认为的,但是慢慢的发现,其实还是很有意思的。正所谓熟能生巧多练习,...

30410
来自专栏喵了个咪的博客空间

PhalGo-Viper获取配置

#PhalGo-Viper获取配置 ? viper项目地址:https://github.com/spf13/viper ##什么是viper viper是国外...

4108
来自专栏python3

python3--中的进程操作--multiprocess模块

运行中的程序就是一个进程。所有的进程都是通过它的父进程来创建的。因此,运行起来的python程序也是一个进程,那么我们也可以在程序中再创建进程。多个进程可以实现...

1071
来自专栏JavaEdge

Java性能调优工具之JDK命令行

3038
来自专栏北京马哥教育

25个shell脚本代码分享,日常工作够用了

引言 自己写了一下小的shell实例,虽然很小,但所有的大的程序都是由小的模块堆积起来的。 程序员一定要懂得一种脚本的书写,而我,只会在linux下工作,所以...

42111
来自专栏逸鹏说道

★Kali信息收集~ 5.The Harvester:邮箱挖掘器

官网:http://www.edge-security.com 安装:apt-get install theHarvester 运行:终端输入 theharve...

3077
来自专栏大眼瞪小眼

程序与进程

昨天复习《深入理解计算机系统》,参考了小土刀的博客,看到了进程和程序在内存中是如何组织的,虽然这张图看了很多遍但是总感觉有疑问。努力解决,参考《深入理解计算机系...

963

扫码关注云+社区

领取腾讯云代金券