ITEEDU

语言技术: JSP/Servlet

在Java EE的蓝图中,JSP/Servlet是属于Web层技术,JSP与Servlet是一体的两面,您可以使用单独一项技术来解决动态网页呈现的需求,但最好的 方式是取两者的长处,JSP是网页设计人员导向的,而Servlet是程序设计人员导向的,厘清它们之间的职责可以让两个不同专长的团队彼此合作,并降低 相互间的牵制作用。

准备工作

    动态网页的请求发送大都是透过窗体,所以先对窗体制作简单的整理一下,Servlet 容器(Container)主要是管理JSP/Servlet资源的,文件撰写过程中使用的是Tomcat  5.5.4。

JSP

JSP是基于Java语法,只要您了解Java的基本语法,就可以只使用JSP来撰写动态网页。

基础入门

先来看看如何撰写基本的JSP动态网页,以及JSP背后运作的机制,JSP事实上也是转译为 Servlet,骨子里还是个Servlet程序。

隐含物件(Implicit Object)

JSP转译之后就是Servlet,各个隐含对象都对应于Servlet API中的某个对象,如果您对隐含对象的功能有什么不了解的,查询Servlet API文件中该对象的说明就可以了解了。

Action 元素

JSP中有数种类型的Action元素,有一些使用于JavaBean,有一些使用于自订标签等等,这边先介绍几个常用的元素。

JSP 与 Model 1 架构

    在HTML标签间混合程序代码会使得程序逻辑与网页逻辑都难以维护,Model 1是将程序代码与网页逻辑分离的一种架构,JSP中有一些技术用以支持这种架构的实现。

JavaBean

JavaBean是一个纯綷的Java类别,它遵守一些规则与命名方式,它是一个公开(public)的类别,具有公开的setter与getter方法,在JSP中可以使用它将程序的逻辑处理与呈现部份分离。

Expression Language

Expression Language在JSP 2.0中纳入了JSP的标准,它定义了变量存取、运算、隐含对象、函式等内容,配合JavaBean或其它标签库,可以实现较好的逻辑与视图分离之目的。

标签库(Tag Library)

您可以将一些网页格式处理或是限定存取之类的需求,使用标签库来处理,程序逻辑撰写在标签处理类别(Tag Handler Class)中,并定义好标签库定义档案(.tld),而在JSP网页中使用自订标签来撰写网页。

Tag File

Tag File是从JSP 2.0开始新增的功能,主要的目的是让撰写JSP网页的网页设计人员即使在不懂Java语法的情况下,也可以使用JSP语法来自订卷标。

Servlet

    JSP网页最后是转译为Servlet,从Java程序设计人员的角度来看,Servlet其实就是一个 Java类别,它实作Servlet接口,通常我们会继承实作该界面的GenericServlet类别或HttpServlet类别。

基础入门

如果您了解JSP中的隐含对象之意义,再来了解Servlet中的对应对象,则学习Servlet就不是件难事。

Filter

使用Filter,您可以先对request作一些前置处理,例如进行身份验证、过滤不安全的请求、监视统计请求的来源与出处等等,或是对response进行后置处理,例如对输出先进行压缩、对XML的呈现进行转换等等。

JSP/Servlet 与 Model 2 架构

    这边藉由实作一个简单的 Model 2 Web 应用程序,了解如何以JSP/Servlet 技术实现一个 Model 2 架构的简单应用程序。

附录