J2EE Web开发概述


  Java一开始本来是为消费类电子产品设计的,结果一直没有应用。后来随着Internet兴起,一种Applet技术允许用户在浏览器中运行Java使得网页能呈现动态内容,但很快就被DHTML以及Flash等取代。直到Java Servlet的出现,使得Java开始在服务器端初步显示出生命力,随着J2EE标准的出现,Java在服务器端得到了越来越广泛的应用,并最终确立了事实上的工业标准。

  Servlet是SUN推出的一种Java小服务,它使用Java编写,运行在Servlet容器中,能够动态输出HTML。和传统的CGI相比,Servlet更稳定,更快,开发效率更高,是整个Java Web开发的基础。

  由于Servlet是在Java代码中输出HTML,因此不能可视化地设计页面,同时Java开发人员一般不具备设计美观大方的页面的能力,于是另一种JSP技术出现了。

JSP本质上仍是Serlvet,JSP页面就是在一个HTML页面中嵌入Java代码,执行前会先被编译成Servlet,于是HTML的开发人员不需了解Java也能创作JSP页面。

  

Servlet是在Java代码中嵌入HTML,而JSP则是在HTML中嵌入Java代码,这两种方式决定了Servlet适合处理后台逻辑,而JSP用来向用户发送处理后的结果页面。在一个复杂的大型站点中,通常都会采用以Servlet为控制器,JSP为视图的MVC架构,使得Java开发人员能专注于后台业务逻辑,而HTML开发人员则能专注于页面设计。我们会在后面详细讨论如何在Java Web开发中应用MVC框架。

  JSF(JavaServer Faces)是类似ASP.Net的技术,允许使用运行在服务器端的Web组件,并支持事件驱动,实际上是对JSP的增强。

  随着企业应用的日益复杂,更新的Web技术——Portal(门户)出现了,Portal能动态装配Web组件Portlet,提供以用户为中心的定制服务,如果您对Portal技术感兴趣,请参考

J2EE Portal技术。


  Servlet是以Java语言编写的小服务,您必须熟悉Java语言,了解一定的HTML即可。您在学习Servlet前,必须安装 J2SDK和一个支持Servlet的服务器,推荐使用 Tomcat或 Resin。

  推荐您可以通过教程 Building Java HTTP servlets( 中文)来学习Servlet。此外, Building servlets with session tracking( 中文)还讲解了如何在Servlet中使用会话以便跟踪用户。

  开发JSP和Servlet一样需要 J2SDK和一个支持JSP的服务器。因为JSP最终会被编译成Servlet,所以Servlet服务器一般也支持JSP,推荐使用 Tomcat或 Resin。

  

JSP技术入门是不错的JSP教程。如果您还想了解JSP标签技术,不妨看看 Mastering JSP custom tags( 中文)。

  JSF目前正在发展中,如果您希望了解更多这方面知识,请看 Introduction to JavaServer Pages technology以及 UI development with JavaServer Faces( 中文)。


  

通常,Servlet被用作Controller(控制器),负责接收用户请求,然后调用Model(模型:JavaBean,EJB及其它业务逻辑组件)获得结果,选择某个View(视图,通常是一个JSP页面),将结果传递给View,最后View渲染出HTML页面并返回给用户,从而完成一次完整的HTTP请求,这就是Web层的MVC架构(被称为MVC2或MVC被动模式)。

  为什么要使用如此复杂的MVC架构而不是在一个JSP页面完成所有的功能?这是因为随着站点功能的增长,后台业务逻辑越来越复杂,有必要单独做成业务逻辑组件(如JavaBean,EJB)以便在多个页面中调用。此外,随着页面数量的增长,各个JSP页面之间的链接耦合日益增强,可维护性越来越差,一个页面的修改常常波及到与之关联的许多页面,因此将各个JSP页面的链接解耦就非常有必要。

MVC模式便是通过增加设计的复杂性以降低各模块功能的复杂性,从而使得一个Web应用的可扩展性和可维护性大大增强。

  

MSDN的

Model-View-Controller(

中文)一文详细讲解了MVC架构,推荐一读。

  通常,我们不必自己实现一个MVC框架,已经有许多现成的可直接使用的MVC框架:

  

Struts:第一个最早也是使用最广泛的MVC框架,虽然现在有很多比Struts更优秀的框架,但Struts作为最典型的MVC实现模式,其设计思想影响深远。

  

Maverick:和Struts类似的一个MVC框架,但无需Action Form,且对其他View技术如Velocity提供支持。

  

Spring MVC:确切地说,Spring本身是一个完整的J2EE框架,MVC模块仅仅是Web层提供的功能。如果您打算使用Spring来开发J2EE应用,那么在Web层直接采用Spring提供的MVC框架更能发挥Spring的IoC威力。

  

JPF:JavaPage Flow,是BEA公司开发的完全基于Struts的MVC框架,提供很多增强的功能。由于封装了Struts底层的复杂性,再配合Workshop IDE强大的可视化开发功能,使用JPF非常容易。缺点是目前仅能运行在WebLogic Server上,虽然BEA正在努力将JPF技术作为标准推广到其它Web服务器如Tomcat上。