频道栏目
首页 > 资讯 > 其他 > 正文

Apache Struts关键技术入门

17-03-10        来源:[db:作者]  
收藏   我要投稿

Apache Struts关键技术入门,如果你想开始使用Apache Struts,你最有可能想知道你需要学习什么技术。本文档将简要概述成功运行Struts项目所需的内容。

如果你仍然不能决定Struts是为你,或者如果你有任何问题,请随时通过Struts用户邮件列表与我们联系。

关键技术 你需要知道什么框架文档是为活动Web开发人员编写的,并假设有关如何构建Java Web应用程序的工作知识。在开始之前,您应该了解几种关键技术的基础知识:

一般起点

如果你不熟悉Java语言,那么最好的起点是 Java Tutorial。

如果您熟悉Java,但不熟悉上述技术,最好的整体起点是Java EE教程。

如果您为其他平台创建了Web应用程序,您可以按照需要随时访问其他引用。Struts使用的核心技术也被大多数其他Java Web开发产品使用,因此背景信息将在任何Java项目中有用。

HTTP,HTML和用户代理

万维网是通过超文本传输协议 (HTTP) 和超文本标记语言(HTML)构建的。用户代理(如Web浏览器)使用HTTP请求HTML文档。然后浏览器格式化并向其用户显示文档。HTTP用于从浏览器传输更多的HTML,HTML以呈现视图。

如果你想学习HTML,我们建议 Dave Raggett 使用HTML入门。

HTTP请求/响应周期

Web开发人员的HTTP的一个非常重要的部分是请求/响应周期。要使用HTTP,您必须提出请求。然后,HTTP服务器(如Web服务器)必须响应。当您构建Web应用程序时,设计它通过返回HTTP响应来响应HTTP请求。框架通常抽象这些螺母和螺栓中的大部分,但重要的是要了解幕后发生了什么。

如果你不熟悉HTTP请求/响应,你应该了解它。互联网上有很多帮助,例如 互联网如何工作?

Java语言和应用程序框架

Struts是用 Java编程语言编写的。Java是一种面向对象的语言,框架充分利用了许多面向对象的技术。对Java的良好理解,尤其是面向对象的编程(OOP)和线程,将有助于您充分利用Struts。

反思和内省

反射是确定对象上可用的成员字段和方法的过程。内省是JavaBean API使用的一种特殊形式的反射。使用Introspection,我们可以确定对象的哪些方法旨在被其他对象访问。例如,getter和setter。

Struts使用Introspection将HTTP参数转换为JavaBean属性,并从JavaBean属性填充HTML字段。这种技术使得在HTML表单和JavaBean之间“往返”属性变得容易。

虽然当您开始使用Apache Struts时,没有必要对这些概念有深入的了解,但它会帮助您在应用程序增长并变得更加复杂时。

属性文件和资源库

通常使用属性 文件配置Java应用程序(包括Web应用程序)。属性文件都为基础 把ResourceBundle 该框架用于提供消息的资源的应用程序。

Java教程提供了一个 伟大的属性介绍。

Java ResourceBundles使用一个或多个Properties文件,根据用户的Locale向用户提供国际化消息。支持本地化应用程序是从头开始构建到框架中的。

线程

使用Struts 1,你需要知道如何编写可以在多线程环境中运行的代码。使用Struts 2这不再是必要的。在Struts 2环境中,由HTTP请求引起的每个操作都是一个简单的Java对象,它为每个请求实例化。

JavaScript,Ajax和SOAP

使用HTTP和HTML,您可以提供静态网页。今天,这通常不够长,你的应用程序用户可能期望一个交互式用户界面。Web开发人员经常使用JavaScript 来使Web应用程序更有趣。

AJAX是JavaScript程序员经常使用的一种技术,用于创建与桌面应用程序一样具有互动性和响应性的Web应用程序。可以加载网站的视图部分或者仅加载(Struts)应用程序的数据,而不是重新生成整个视图。

Apache Struts提供了很容易使用AJAX甚至JavaScript的插件。当Struts不能提供必要的功能时,第三方提供所需行为的扩展。

另一种可以增强HTTP请求/响应周期的技术是SOAP。使用SOAP,应用程序可以使用HTTP作为传输层来访问数据并在另一个服务器上调用业务逻辑。使用AJAX和SOAP一起成为页面将细粒度请求直接提交到远程服务器,同时仍保留业务逻辑和页面标记之间的关注点的流行方式。根据您的应用程序需要,您可能没有必要了解SOAP。[page]

Servlet,过滤器和Web容器

由于Java是面向对象的语言, Java Servlet 平台努力将HTTP转换为面向对象的形式。这个策略使得Java开发人员更容易专注于他们需要他们的应用程序做什么 - 而不是HTTP的机制。

Java感知的HTTP服务器可以将请求传递到servlet容器。容器可以满足请求,或者它可以将请求传递回HTTP服务器。容器通过检查其servlet列表来决定它是否可以处理请求。如果有为请求注册的servlet,容器将请求传递给servlet。

当请求进来时,容器检查是否有为该请求注册的servlet。如果存在匹配,则将请求提供给servlet。如果不是,请求返回到HTTP服务器。

这是容器管理servlet生命周期的工作。容器创建servlet,调用servlet,并最终丢弃servlet。

旧的Struts 1版本严重依赖servlet和良好的知识,通常有助于开发Web应用程序。

使用Struts 2,您只需要对Servlet有基本的了解。Struts实际上使用一个所谓的ServletFilter来“使事情工作”。通常,在使用Struts 2时,不需要编写Servlet。它仍然有助于了解Servlet,过滤器和容器是什么。

过滤器允许您组成一组将处理请求或响应的组件。过滤器被聚合到一个链中,其中每个过滤器都有机会在后续过滤器(以及最终调用的servlet)处理请求和响应之前和之后处理请求和响应。

会话

HTTP的一个关键特性是它是 无状态的。换句话说,HTTP中没有内置标识来自相同用户的与来自该用户的先前请求相关的后续请求。这使得构建一个应用程序,希望通过几个请求与用户进行对话有点困难。

为了缓解这个困难,servlet API提供了一个称为会话的程序概念,表示为实现接口的对象javax.servlet.http.HttpSession 。servlet容器将使用两种技术(cookie或URL重写)中的一种来确保来自相同用户的下一个请求将包括该会话的会话ID ,以便保存在会话中的状态信息可以与多个请求相关联。这个状态信息存储在 会话属性中(在JSP中,它们被称为“会话范围bean”)。

为了避免在用户无法完成交互时无限期地占用资源,会话具有可配置的超时间隔。如果两个请求之间的时间间隔超过此时间间隔,则会话将超时,并删除所有会话属性。您可以在Web应用程序部署描述符中定义默认会话超时。

重要的是要知道,会话数据最常占用服务器的RAM内存。根据您的容器,您可能有不同的选项绕过这个。

Struts 2提供了创建和访问会话的简单方法。

Web应用程序

正如HTTP服务器可以用于托管多个不同的网站一样,servlet容器可以用于托管多个Web应用程序。Java servlet平台为组织和部署Web应用程序提供了一个定义良好的机制。每个应用程序都在其自己的命名空间中运行,以便可以单独开发和部署它们。Web应用程序可以组合到Web应用程序存档或WAR文件中。单个WAR可以上传到服务器并自动部署。

您肯定需要了解如何从Struts应用程序构建war文件并将其部署到您的服务器。这可能需要知道构建工具,如Maven和在您的服务器供应商的文档中的添加阅读。

安全

可以在Web应用程序部署描述符中配置的一个细节是容器管理的安全性。声明性安全性可用于保护与给定模式匹配的URI的请求。实用安全性可用于根据一天中的时间,调用的参数或Web组件的内部状态来微调安全性进行授权决策。它也可以用于根据数据库中的信息限制身份验证。

有关安全性的更多信息,您应该阅读 Java EE教程。其他项目,如Apache Shiro或 Spring Security也可能帮助您保护您的Web应用程序。

JavaServer Pages,JSP标签库和JavaServer Faces

如果你编写一个经典的网络应用程序,你可能需要一个视图组件。其中第一个类型是JSP。

虽然仍然强大,并完全支持由Struts,人们可能更喜欢其他技术,如Velocity和Freemarker。两人也是Struts的头等公民。

所有人都有共同点,你将开始写HTML标记,并使用JSP标签添加动态功能(同样适用于Velocity和Freemarker)。虽然不推荐,但JSP甚至支持向标记中添加纯Java。建议阅读关于 JSTL或更好的统一表达式语言 。

也就是说,您可以从视图轻松访问您的数据模型。并使它适当。如果你想使用更现代的方法,你会很乐意听到Struts 2提供返回JSON的功能,这通常会助长AJAX驱动的网页。有了它,很容易可以使用jQuery或AngularJS 作为前端层甚至完全丢弃JSP。

如上所述,除了Java Server Pages之外,Struts还有其他一些表示技术:

Freemarker

iText(PDF)

JasperReports

速度

XSLT

可扩展标记语言(XML)

框架提供的特性依赖于有时使用以可扩展标记语言编写的配置文件部署的多个对象 。XML也用于配置Java Web应用程序; 所以,这是另一种熟悉的方法。

幸运的是Struts 2将XML的需求减少到几乎为零。尽管关于XML的基本知识总是好的,但是编写长XML文档以创建Struts应用程序已不再重要。如果你想阅读更多关于它,请访问公约插件的页面 。

模型视图控制器(MVC)

基于JavaServer Pages的Web应用程序有时会将数据库代码,页面设计代码和控制流代码混合在一起。在实践中,我们发现,除非这些关注被分开,更大的应用变得难以维护。

在软件应用程序中分离问题的一种方法是使用模型 - 视图 - 控制器(MVC)架构。模型表示业务或数据库代码,View表示页面设计代码,Controller表示导航代码。

术语“MVC”源于SmallTalk模型 - 视图 - 控制器框架。在Smalltalk MVC中,视图通过“观察者”模式从模型更新自身。原始的MVC模式就像一个闭环:View与Controller交谈,它与Model交谈,并与View交互。

但是,Model和View之间的直接链接对于Web应用程序是不实用的,我们修改经典的MVC布局,使它看起来不像一个循环,更像一个马蹄与控制器在中间。

在MVC /模型2设计模式中,应用程序流由中央控制器调解。控制器将请求(在我们的情况下是HTTP请求)委派给适当的处理程序。处理程序绑定到一个模型,每个处理程序作为请求和模型之间的适配器。模型表示或封装了应用程序的业务逻辑或状态。控制通常通过控制器转发回适当的View。可以通过查询通常从数据库或配置文件加载的一组映射来确定转发。这提供了View和Model之间的松散耦合,这可以使应用程序显着更容易创建和维护。

虽然MVC是一个方便的范例,但许多工人发现应用程序可能使用三层以上。例如,在模型中,通常有不同的业务逻辑和数据访问层。

该框架为Model 2 Web应用程序提供控制层。开发人员可以使用此层与其他标准技术来构建业务,数据访问和表示层。

业务逻辑框架

大多数团队仍然使用简单的旧JavaBeans(POJO)来卷自己的业务逻辑层。虽然,业务层框架已经开始出现,现在包括:

弹簧

Google Guice

共同责任链

或者您可以依赖捆绑的Struts XWork的功能

数据访问框架

最常见的是,业务层被看作与数据访问层不同。一些团队卷自己的数据访问对象(DAO),但越来越多的团队转向许多数据访问框架之一。一些流行的数据访问框架包括:

Apache卡宴

企业Java Bean

休眠

myBATIS

相关TAG标签
上一篇:Kickstart常见问题
下一篇:苹果专利曝光:欲将Apple Pencil磁吸iPad Pro侧边
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站