原文地址:http://struts.apache.org/primer.html
Struts采用Java语言编写。Java是一个面向对象的语言,Struts框架很好的运用了面向对象的各种技术。对Java,尤其是面向对象编程和线程有很好理解,会有助于你对Struts的学习。
反射与内省
反射是决定对象中哪些成员属性及方法可用的过程。内省是反射的特殊形式,通常用于JavaBean API. 通过内省机制,Struts可以确定一个对象的哪个方法可以被其他对象访问。比如常见的Getters和Setters方法。
Struts通过内省机制将HTTP的参数转换为JavaBean的属性以及把JavaBean的属性填充到HTML的域中。这项技术使得参数可以很好的在HTML及JavaBean之间传递。
一开始学习Struts不需要太深入理解这些概念,但是当你的应用越来越复杂,理解反射及内省会对开发很有帮助。
属性文件与资源包
Java应用,以及WEB应用,通常会通过属性文件来管理配置。属性文件是框架调用资源包为应用提供消息资源的基础。
Java教程提供了关于属性文件的介绍。
Java资源包通过属性文件为不同地区的用户提供国际化的消息。应用的本地化支持已经被内建在了Struts框架中。
线程
在Struts1中开发时要特别注意代码要支持在多线程环境中运行。Strust2已经不需要这么关注线程问题了。
JavaScript, AJAX, and SOAP
运用HTTP和HTML已经可以写静态的网页。如今,用户对应用的期望已经从静态页面转向更好的可交互的用户接口。互联网应用的开发人员通过编写JavaScript来增强交互性,使得应用更有趣。
AJAX技术被JavaScript开发人员用来创建既有很强的交互性,又能够像桌面应用一样及时响应的互联网应用。通过这项技术,可以实现加载网站视图的一部分甚至只加载数据,而不用重新生成整个视图。
Struts提供了支持AJAX和JavaScript的插件。其他Struts本身不支持的功能,可能通过第三方扩展来实现。
SOAP是另一个增强HTTP请求与相应周期的技术。利用SOAP技术,应用可以通过HTTP作为传输层,将访问数据与实现业务逻辑分散在两个不同的服务器上。如今越来越流行通过结合AJAX和SOAP技术来实现:在保持业务逻辑与页面标记之间的会话的同时将请求提交到远程服器(通常是数据服务器)。根据你的应用需要,可以学习更多的SOAP知识。
Servlets, Filters, and Web Containers
Java是面向对象的预言,因此JavaServlets平台致力于将HTTP转换为面向对象的形式。这个策略,将使得Java开发人员更容易聚焦在应用的功能上,而不是HTTP的机制上。
一个Java化的HTTP服务器可以将请求传递给Servlet容器,容器会直接响应这个请求或者将请求传递给后端的HTTP服务。容器来决定是否能通过查询Servlet清单来响应这个请求。如果已经为这个请求注册了Servlet, 容器会将这个请求交给该Servlet.
容器负责管理Servlet的生命周期。容器负责创建、调用并最终销毁Servlet.
Struts1非常依赖Servlet, 对Servlet加深理解将有助于开发互联网应用。
使用Struts2只需要对Servlet有基础的了解。Struts2使用Servlet过滤器来工作。使用Struts2通常不需要直接写Servlet.
过滤器让你能够组合设置处理请求或响应的组件。过滤器会形成一个集群来工作,每个过滤器可以在子过渡器处理请求或响应的之前或之后来处理该请求或响应。
Sessions
HTTP的一个重要特性是无状态。换句话说,HTTP没有一个内建的机制可以区分两个请求是否来自同一个用户。这使得建立一个与用户通过多个请求进行会话的应用很困难。
为了解决这个困难,ServletAPI提供了一个程序化的概念——“会话”,会话直观上是一个实现javax.servlet.http.HttpSession接口的对象。Servlet容器会使用Cookie或URL重写技术来保障来自同一个用户的下一个请求会包含上一个请求建立的会话的ID,这样保存在该会话中的状态信息就能够与来自同一个用户的多个请求相关联。这些状态信息保存在会话属性中(在JSP页面中,状态信息保存在SessionScopeBeans中)。
为了防止当用户交互失败时会无限制的占用资源,会话有个过期时间的配置项。当两个请求的时间间隔超出这个过期时间,会话就会过期,所有会话属性会被清空。互联网应用在部署时要设置一个默认的会话过期时间。
需要强调的是,会话数据通常会占用服务器的RAM内存。根据使用的Web容器,需要进行一些配置来避免这种情况。
Struts2提供一种方便的方法来创建及访问一个会话。
Web Applications
就像一个HTTP服务器可以部署多个网站,一个Servlet容器可以部署多个互联网应用。JavaServlet平台提供了一个定义良好的机制来组织和部署互联网应用。每个应用运行在自己的命名空间中,所以他们可以独立开发及部署。
你必需了解如何从Struts应用来构建WAR文件并部署到服务器上。这需要掌握像Maven一样的构建工具,并阅读你的服务器供应商的文档。
Security安全
互联网应用部署的一个细节就是容器管理之下的安全性。声明安全性能够用来保护请求对资源的操作。可编程的安全配置可以根据一天的时间段、请求参数或者互联网组件的联网状态来进行精细的授权。也可用通过数据库中信息进行授权控制。
更多的关于安全的信息,要参考Java EE 的教程。ApacheShiro或SpringSecurity等项目也会帮助加强你的应用的安全性。
JavaServerPages, JSP Tag Libraries,and JavaServer Faces
如果你编写一个典型的互联网应用,你会需要一个视图组件。其中最可能用到的是JSP.
其他的像Velocity和Freemarker也很强大,Struts也完全支持。