day25_Struts2学习笔记_01 (7)

  result元素中type的取值,type属性的取值在 struts-default.xml 中定义,如下图所示:

2、result元素中param子元素 在请求转发或者请求重定向到不同包下的动作时,都用到了result元素的子元素param。
    param元素的作用:依赖注入(Dependence Injection)思想:
我们通过struts-default.xml中的result-types元素中配置可以看出,每个结果类型视图其实都是靠一个类来实现的。而param元素就是将配置的参数,注入到该类中。
    调用的是对应类的setter方法进行注入的。例如:setNamespace("/n2")和setActionName("action3")

  示例代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <constant name="struts.devMode" value="true"/>

    <package name="p1" extends="struts-default">
        <action name="action1" class="com.itheima.web.action.Demo1Action">
            <result name="success" type="chain"> <!-- 转发到不同包(不同名称空间)下的另一个动作 -->
                <param name="namespace">/n2</param>
                <param name="actionName">action3</param>
            </result>
        </action>

        <!-- 没有给定动作类,默认的动作类是:com.opensymphony.xwork2.ActionSupport,没有给定动作方法,默认的动作方法是:execute -->
        <action name="action2">
            <result name="success" >
                <param name="location">/success.jsp</param>
            </result>
        </action>       
    </package>

    <package name="p2" extends="struts-default" namespace="/n2">
        <action name="action3">
            <result name="success" >/success.jsp</result>
        </action>
    </package>
</struts>
3、自定义结果类型及其配置 通过前面的内容,我们看出,其实结果类型就是一个类:
    这些类都实现了com.opensymphony.xwork2.Result接口。
    或者继承自该接口的实现类org.apache.struts2.dispatcher.StrutsResultSupport
    这些类都有一个doExecute方法,用于执行结果视图。
综上:我们也可以自己写一个结果视图。

例子:
    输出CAPTCHA图像的结果类型。
    CAPTCHA(Completely Automated Public Turing Test to Tell Computers and Humans Apart: 全自动区分计算机和人类的图灵测试) ————>简称:验证码。

步骤:
    1.编写一个普通类,继承自StrutsResultSupport的类,并且重写doExcecute方法。此为自定义结果类型的类。
    2.在struts.xml中进行配置。
    3.在配置action时,type属性指定声明的结果类型名称。
 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppdpj.html