Struts2的处理结果官方澳门新永利下载:

Struts2的处理结果(二)——处理结果的类型,struts2类型

Struts2的处理结果(二)

    ——处理结果的类型

1.Struts2內建的支持的结果类型:

  在<result>元素中的type属性,确定了结果类型。

  chain:Action链式处理的结果类型;

  dispatcher:指定使用JSP为视图资源的结果类型;

  freemarker:用于指定使用FreeMarker模板为视图资源的结果类型;

  httpheader:控制特殊HTTP行为的结果类型;

  redirect:跳转到其他URL的结果类型;

  redirectAction:跳转到其他Action的结果类型;

  stream:向浏览器返回一个InputStream;

  plainText:显示某页面的源代码的结果类型;

  …

2.plainText

  用于显示实际视图资源的源代码。实质上是把此视图资源文件当做普通的文本文件处理,所以才会显示此视图资源的源代码。

示例:

 

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
    <package name="package_a" extends="struts-default">
        <action name="test1" class="testAction.Test1Action">
            <result type="plainText">
                <param name="location">welcome.jsp</param>
                <param name="charSet">UTF-8</param>
            </result>
        </action>
    </package>
</struts>

 

3.redirect

  与dispatcher类型相对,dispatcher类型是将请求转发到指定JSP页面,而redirect是重定向到新的视图资源,redirect会丢失所有的请求参数、属性和Action实例。

示例:

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
    <package name="package_a" extends="struts-default">
        <action name="test1" class="testAction.Test1Action">
            <!-- Action处理完请求之后重定向到此地址 -->
            <result type="redirect">welcome.jsp</result>
        </action>
    </package>
</struts>

 

3.redirectAction

官方澳门新永利下载, 

  与redirect类型相比较,redirect类型是重定向到一个视图资源,而redirectAction是重定向到另一个Action。前一个Action的处理结果、请求参数和属性全部丢失。

示例:

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />
    <package name="package_a" extends="struts-default">
        <action name="test1" class="testAction.Test1Action">
            <!-- 此结果类型为redirectAction类型,重定向到了一个命名空间为/b的name为package_b的Action -->
            <result type="redirectAction">
                <!-- 指定重定向的Action -->
                <param name="actionName">test2</param>
                <!-- 指定Action所在的命名空间 -->
                <param name="namespace">/b</param>
            </result>
        </action>
    </package>
    <package name="package_b" extends="struts-default" namespace="/b">
        <action name="test2" class="testAction.Test2Action">
            <result name="error">error.jsp</result>
        </action>
    </package>
</struts>

 

 

 

 

 

 

  

 

Struts2的处理结果(二) ——处理结果的类型 1.Struts2內建的支持的结果类型:
在…

Action 只是Struts
2控制器的一部分,只负责处理用户请求。当Action处理完请求后,处理的结果会通过视图资源来展示,此时通过<result>元素配置逻辑视图和物理视图之间的映射关系。

result处理流程

Action处理完请求后,将返回一个字符串,整个字符串就是一个逻辑视图名。该字符串在struts.xml配置文件中对应了一个物理视图资源,通常就是JSP页面。Struts
2框架通过配置文件中<action>的<result>子元素配置逻辑视图名和物理视图资源之间的映射关系。当Struts
2框架收到Action返回的某个逻辑视图名时,就会将对应的物理视图呈现给用户。

Struts 2框架的result处理流程如下:

  1. 用户发送请求;
  2. Struts 2框架将用户请求转发到Action控制器;
  3. Action控制器处理完用户请求后,返回一个逻辑视图(普通的字符串);
  4. Struts 2收到这个逻辑视图后,将请求转发到对应的视图资源;
  5. 视图资源将处理结果呈现给用户。
配置result

逻辑视图和物理视图之间的映射是通过在struts.xml中配置<result>元素来实现。配置result是告诉Struts
2框架当Action处理结束后,系统下一步要做什么,应该调用哪个视图资源来显示处理结果。

根据<result>元素在struts.xml文件中所在位置的不同,可以将result分为以下两种:

  • 局部result ——
    将<result>元素作为<action>元素的子元素配置。
  • 全局result ——
    将<result>元素作为<global-results>元素的子元素配置。
局部result

一个Action可以对应多个result。局部result只在特定的Action范围内有效,一个Action不能使用另外一个Action配置的局部result。

配置<result>元素需要指定name和type属性:

  • name属性指定逻辑视图名称,即Action返回的字符串。
  • type
    属性指的是result类型,默认值是dispatcher,表示请求转发到JSP页面。

局部result示例

<package name="default" namespace="/" extends="struts-default">
    <action name="login" class="com.struts.example.action.LoginAction">
        <result name="success" type = "dispatcher">/ok.jsp</result>
    </action>
</package>

配置<result>元素时如果没有指定name和type属性值,系统将使用默认值,其中success是默认的name属性值,dispatcher是默认的type属性值。因此上面的示例代码可以简化成这样:

<package name="default" namespace="/" extends="struts-default">
    <action name="login" class="com.struts.example.action.LoginAction">
        <result>/ok.jsp</result>
    </action>
</package>

发表评论

电子邮件地址不会被公开。 必填项已用*标注