作者:Dana Nourie,2006.11
翻译:嵇志国,2009.12
你可以在Internet上看到到处都是WEB应用。大部分的WEB应用用来处理在线表单,投票,处理在线商店订单,航班预订,或者是简单地显示用户登录名称。那么,创建WEB应用时用到哪些Java技术呢?你需要导入哪些包呢?这些要看你创建的是哪种WEB应用以及它做什么而定。
本文概览了创建各种WEB应用所用到的Java技术,告诉你何时使用它们,并提供了有用链接。将来的文章将涵盖如何利用这些技术构建WEB应用。为了应用本文所述的技术,请下载并安装Java Development Kit(JDK) 5.0 Update 9 with Java Platform,Enterprise Edition (Java EE)。
开始编码前,你需要理解什么是WEB应用,可以使用什么样的Java技术,什么工具可以节省时间,使创建WEB应用更容易。
目录:
*什么是WEB应用?
*WEB应用中的Java技术
*其他技术
*开发工具
*什么是WEB应用?
Web应用天生就是分布式应用,就是说,它运行在多台计算机上,通过网络或者服务器进行通信。特别地,Web应用通过浏览器访问,并且由于浏览器作为客户端方便易用也让WEB应用很受欢迎。对于企业来说,更新和维护WEB应用省却了在上千台计算机上部署和安装程序的麻烦,这是WEB应用受欢迎的关键原因。Web应用用于Web Mail,在线零售,讨论,博客,在线银行,等等。一个Web应用可能被成百万人使用。
就像桌面应用,WEB应用由许多部分组成,也通常包含小程序,一些WEB应用有用户接口,而另一些根本不需要GUI。此外,WEB应用通常需要一个标记语言或者脚本语言,例如HTML,CSS,或者JavaScript编程语言。而且,许多WEB应用只适用Java语言,由于它
多功能性而成为理想之选。
一个WEB应用可以简单到只有一个页面来显示当前日期和时间,也可以复杂到许多页面集合,让你为了下一次度假而完成查询和预订最方便的航班,酒店,租车。
你将用来创建Web应用的Java技术是JavaEE平台的一部分,也包括Java平台标准版(Java SE)的类和包。为了在服务器上运行如此多的技术,服务器必须安装一个容器,或者WEB Server,以便识别和运行你创建的类。在开发和测试这些技术时,你可以使用本文详细描述的工具,但是在部署时,请确认服务器安装了Java服务器软件以运行基于Java技术的WEB应用。如果你不知道这些信息,请咨询服务器管理员。
*WEB应用中的Java技术
有太多的Java技术而不能在本文中尽列,所以本文只描述最常用的技术。这里列出的技术数量可以说数量众多。请记住你并不需要全部使用他们。实际上,一个WEB应用经常是仅仅由使用JavaServer Pages(JSP)一种技术的页面构成。有时你也会组合使用几种这样的技术。不管最后你用了多少Java技术,知道什么技术可用以及在WEB应用如何使用每种技术,对你来说总是有好处的。
-Java Servlet API
Java Servlet API 允许你定义特定的HTTP类。Servlet扩展到服务器的能力,这些服务器的宿主应用采用request-response编程模型来访问。虽然Servlet可以响应任何类型的请求,但通常用来扩展Web服务器宿主的应用。例如,你可以使用一个Servlet来获取在线表单输入的内容,然后以HTML页面格式在屏幕上打印出来,或者用另外一个Servlet将数据写入文件或者数据库。Servlet运行在服务器端,没有GUI或者自己的HTML用户接口。Java Servlet的扩展使得许多WEB应用成为可能。
图1显示了客户端与Servlet扩展交互的过程。客户端复杂性可能从简单的HTML表单到成熟的基于Java技术的Applet。
客户端(浏览器)<-------------->web服务器<-------->Servlet
图1:Servlet模型
javax.servlet和javax.servlet.http包提供定义Servlet的类与接口。HTML Servlet类扩展javax.servlet.http.HttpServlet抽象类,这个类提供了处理
HTTP协议的框架。
更多内容请参考Java Servlet extensions 和 navigating with servlets
-JavaServer Pages 技术
JavaServer Pages (JSP)技术提供简单、快速创建动态内容的手段。JSP技术能够快速开发服务器和平台独立的基于WEB的应用。JSP
技术允许你直接向基于文本的文档中添加Servlet代码片段。典型地,一个基于文本的JSP页面包含2中类型的文本:
1、静态数据,可以以任何基于文本的格式来表示,例如HTML,无线标记语言(WML),或者XML
2、JSP技术元素,它决定了页面如何构造动态内容
涉及创建JSP页面的包有javax.el,javax.servlet.jsp,javax.servlet.jsp.el和javax.servlet.jsp.tagext,但是你很少需要直接导入这些包。一个JSP页面可以简单到只是一些HTML加一些JSP代码片段,以.jsp作为页面文件的扩展名。
例如,你可以创建一个使用JSP技术页面的WEB站点,这些页面使用一个代码段包含header.html文件,该文件提供站点导航。这样,你在导航中将一个链接改成按钮时,你只需要在一个文件中进行修改,这个修改将装载到所有包含此代码段页面中:
<% include file="header.html" %>
这行代码的工作非常像服务端包含的效果,如果你不熟悉这些话。由于这个WEB页面现在是JSP页面了,你可以继续向其中增加更多的Java技术来创建动态内容,例如调查,表单,各种存入和提取数据库的方法,等等。
看看下面2个有用的文档:
1、JavaServer Pages(JSP) V2.0 Syntax Reference
2、JavaServer Pages Technology--Frequently Asked Questions
-JavaServer Pages Standard Tag Library
JavaServer Pages Standard Tag Library(JSTL)封装了许多基于JSP技术的应用共用核心功能。作为你的应用中混合众多厂商的标签替代,引入了一个单一的标准标签集。这个标准化使你将应用部署到任何支持JSTL的JSP容器中,并且使得标签的优化实现成为可能。
可以使用JSTL的包有javax.servlet.jsp.jstl.core,javax.servlet.jsp.jstl.fmt,javax.servlet.jsp.jstl.sql,和javax.servlet.jsp.jstl.tlv。
更多内容请参考JSTL。
-JavaServer Faces 技术
JavaServer Faces 技术是构建WEB应用的UI框架。JavaServer Faces技术的主要组件包括一个GUI组件框架,一个灵活的模型在各种标记语言和技术中呈现组件,和一个标准的RenderKit用来生成HTML标记。
该功能通过标准Java API 和基于XML的配置文件生效。此外,Sun Java? Studio Creator IDE 用其Drag-and-drop GUI工具支持JavaServer Faces 技术,允许你在不编写和理解底层代码的情况下使用该技术。
参见“Getting Started With Sun Java Studio Creator。”
-Java Message Service API
消息是软件组件或者应用之间通信的方法。一个消息系统是一个对等工具。换句话说,一个消息客户端可以发送信息给其他客户端,也可以从其他客户端接收信息。每个客户端连接到消息代理,代理提供创建、发送、接收和读取消息的手段。通过组合Java企业消息技术,Java Message Service(JMS) API 提供了解决企业计算问题的强有力的工具。
企业消息为遍布企业的业务数据交换提供了可靠、灵活的服务。JMS API加入了这个公共的API并提供了框架,使得开发轻便的、基于消息的Java应用成为可能。一个使用JMS的例子是自动制造的库存跟踪应用。当某个产品库存低于某个水平时,库存组件可以发送消息给工厂组件,以便工厂可以制造更多的汽车。工厂组件可以发送消息给零部件组件以便工厂能够装配其所需零部件。零部件组件相应地发送消息给它的库存并预订部件以更新库存,或从供应商处订购新部件,如此等等。
通过定义一组消息概念的共集和所有JMS技术兼容的消息系统都支持的编程策略,JMS API提高了程序员的生产率。
更多信息见JMS API
-JavaMail API和JavaBeans Activation Framework
WEB应用可以使用JavaMail API发送邮件通知。该API有2个部分:一个应用级别的接口,应用组件用来发送邮件,一个服务提供者接口。服务器提供者实现了特定的email谢谢,例如SMTP。几个服务器提供者包含在JavaMail API包中,另外一些则分开提供。Java EE 平台包括了一个JavaMail扩展的服务提供者,允许应用组件发送email。与JavaMail 扩展一起,你可以使用JavaBeans Activation Framework (JAF) API。该API 提供了标准服务来决定任意数据的类型,封装了对它的访问,发现它支持的操作,并基于JavaBeans组件架构(JavaBeans 组件)创建适当的组件来执行那些操作。
JavaMail API现已开源。请见GlassFish Project--JavaMail主页。
更多信息请见JavaMail API 和 JAF。
-Java API for XML Processing
Java API for XML Processing(JAXP),作为Java SE平台的一部分,支持使用文档对象模型(DOM)、Simple API for XML(SAX)和可
扩展样式表语言转换(XSLT)来处理XML文档。JAXP使应用能独立于特定的XML处理实现来分析和转换XML文档。JAXP还提供命名空间支持,允许你在没有命名冲突的情况下使用模式。以灵活的设计,JAXP让你在应用中使用任何XML兼容的分析器或者XSL处理器,并支持W3C模式。
更多信息见JAXP。
Java API? for XML Web Services (JAX-WS)现在是java.net上的开源项目,也是GlassFish项目的关键部分。
请见Introducing JAX-WS 2.0 With the Java SE 6 Platform,Part 1。
-JDBC API
JDBC API 允许你在Java语言的方法中调用数据库的SQL命令。当你需要访问数据库是,你可以在Servlet中、JSP页面中,或者一个企业组件中使用JDBC API。JDBC API包括2个部分:应用组件用来访问数据库的应用层接口和Java EE平台附带的JDBC驱动的服务提供者接口。
图2 的左边显示了客户端直接调用应用服务器,通常通过一个Servlet或者一个JSP页面,然后,数据被发送到数据库管理系统(DBMS)服务器。右边显示了驱动是如何将JDBC调用翻译成中间件厂商的协议。
。。。。
图2:浏览器到数据库模型
更多信息见JDBC API。
-Java Persistence API
Java Persistence API 是基于Java技术标准的持久化解决方案。持久化使用一个对象-关系映射方法来桥接面向对象模型和关系数据库之间鸿沟。Java持久化技术包括3个方面:
1、Java Persistence API
2、查询语言
3、对象-关系映射元数据
阅读Java Persistence API FAQ
-Java Naming and Directory Interface
Java Naming and Directory Interface(JNDI)提供了命名与目录功能,使应用可以访问多名称与目录服务。它向应用提供了执行标准目录操作的方法,例如将属性与对象关联以及使用属性搜索对象。使用JNDI,WEB应用能够存储和提取任何类型的命名Java对象,允许应用与许多遗留应用和系统共存。
更多信息见JNDI。
*其他技术考虑
根据应用的复杂性,你可以考虑在你的WEB应用中使用下列技术:
1、J2EE Connector Architecture:工具厂商和系统集成商使用这个架构创建资源适配器,以支持对企业信息系统(EIS)的访问,这些EIS可以Plugin到基于Java EE技术的产品
2、Java Authenticationand Authorization Service(JAAS):JAAS给基于Java EE技术的应用提供了一种方法来认证和授权特定用户或者用户组。
3、Java API for XML Registries(JAXR):JAXR允许你通过WEB访问商业或者通用注册表。
4、Java Architecture for XML Binding (JAXB):JAXB 提供了一个方便的方法,将一个XML模式绑定到java语言编写的应用表示中。
5、SOAP with Attachments API for Java(SAAJ):SAAJ 是个底层API,JAX-WS和JAXR依赖于它。
6、Java Transaction API(JTA):JTA提供了标准的接口来划分事务边界。
*开发工具
集成开发环境(IDE)能够加速WEB应用开发和测试的进程。开发者转向IDE不足为奇,但是那个IDE适合你呢?哪些功能是你所需要的呢?Sun 公司支持3种java平台IDE:NetBeans IDE,Sun Java Studio Creator IDE,和SunJava Studio Enterprise IDE。