1、 浅探 JSP 实践要点 (Highlights of JSP Practise) 摘要:本文着重介绍 JSP 技术开发动态网站中的各种优缺点,简要分析 JSP 技术和 ASP 技术的不同之处。 关键字:JSP,Java,JDBC-ODBC,JavaBean。 一、引言 在 Inter 上的众多网站中,基于 L 和 JavaScript 所取代,这些技术极大地改善了用户界面,但当它们尝试做一些深入的工作时,它们开始遇到客户端浏览器不兼容、服务器负担过重、访问速度下降以及安全性的问题。JSP 技术就是解决这些问题的一把金钥匙,本文主要介绍在使用 JSP 技术构建动态网站的过程中对该技术的一些要点
2、和难点。 二、JSP 技术要点 JSP 是基于 JavaServlet 以及整个 Java 体系的 L 文件中加入 Java 程序片段和 JSP 标记,就构成了 JSP 网页。L 格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送 email 等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求很低。如图 1 所示,在用户连接 JSP 网站时,用户请求网页,JSP 页面独自响应请求,将用户对网页的请求转化为对数据的请求,通过JavaBean 处理请求并将返回的数据封装成 HTML 页面返回给用户。 利用 JSP 编
3、写的程序有许多优势: 1、程序写一次,到处可以运行:JSP 在设计时,充分考虑到应用平台的无关性。依赖于 Java 的可移植性,JSP 得到目前许多流行 OS 平台的支持,可在 Apache、Netscape、IIS 等服务器上执行。 2、执行速度快:JSP 页面只需编译一次转化为 Java 字节代码,其后一直驻留于服务器内存中,加快了对 JSP 页面的响应速度。若不考虑 JSP 页面第一次编译所花的时间,则 JSP 的响应速度要比 ASP 快的多。 3、Java 的优势:JSP 技术是用 Java 语言作为脚本语言的。跨平台、成熟、健壮、易扩充的 Java 技术使得开发人员的工作在其他方面也
4、变得容易和简单。在 Windoicrosoft 的 SQLServer。用 JDBC 写的程序能够自动地将 SQL 语句传送给相应的数据库管理系统。 在本地数据库程序使用 Microsoft 的 Access 等数据库时,我们可以使用 Sun 公司开发的 JDBC-ODBCBridge,用此技术 JSP 程序就可以访问带有 ODBC 驱动程序的数据库。这样即保证了 JDBC 的优点而且保证了纯 JSP 程序的安全性、完整性、健壮性和可移植性,又可以使用 Microsoft 提供的 ODBC 数据源与 Access 连接。不管对方是何种数据库,只要有 ODBC 接口就可以直接使用 JDBC-OD
5、BCBridge 与数据库连接,而无需因为后端数据库的改变而改动相应的程序代码,实现了应用层与数据库层的完美分离。如果我们需要变后端数据库为 MySQL,只需要在 ODBC 数据源中安装了MySQL 的驱动程序之后,就可以直接使用 MySQL 数据库了。 2、内建的组件 在实现网站的时候,由于客观需要,为了方便区分本地局域网用户与远端连上来的用户并提供相应的权限,我们采用内建的组件Request 来捕获每一个联到服务器上的用户的 IP 地址,通过比较之后给出相应的权限。这样既可以方便管理,而且可以做到本局域网内用户可以使用网站内所有公开的和不对外公开的资源。我们还可以将现有的方法加以改进,将各
6、种 IP 地址输入到数据库中并且赋予不同的 IP 地址不同的权限,就可以完整的控制用户使用网站资源了。会话状态维持是 axAge()方法可以设置 Cookie 的生存时间。若生存时间为负值,代表浏览器关闭 Cookie 即消失。生存时间为 0,代表删除 Cookie,生存时间为正数,代表 Cookie 存在多少秒。可以用Cookie 临时保存用户的账号和口令, JSP 可随时读取,验证用户的合法性。可以将用户的浏览状态保存在 Cookie 中,下次用户再访问网页时,可由 JSP 向浏览器显示个性化页面。 3、转换 Unicode 编码 在许多 JSP 页面的调试过程中都碰到过许多由于汉字编码与
7、 Unicode编码转换引起的问题。经常遇到浏览器中看到的 JSP 页面中的汉字都是乱码、JSP 页面无法正常显示 GBK 汉字、 JSP 不能接收 Form提交的汉字、JSP 数据库读写无法获得正确的内容等等问题。这是因为现在大部分具有国际化特征的软件核心字符处理都是以 Unicode为基础的,在软件运行时根据当时 Locale/Lang/Codepage 设 置确定相应的本地字符编码设置,并依此处理本地字符,所以我们应该在处理过程中实现 Unicode 和本地字符集的相互转换,甚或以Unicode 为中间的两个不同本地字符集的相互转换。这种方式在网络环境下被进一步延伸,任何网络两端的字符信
8、息也需要根据字符集的设置转换成可接受的内容。 由于我的 IE 默认字符集为 GB2312,然而 WindoL 页面送回给浏览器。ASP.DLL 会针对每个请求产生一个独立的线程。 JSP 由支持它的服务器上的 JSP 引擎负责解释执行。当服务器接收到一个对某 JSP 页面的请求时,如果这时对该页面创建或修改后的第一次请求,那么 JSP 引擎就把该 JSP 页面内容转变成一个纯 Java的 Servlet,然后将其编译成 Servlet 字节代码,这个 Servlet 可以调用其他的 Servlet 或 JavaBeans,最后将 Servlet 的执行结果输出给浏览器。JSP 页面被编译成 S
9、ervlet 之后,其执行代码以独立线程的方式一直存在于服务器的内存中。以后对该 JSP 页面提出请求时,不需要重新编译,除非该页面被修改。JavaServlet 由于在服务器端运行,并且不包括会占用大量系统资源的 GUI,因此运行的速度要比JavaApplet 和 Java 独立应用程序快。 2、JSP 的效率和安全性更高 ASP 以源码形式存放,以解释方式运行,每次 ASP 网页调用都需要对源码进行解释,运行效率不高。另外,IIS 的漏洞曾使得许多网站源程序大曝光,许多用 ASP 开发的网站, ASP 程序全部被人下载去了,这样多网站的安全性产生了很大的危害。JSP 源程序不大可能被下载,
10、特别是 JavaBean 程序完全可以放到不对外的目录中;而且我们可以将 Bean 的 JSP 原程序删除,只剩下 Class 文件,网站照样可以运行。 3、JSP 的组件方式更方便 ASP 通过来扩充复杂的功能,如文件上载、发送 email 以及将业务处理或者复杂计算分离出来成为独立可重复利用的模块。JSP 通过JavaBean 实现了同样的功能扩充。在开发方面,的开发远比JavaBean 复杂和繁琐,学会 ASP 不难,但学会开发可不简单。而JavaBean 就简单多了,从本文上述示例中可以看出开发 JavaBean 很方便。 在维护方面,必须在服务器上注册,如果修改了程序,就必须重新注册
11、,甚至必须关机和重新启动。JavaBean 则不需要注册,放在CLASSPATH 包含的目录中就行了。如果 JavaBean 进行了修改,则JScat 现在还需要关闭和重新运行(但不是关机),但开发者已经许诺将在以后的版本中做到不需要关闭服务器。 另外 JSP 这种基于组件的模式很有效地提高了应用程序的开发效率,因为这种模式能够使开发人员利用快捷的子组件快速创建模板应用程序,然后再整合一些附加功能以后便可使用。像这样的由于 Java语言的优势而产生的有效的方法在 JSP 中无处不在,并可将其打包成一个 JavaBeans 或一个 EJB 组件。 4、JSP 的适应平台更广 ASP 目前仅适用于
12、 NT 和 IIS。虽然 Unix 下有 ChiliSoft 的插件来支持 ASP,但是 ASP 本身的功能有限,必须通过 ASP+的组合来扩充,而且 ActiveX 对象必须事先放置于所选择的平台,Unix 下的实现起来非常困难。 JSP 则不同,几乎所有平台都支持 Java,JSP+JavaBean 可以在所有平台下通行无阻。NT 下 IIS 通过一个插件,例如 JRUN,就能支持JSP。著名的 Web 服务器 Apache 已经能够支持 JSP。虽然现在 NT操作系统占了很大的市场份额,但是在服务器方面 Unix 的优势仍然很大,而新崛起的 Linux 更是来势不小。由于 Apache 广泛应用在NT、 Unix 和 Linux 上,因此 JSP 有更广泛的运行平台。从一个平台移植到另外一个平台,JSP 和 JavaBean 甚至不用重新编译,因为Java 字节码都是标准的与平台无关的。将在实验的 JSP 网页原封不动地拿到 Linux 相应的服务器下就运行起来了,感觉非常好。 五、发展与展望 随着 InterIntra 技术的不断发展,只有服务器端动态网页技术才能满足各种 Web 应用程序日益提高的要求,因此各种动态网页技术先后出现,如 CGI、ASP、PHP 及 JSP 等。JSP 技术是很有发展前景并具有强大功能的服务器端动态网页技术。