第1章 JSP及其相关技术导航
【本章专家知识导学】
JSP是一种编程语言,也是一种动态网页开发技术,要用它完成实践项目工程的开发,需要掌握的知识点比较多。为了让读者对JSP这一开发技术的知识体系有个全面、清晰的了解,为后续的学习打下基础,本章将首先讲述作为一名JSP程序员应该掌握的技术知识体系和本书的内容安排。接着,对JSP技术进行了简要的介绍,使读者了解JSP技术的功能和优势。读者在读完本章后,应当能够了解要成为一个优秀的JSP程序员所要掌握的知识内容,并对JSP技术的要点有了一个整体性的认识,从而在以后的学习中做到有的放矢,完善自己的知识积累。
1.1 JSP程序员常用的技术
如今,开发Web应用程序的技术已经变得相对成熟与复杂了。构建一个Web应用程序不仅仅需要基本的HTML知识,还需要开发者对数据库访问、脚本语言和Web应用服务器管理等方面的知识有所了解,下面介绍JSP程序员常用的一些技术。
1.HTML语言
HTML语言(Hypertext Marked Language,超文本标记语言)是一种用来表示网页中的信息的符号标记语言。通过使用HTML可以在Web页面中加入图片、声音、动画、视频等内容,从一个文件跳转到另一个文件,自由链接。用HTML编写的超文本文档称为HTML文档,它能独立于各种操作系统平台(如UNIX、Windows等)。自1990年以来HTML就一直被用作Internet上的信息表示语言,它是Web程序员需要掌握的基础知识。
JSP技术是一种主流的开发动态网页的技术,JSP程序员理所当然应熟悉HTML。虽然现在制作网页的可视化开发工具很多,功能也强大,例如Dreamweaver、FrontPage,可以自动生成HTML文件中的部分代码,但是在开发过程中,很多地方仍然要求开发人员手工修改HTML代码。所以,作为一个合格的JSP程序员必须要熟练掌握HTML。
2.JavaScript脚本语言
HTML仅仅是一种标记语言,用它可作的事是有限的。用HTML创建的网页是静态的,这种网页不能处理和应答用户的客户端活动。例如,Web页面可能要求用户必须输入用户名、密码等信息,如果用户没有输入这些信息,网页要给出提示信息。如果为了核对用户输入是否为空,把数据送到服务器处理,然后服务器再返回处理结果,这样势必导致大量的网络通讯量。如果这些工作可以在客户端得到处理,将大大降低服务器的负担和网络的通讯量。正是Web网页可交互性的需要导致了脚本语言的出现。脚本语言使网页变成了可交互式的,它允许开发者获取客户端的每个事件,但无需与服务器交互。所以,掌握一种脚本语言成为JSP程序员的必备技能。
推荐读者使用目前最流行的脚本语言JavaScript。JavaScript是一种独立的编程语言,它与Java没有任何关系。JavaScript与Java的区别比较大。首先,JavaScript是一种解释性语言,用JavaScript语言写出的脚本不用编译就可在客户端浏览器上执行,而Java语言编写的程序在执行前是要被编译的。其次,如JavaScript这样的解释语言没有复杂的语法和规则,因此比Java这种被编译语言更容易学习。JavaScript编写的脚本都是集成在HTML当中,用于处理客户端的交互活动,而且是不可扩展的,而Java应用不与HTML直接集成。总之,JavaScript语言与Java语言是性质完全不同的两种语言,两者使用的领域范围不同,两者所能实现的功能也有区别。
3.Java语言基础
Java是JSP的基础,要学习JSP技术,Java基础是必不可少的。在用JSP技术编写Web页面时,很多时候要用到Java语言和Java编程的思想,所以如果读者想深入学习JSP技术,就必须对Java语言有深刻的理解。
Java是一种简单易用、完全面向对象、具有平台无关性、安全可靠的主要面向Internet的编程语言。自它问世以来,Java的快速发展和广泛应用已经让整个Web世界发生了翻天覆地的变化。随着Java Servlet和Java Server Page技术的推出,Java开发工具的功能不断强大,Web服务器软件功能的增强,Java已成为主流的软件开发语言之一。
4. SQL和JDBC
如今,大多数Web应用程序需要访问关系数据库中的数据。作为一个JSP程序员,你需要知道如何存储、得到并操作数据库中的数据。有时候,也需要设计数据库,构建数据库中的表和其他结构。SQL(Strutured Query Language,结构化查询语言)就是用来操作数据库中数据的语言。程序员通常需要编写SQL语句(常常是动态的),把它们传送到数据库服务器,再由数据库服务器执行SQL语句并返回SQL语句执行的结果。
Java语言中需要使用JDBC来帮助Web应用程序和数据库服务器进行通信。JDBC是用于执行SQL语句的Java应用程序接口,由一组用Java语言编写的类与接口组成,在JSP中将使用JDBC来访问数据库。JDBC是一种规范,它让各数据库厂商为Java程序员提供标准的数据库访问类和接口,这样就使得独立于数据库管理系统的Java应用程序统一了开发接口,便于模块化开发。在Windows操作系统中,还可以使用JDBC-ODBC桥驱动程序,这样只要是能够使用ODBC访问的数据库系统,也就能够使用JDBC访问了。
5.Web 服务器管理和应用程序的部署
服务器是对Web浏览器检索信息的请求做出响应,进而将HTML文档回传到客户机的浏览器。JSP页面和Java Servlet必须在特定的Web服务器中运行。因此,你至少需要知道如何配置Web服务器,以及如何为测试、生产运行应用程序而部署相关的Web资源。例如,如果运用Tomcat,你需要了解怎样安装配置它,需要了解如何映射配置文件(server.xml)中相关的应用程序,使Tomcat知道如何调用JSP页面、Servlet组件等资源。
推荐读者使用现在最流行的Web服务器中间件软件Tomcat、Weblogic或Websphere,其中Tomcat是开源免费的,读者可以从http://www.apache.org网站下免费下载得到,本书也将使用Tomcat作为Web服务器端的中间件软件。
6.XML
XML是计算机技术领域中的后起之秀,由World Wide Consortium在1996年开发,现在已经是用于数据交换和可扩展数据结构的一个广泛的、公认的标准了。JSP在其发展过程中也越来越强调XML的语言格式,XML在Java Web开发中扮演着越来越重要的角色。为什么要用XML的相容语言来架构JSP呢?因为作为XML文档的JSP将会得到很多好处,例如:
?一个标准的XML相容的JSP语法将有助于JSP的开发。
?JSP文件的XML语法使得JSP文件的内容很容易被组织和管理。
?可以使用XML的开发和分析工具来开发和分析JSP,仅仅需要更换DTD文件就可以升级到最新版本的JSP。
?XML格式统一的语法更容易学习和使用。
7.Java Servlet
Java Servlet是JSP技术的基础,而且大型的Web 应用程序的开发常使用Java Servlet和JSP结合来实现。
Java Servlet其实和传统的CGI程序和ISAPI、NSAPI等Web 程序开发工具的作用是相同的,在使用Java Servlet以后,用户不必再使用效率相对低下的CGI技术了,也不必使用只能在某个固定Web 服务器平台运行的API方式来动态生成Web 页面。许多Web 服务器都支持Servlet,即使不直接支持Servlet的Web 服务器也可以通过附加的应用服务器和模块来支持Servlet。得益于Java的跨平台的特性,Servlet也是平台无关的,实际上只要符合Java Servlet规范,Servlet是完全平台无关且是Web 服务器无关的。由于Java Servlet内部是以线程方式提供服务,不必对于每个请求都启动一个进程,并且利用多线程机制可以同时为多个请求服务,因此Java Servlet效率非常高。
但Java Servlet也不是没有缺点,和传统的CGI、ISAPI、NSAPI方式相同,Java Servlet是利用输出HTML语句来实现动态网页的,如果用Java Servlet来开发整个网站,动态部分和静态页面的整合过程会给程序员带来相当大的工作量,对程序员要掌握的知识水平和深度也要求比较高,这就是为什么SUN还要推出JSP的原因。JSP编写起来简单多了,但最终在执行时会先由Web容器先转换成Java Servlet,再由Web容器编译执行,所以一个JSP页和一个Java Servlet是一一对应的。
8.JavaBean和JSTL
在复杂的Web应用程序中,JSP页面只用于显示数据,而JavaBean和标签用来实现业务逻辑。
什么是JavaBean?JavaBean就是Java中的可重用组件。ASP.NET通过COM来扩充复杂的功能,如文件上载、发送email等业务处理功能或复杂的计算功能,可以将它们分离出来成为独立的可重复利用的模块。JSP通过JavaBean实现了同样的功能扩充。JSP为在Web 应用中集成JavaBean组件提供了完善的支持。这种支持不仅能缩短开发时间(可以直接利用经测试和可信任的已有组件,避免了重复开发),也为JSP应用带来了更多的可伸缩性。JavaBean组件可以用来执行复杂的计算任务,负责与数据库的交互等。
和传统的ASP或PHP页面相比,JSP页面将会是非常简洁的,由于JavaBean开发起来简单,又可以利用Java语言的强大功能,许多动态页面处理的过程实际上被封装到了JavaBean中。
什么是JSTL呢?JSTL(JSP Standard Tag Libraries,JSP标准标签库)就是存储了可复用代码的标准标签库。为了提高应用程序的开发效率,就可以使用JSTL中已有的标签。此外,通过扩展程序员也可以编写自已的标签;一些框架技术也提供了一些用在JSP页面中的标签,如Struts提供的Struts HTML标签。