教程 > struts 教程 > 阅读:33

struts 2 结果类型 result type——迹忆客-ag捕鱼王app官网

如前所述, 标签在 struts2 mvc 框架中扮演视图的角色。 action 负责执行业务逻辑。 执行业务逻辑后的下一步是使用 标记显示视图。

结果通常附带一些导航规则。 例如,如果操作方法是对用户进行身份验证,则有三种可能的结果。

  • 登录成功
  • 登录失败 - 用户名或密码不正确
  • 帐户被锁定

在这种情况下,action 方法将配置三个可能的结果字符串和三个不同的视图来呈现结果。 我们已经在前面的示例中看到了这一点。

但是,struts2 并不束缚我们使用 jsp 作为视图技术。 毕竟 mvc 范式的全部目的是保持层分离和高度可配置。 例如,对于 web2.0 客户端,我们可能希望返回 xmljson 作为输出。 在这种情况下,我们可以为 xml 或 json 创建新的结果类型并实现此目的。

struts 附带了许多预定义的结果类型,以及我们已经看到的默认结果类型分派器,用于分派到 jsp 页面。 struts 允许我们为视图技术使用其他标记语言来呈现结果,流行的选择包括 velocityfreemakerxslttiles


dispatcher 结果类型

dispatcher 结果类型是默认类型,如果没有指定其他结果类型,则使用该类型。 它用于转发到服务器上的 servlet、jsp、html 页面等。 它使用 requestdispatcher.forward() 方法。

我们在前面的示例中看到了“速记”版本,其中我们提供了一个 jsp 路径作为结果标记的主体。


   /helloworld.jsp

我们还可以在 元素中使用 标记指定 jsp 文件,如下所示


   
      /helloworld.jsp
   

我们还可以提供 parse 参数,默认情况下为 trueparse 参数确定是否为 ognl 表达式解析 location 参数。


freemaker 结果类型

在此示例中,我们将了解如何使用 freemaker 作为视图技术。 freemaker 是一种流行的模板引擎,用于使用预定义的模板生成输出。 现在让我们创建一个名为 hello.fm 的 freemaker 模板文件,其内容如下

hello world ${name}

上面的文件是一个模板,其中 name 是一个参数,它将使用定义的操作从外部传递。 我们将把这个文件保存在 classpath 中。

接下来让我们修改struts.xml指定 result 如下



    
    
        
            
                /hello.fm
            
        
    

让我们保留我们在示例章节中创建的 helloworldaction.javahelloworldaction.jspindex.jsp 文件。

然后启动项目,在浏览器中访问页面

struts 运行示例

在输入框中输入“struts2”并提交。 我们会看到如下的界面。

struts 运行示例提交界面

正如大家所看到的,这与 jsp 视图完全相同,只是我们不依赖于使用 jsp 作为视图技术。 我们在这个例子中使用了 freemaker。


redirect 结果类型

redirect 结果类型调用标准的 response.sendredirect() 方法,导致浏览器创建到给定位置的新请求。

我们可以在 元素的主体中或作为 元素提供位置。 重定向还支持 parse 参数。 这是一个使用 xml 配置的示例


      
          
              /newworld.jsp
          
      

因此,只需修改我们的 struts.xml 文件以定义上述 redirect 类型并创建一个新文件 newworld.jpg,只要 hello 操作返回成功,我们就会在该文件中被重定向。我们可以查看 struts 2 重定向示例以获得更好的理解。

查看笔记

扫码一下
查看教程更方便
网站地图