zoukankan      html  css  js  c++  java
  • 学习Struts--Chap04:result中type属性dispatcher、redirect、redirectAction、chain的区别

    1、Struts2框架中常用的结果类型的分析和比较

    • dispatcher:缺省的result类型,type默认是dispatcher内部转发。如果不写type类型只写一个名字的话,不单是type类型默认,而且<param name="location">/XXX.jsp</param>中的location也是默认的,而且默认的情况下location只能是页面,不能是另一个action(可用type="chain"解决)。
    • redirect:可以重定向到一个页面、一个action或者是一个网址。action处理完后重定向到一个视图资源(如:jsp页面),请求参数全部丢失,action处理结果也全部丢失。
    • redirectAction:action处理完成之后重定向到另一个action,请求参数全部丢失,action的处理结果也会全部丢失。可以在任意点上改变URL模式而不会影响你的应用程序. 因此强烈推荐使用这个Result而不是标准的redirect result来解决重定位到某个action的情况.
    • chain:主要是把相关的几个action连接起来,共同完成一个功能。action处理完成之后转发到另一个action,请求参数全部丢失,action的处理结果不会丢失。

    实例代码:

    index.jsp

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>Insert title here</title>
     8 </head>
     9 <body>
    10 <a href="hello?name=Struts2" target="_blank">默认转发_dispatcher</a><br/>
    11 <a href="hello!r?name=Struts2" target="_blank">重定向_redirect</a><br/>
    12 <a href="hello!c?name=Struts2" target="_blank">链条_chain</a><br/>
    13 <a href="hello!ra?name=Struts2" target="_blank">重定向到Action_redirectAction</a><br/>
    14 
    15 <a href="hello" target="_blank">全局result配置</a><br/>
    16 </body>
    17 </html>

    struts.xml

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
     4     "http://struts.apache.org/dtds/struts-2.0.dtd">
     5 
     6 <struts>
     7     
     8   <constant name="struts.enable.DynamicMethodInvocation" value="true" />
     9   
    10   <package name="manage" namespace="/" extends="struts-default">
    11       <global-results>
    12           <result name="error">error.jsp</result>
    13       </global-results>
    14       
    15       <action name="hello" class="com.java1234.action.HelloAction">
    16           <result name="success" type="dispatcher">success.jsp</result>
    17           <result name="r" type="redirect">success.jsp</result>
    18           <result name="c" type="chain">hello2</result>
    19           <result name="ra" type="redirectAction">hello2</result>
    20       </action>
    21       
    22       <action name="hello2" class="com.java1234.action.HelloAction2">
    23           <result name="success" type="dispatcher">success.jsp</result>
    24       </action>
    25   </package>
    26 
    27 </struts>

    HelloAction类:

     1 package com.java1234.action;
     2 
     3 import com.opensymphony.xwork2.ActionSupport;
     4 
     5 public class HelloAction extends ActionSupport{
     6 
     7     /**
     8      * 
     9      */
    10     private static final long serialVersionUID = 1L;
    11     
    12     private String name;
    13     private String error;
    14     
    15     public String getName() {
    16         return name;
    17     }
    18 
    19     public void setName(String name) {
    20         this.name = name;
    21     }
    22 
    23     public String getError() {
    24         return error;
    25     }
    26 
    27     public void setError(String error) {
    28         this.error = error;
    29     }
    30 
    31     @Override
    32     public String execute() throws Exception {
    33         if(name==null || "".equals(name)){
    34             this.error="name是空";
    35             return ERROR;
    36         }
    37         return SUCCESS;
    38     }
    39     
    40     public String r()throws Exception{
    41         return "r";
    42     }
    43     
    44     public String c()throws Exception{
    45         return "c";
    46     }
    47 
    48     public String ra()throws Exception{
    49         return "ra";
    50     }    
    51 }
    HelloAction2类:
     1 package com.java1234.action;
     2 
     3 import com.opensymphony.xwork2.ActionSupport;
     4 
     5 public class HelloAction2 extends ActionSupport{
     6 
     7     /**
     8      * 
     9      */
    10     private static final long serialVersionUID = 1L;
    11     
    12     private String name2;
    13     
    14     public String getName2() {
    15         return name2;
    16     }
    17 
    18 
    19     public void setName2(String name2) {
    20         this.name2 = name2;
    21     }
    22 
    23     @Override
    24     public String execute() throws Exception {
    25         this.name2="你好啊";
    26         return SUCCESS;
    27     }
    28 }

    2、Struts2框架提供的结果类型

    已配置结果类型名  类 名  描 述
    dispatcher  org.apache.struts2.dispatcher.
    ServletDispatcherResult
     默认结果类型,用来呈现JSP页面
    chain  com.opensymphony.xwork2.
    ActionChainResult
     将action和另外一个action链接起来
    freemarker  org.apache.struts2.views.freemarker.
    FreemarkerResult
     呈现Freemarker模板
    httpheader  org.apache.struts2.dispatcher.
    HttpHeaderResult
     返回一个已配置好的HTTP头信息响应
    redirect  org.apache.struts2.dispatcher.
    ServletRedirectResult
     将用户重定向到一个已配置好的URL
    redirectAction  org.apache.struts2.dispatcher.
    ServletActionRedirectResult
     将用户重定向到一个已定义好的action
    stream  org.apache.struts2.dispatcher.
    StreamResult
     将原始数据作为流传递回浏览器端,
    该结果类型对下载的内容和图片非常有用
    velocity  org.apache.struts2.dispatcher.
    VelocityResult
     呈现Velocity模板
    xslt  org.apache.struts2.views.xslt.
    XSLTResult
     呈现XML到浏览器,
    该XML可以通过XSL模板进行转换
    plaintext  org.apache.struts2.dispatcher.
    PlainTextResult
     返回普通文本类容
  • 相关阅读:
    IIS7报错:如果要使用托管的处理程序,请安装 ASP.NET
    mysql 存储过程 循环
    Mysql 遇到过的自带函数使用
    Mysql:is not allowed to connect to this MySQL server
    mysql 删除或更新时出现 you are usering safe update model 的解决方案
    将一个服务器的表数据插入到另一个服务器的表中
    C#操作Excel无法删除worksheet解决方案
    安装MongoDB数据库的注意事项
    Python爬取小猪短租,用的是lxml解析器
    使用Python爬取腾讯房产的新闻,用的Python库:requests 、re、time、BeautifulSoup ​​​​
  • 原文地址:https://www.cnblogs.com/BaoZiY/p/10150827.html
Copyright © 2011-2022 走看看