📜  Struts 2-结果和结果类型

📅  最后修改于: 2020-11-11 04:57:55             🧑  作者: Mango


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

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

  • 成功登录
  • 登录失败-用户名或密码错误
  • 帐户被锁定

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

但是,Struts2不会使您将JSP作为视图技术使用。毕竟,MVC范式的整个目的是使各层保持独立且高度可配置。例如,对于Web2.0客户端,您可能希望返回XML或JSON作为输出。在这种情况下,您可以为XML或JSON创建一个新的结果类型并实现这一点。

Struts带有许多预定义的结果类型,并且我们已经看到的是默认的结果类型dispatcher ,用于分配到JSP页面。 Struts允许您将其他标记语言用于视图技术来呈现结果,并且流行的选择包括Velocity,Freemaker,XSLTTiles

分派器结果类型

调度程序结果类型是默认类型,如果未指定其他结果类型,则使用该类型。它用于转发到服务器上的servlet,JSP,HTML页面等。它使用RequestDispatcher.forward()方法。

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


   /HelloWorld.jsp

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


   
      /HelloWorld.jsp
   

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

FreeMaker结果类型

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

Hello World ${name}

上面的文件是一个模板,其中name是将使用定义的操作从外部传递的参数。您将将此文件保留在CLASSPATH中。

接下来,让我们修改struts.xml以指定结果,如下所示:





   
   

      
         
            /hello.fm
         
      
      
   


让我们保留我们在示例章节中创建的HelloWorldAction.java,HelloWorldAction.jsp和index.jsp文件。

现在,右键单击项目名称,然后单击导出> WAR文件以创建War文件。

然后,将此WAR部署在Tomcat的webapps目录中。最后,启动Tomcat服务器并尝试访问URL http:// localhost:8080 / HelloWorldStruts2 / index.jsp 。这将产生以下屏幕。

Hello World Struts 4

输入值“ Struts2”并提交页面。您应该看到下一页。

你好,世界支柱5

如您所见,这与JSP视图完全相同,除了我们不限于使用JSP作为视图技术。在此示例中,我们使用了Freemaker。

重定向结果类型

重定向结果类型调用标准的response.sendRedirect()方法,使浏览器向给定位置创建一个新请求。

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


   
      
         /NewWorld.jsp
      
   

因此,只需修改您的struts.xml文件以定义上述重定向类型,然后创建一个新文件NewWorld.jpg,只要hello操作返回成功,便会在其中重定向您。您可以查看Struts 2 Redirect Action示例以获得更好的理解。