Struts 关键技术指南

如果你想要开始Struts之旅,那么你最可能想要知道的可能是你需要学习哪些技术。这片文档应当给出你想要成功运行一个Struts项目的简要概览。

如果你仍然不能决定Struts是否适合你,或者你有什么问题,请积极地联系我们(通过Struts的用户邮件列表)。

你需要知道的关键技术

这篇框架文档是为主动的网络开发者而写的并且假想读者是有着知道如何创建Java网络程序的知识的。在开始Struts之前,你需要基本了解以下的几个关键技术:

  • HTTP 和 HTML
  • HTTP 请求/响应的周期
  • Java 语言和应用程序框架
  • Javascript、AJAX 和 SOAP
  • Properties 文件和 ResourceBundle
  • Servlet、Filters 和 WEB容器
  • JSP 和 JSP标准标签库(JSTL)
  • XML
  • JAAS
  • 模型 视图 控制器

起点

如果你对java语言不熟悉,一般情况下,最好去看《Java Tutorial》

如果你对java语言属性,但是没有提及到技术,最好的就是去看《Java EE Tutorial》

如果你已经通过若干个平台上创建过web应用程序,你可能需要遵从并且访问一些参考。Struts主要使用的技术也被广泛地应用在其他的java web应用程序,因此,背景知识对于任何一个java工程都是有用的。

HTTP,HTML与用户代理

万维网是在超文本传输协议和超文本标记语言上建立起来的。一个用户代理,就像是一个网页浏览器,它使用HTTP去请求HTML文档。浏览器将内容格式化并展现给用户。HTTP更多的来说是用来传送HTML的,而后HTML在浏览器上呈现出视图。

HTTP 请求/响应的周期

对于网络开发人员来说,HTTP很重要的一部分就是请求/响应的周期。为了使用HTTP,你不得不发送一次请求。一台HTTP服务器,就像是一台网络服务器一样,它有责任响应请求。当你在创建你的网络应用程序的时候,你是这样子设计它的:它通过返回HTTP响应来对HTTP请求响应。框架通常抽取大多数这些细节,但是去理解在这些情景背后发生了什么是很重要的。

如果你对HTTP请求/响应不熟悉的话,你应该去学习它。在互联网上有着很多可用的帮助,比如“互联网是怎样工作的?”

Java语言和应用程序框架

Struts是使用Java程序语言编写的。Java是一种面向对象的语言,以及这个框架充分利用了很对面向对象的技术。能很好地理解Java,并且尤其是面向对象编程和线程,将会帮助你更好地理解Struts。

反射和内省

反射是在一个对象上决定哪些域和方法是可用的处理。内省是JavaBean API所使用的反射的一种特殊化形式。通过使用内省,我们可以决定一个对象的哪些方法可以设计成为其他对象所访问。举个例子,getter和setter就是这样。

Struts使用内省来把HTTP参数转化成为JavaBean的属性,并且从JavaBean产生HTML域。这种技术使得HTML表单和JavaBean之间转换很容易。

当你开始阿帕奇struts时,尽管不需要地反射和内省这种技术有这深刻的了解,但这种技术能帮你构建更巨大、更复杂的应用程序。

属性文件和资源绑定

Java应用程序,包括网络应用程序,通常是使用熟悉文件来进行配置的。属性文件是框架使用资源绑定的基础,而资源绑定是一个框架为一个应用程序提供消息资源的。

《Java Tutorial》对Properties提供了大量的介绍。

Java资源绑定基于用户的本地环境使用了一个或多个属性文件来用户提供国际化消息。在这个框架中创建了对一个应用程序本地化的支持。

《Java Tutorial》再次提供了更多的信息。

线程

在Struts1中,你需要知道很多关于怎样在多线程的环境中编写代码。而在Struts2中这已经不再是必需的了,在Struts2环境中每一个由HTTP请求引发的动作都是基于每个请求的一个普通的java对象。

Servlets, Filters, and Web 容器

既然java是一面向对象的语言,java servlet平台就设法把HTTP转变成为面向对象的形式。这种策略使得java程序开发人员集中注意力在如何构建他们所需的程序上,而不是传输HTTP。

一个感知Java的HTTP服务器能传递请求到servlet容器中。容器能够完成请求或者将请求回传给HTTP服务器。容器通过检查servlet列表来决定是否处理请求。如果存在一个已经为请求注册了的servlet,容器就会把请求发送给这个servlet。

当一个请求到来,servlet容器就会检查请求的servlet是否注册了。如果有注册的请求匹配,就把请求交给这个servlet。如果不存在这么一个匹配,请求就会返回给HTTP服务器。

容器的工作是管理servlet的生命周期。容器创建了servlets,调用servlet,并且最好销毁servlet。

旧版本的Struts1严重地依赖了servlets,并且对servlet的良好理解可以帮助网络程序的开发。

在Struts2中,你只需要对servlet有基本的了解就可以了。Struts使用所谓的ServletFilter来完成工作。一般在使用Struts2的时候不需要我们去写Servlet。但是这仍然帮助我们知道什么是Servlet、Filters和容器。

Filter能够让你组成一系列的处理请求和响应的组件。Filters聚合成为一条链,在这条链里面,每一个Filter都有机会在子链的前后处理请求和响应(最后一般是由Servlet处理)。

会话

HTTP一个主要的特征是它是没有状态的。换句话来说,HTTP无法让同一个用户随后的请求和之前的请求相关联起来。这使得创建一个在一次会话中包含若干请求的应用程序有点儿困难。

为了降低这种难度,servlet API 提供了一种称之为Session的纲领性概念,Session以对象的形式展现并且实现了javax.servlet.http.HttpSession接口。Servlet容器将会使用两种技术(cookie或者URL重写)中的一种来保证同一个用户的下一次请求会包含这次会话的session id,这样关联多个请求的状态信息就可以在session中保存了。这种状态信息将会在session中的属性保存(在JSP中,它们就是“session 范围的 beans”)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值