在本章中,让我们浏览用 Struts 2 集成 Tiles 框架的步骤。Apache Tiles 是模板框架,用于简化 web 应用程序用户接口开发的。首先,我们需要从 Apache Tiles 网站下载 tiles jar 文件。你需要将下列 jar 文件添加到项目的类路径中。tiles-api-x.y.z.jartiles-compat-x.y.z.jartiles-core-x.y.z.jartiles-jsp-x.y.z.jartiles-servlet-x.y.z.
Spring 是一个流行的 web 框架,提供了与大量普通 web 任务的简单集成。所以问题是,当我们已经有了 Struts 2 时,为什么还需要 Spring?好吧,Spring 不仅仅是一个 MVC 框架——它还提供了许多在 Struts 中不可用的东西。例如:对任何框架都有用的依赖注入。在本章中,我们将通过一个简单的示例来展示如何集成 Spring 和 Struts 2。
Struts 使用 DOJO 框架实现 AJAX 标签。首先,在介绍例子之前,你需要将 struts2-dojo-plugin-2.2.3.jar 添加到你的类路径中。你可以从下载的 struts2 的 lib 文件夹中获取这个文件(C:\struts-2.2.3-all\struts-2.2.3\lib\struts2-dojo-plugin-2.2.3.jar)。在这次实践中,让我们修改 HelloWorld.jsp 文件,如下所示:<%@ page contentType="text/html;
form 标签的列表是 Struts UI 标签的子集。这些标签帮助呈现 Struts web 应用程序必需的用户接口,并且能够被划分为三种类别。本章将会带你浏览 UI 标签的这三种类别。简单的 UI 标签我们已经在我们的示例中使用过这些标签了,在本章中我们将一带而过。让我们看看带有几个简单的 UI 标签的简单的视图页面 email.jsp:<%@ page language="java" contentType="text/html;
Struts 2 的 数据标签主要用于操作显示在页面中的数据。以下列出的是重要的数据标签:操作标签该标签允许开发人员通过指定操作名称和可选的名称空间来从 JSP 页面直接调用操作。该标签的主题内容用于呈现来自操作的结果。在 struts.xml 文件中任何为该操作定义的结果处理器都将被忽略,除非指定了 executeResult 参数。<div>Tag to execute the action</div>
Struts 2 有一组标签使得控制页面执行流非常容易。以下是重要的 Struts 2 控制标签的列表:if 和 else 标签该标签实现基本的能够在每种语言中找到的条件流。'If' 标签能够单独使用或与 'Else If' 标签一起使用,单个/多个 'Else' 标签如下所示:<s:if test="%{false}"> <div>Will Not Be Executed</div></s:if><
Struts 2 应用程序可以使用 Java 5 注解作为 XML 和 Java 属性配置的一个替代。这里是和不同类别相关的最重要的注解列表:Namespace 注解(动作注解)@Namespace 注解允许在 Action 类中允许定义一个动作的 namespace,而不是基于 Zero 配置的约定。@Namespace("/content")public class Employee extends ActionSupport{ ...
正如前面所提到的,Struts 提供了两种形式的配置。传统的方式是为所有的配置使用 struts.xml 文件。目前为止,在本教程中我们已经见过了太多这样的例子。另一种配置 Struts 的方式是使用 Java 5 注释功能。使用 struts 注释,我们可以实现 零配置。
Struts 提供了一种简单的方式来处理未捕获的异常,并将用户重定向到一个专门的错误页面。你可以简单的配置 Struts,使得不同的异常有不同的错误页面。Struts 通过使用“异常”拦截器来使异常处理变得简单。“异常”拦截器是默认的栈的一部分,所以配置它你不需要做额外的工作。它为你的使用已经做好了准备,开箱即用。
在开始本章教程之前,让我们看几个 http://struts.apache.org 给出的定义:项描述标签从JSP,FreeMarker 或 Velocity 内部执行的代码小片段模板一小段代码,通常在 FreeMarker 中编写,并且通过某种标签能够被呈现出来(HTML 标签)主题打包到一起的模板的集合,用来提供自定义功能的。我还建议浏览 章节,因为我们会再次采用相同的例子来完成我们的实践。
所有 HTTP 请求都被视为一个 String 的协议。它包括数字,布尔值,整数,日期,小数和其他的一切。根据 HTTP,将所有类型都看成一个字符串。然而,在 Struts 类中,你会有任何数据类型的属性。Struts 是如何自动装配的属性?Struts 在幕后使用了多种类型转换器用来做繁重的工作。
国际化(i18n)是规划和实施产品和服务,以便他们可以很容易地适应特定的本地语言和文化的过程,这个过程被称为本地化。国际化过程有时被称为翻译或本地化启用。国际化缩写为 i18n,因为这个单词以 i 开始,以 n 结束,而且第一个 i 和最后的 n 之间有 18 个字符。
现在我们将观察 Struts 验证框架如何。在 Struts 的核心中,我们有验证框架,它能在动作方法执行之前协助应用程序运行规则来执行验证。客户端验证通常是使用 Javascript 来实现的。但是不应该单独依赖于客户端验证。最佳的实践建议验证应该引入到应用程序框架的各个层中。现在,让我们来看看两种在我们的 Struts 项目中添加验证的方式。
本章将教你如何使用 Struts 2 的应用程序发送电子邮件。为了这个练习,你需要从 JavaMail API 1.4.4 下载并安装 mail.jar,并将 mail.jar 文件放置在你的 WEB-INF\lib 文件夹下,然后继续按照创建动作,视图和配置文件的标准步骤进行。创建动作下一步是创建一个发送电子邮件的动作方法。让我们创建一个新类,称为 Emailer.java,它的内容如下。package com.
本章将用简单的步骤教你如何使用 Struts 2 来访问数据库。Struts 是一个 MVC 框架,而不是一个数据库框架,但它为 JPA/Hibernate 集成提供了很好的支持。我们将在后面的章节中看到 Hibernate 集成,但时在本章中我们将使用普通的 JDBC 来访问数据库。本章中的第一步是设置和准备我们的数据库。在这个例子中,我使用 MySQL 作为我的数据库。
Struts 2 框架为处理文件上传提供了内置支持,它使用“在 HTML 中基于表单的文件上传”。当上传一个文件时,它通常会被存储在一个临时目录中,而且它们应该由 Action 类进行处理或移动到一个永久的目录,用来确保数据不丢失。注意服务器在恰当的位置可能有一个安全策略,它会禁止你写到除了临时目录以外的目录,而且这个目录属于你的web应用应用程序。
值栈值栈是一个几个对象的集合,根据提供的顺序保持下列的对象:序号 对象及描述1Temporary Objects在页面执行期间,有各种各样的临时对象被创建。例如,在一个 JSP 标签中集合中循环的当前迭代值。2The Model Object如果你在struts应用程序中使用模型对象,在动作之前当前模型对象被放置到值栈中。3The Action Object它是被执行的当前动作对象。
正如前面提到的, 标签在 Struts 2 的 MVC 框架中担当 视图的角色。动作是负责执行业务逻辑。在执行业务逻辑之后,下一步是使用 标签显示视图。经常有一些附带结果的导航规则。例如,如果一个动作方法是对用户进行验证,那么有三种可能的结果。(a)成功的登录;(b)不成功的登录-用户名或密码错误;(c)帐户被锁定。
拦截器在概念上和servlet过滤器或JDKs代理类一样。拦截器允许横切功能在动作和框架中单独实现。你可以使用拦截器实现下面的内容:在动作被调用之前提供预处理逻辑。在动作被调用之后提供预处理逻辑。捕获异常,以便可以执行交替处理。Struts 2 框架提供的许多功能都是使用拦截实现的;例如包括异常处理,文件上传,生命周期回调和验证等。
动作是 Struts 2 框架的核心,因为它们是服务于任何 MVC(模型-视图-控制器)的框架。每个 URL 被映射到一个指定的动作中,它提供了必要的处理逻辑来服务用户的请求。但是动作也在其他两个重要的能力上起作用。首先,动作在从请求到视图传输数据中起着重要的作用,无论它是一个 JSP 还是其它的结果类型。
关注时代Java