在Java EE的蓝图中,JSP/Servlet是属于Web层技术,JSP与Servlet是一体的两面,您可以使用单独一项技术来解决动态网页呈现的需求,但最好的 方式是取两者的长处,JSP是网页设计人员导向的,而Servlet是程序设计人员导向的,厘清它们之间的职责可以让两个不同专长的团队彼此合作,并降低 相互间的牵制作用。
动态网页的请求发送大都是透过窗体,所以先对窗体制作简单的整理一下,Servlet 容器(Container)主要是管理JSP/Servlet资源的,文件撰写过程中使用的是Tomcat 5.5.4。
JSP是基于Java语法,只要您了解Java的基本语法,就可以只使用JSP来撰写动态网页。
先来看看如何撰写基本的JSP动态网页,以及JSP背后运作的机制,JSP事实上也是转译为 Servlet,骨子里还是个Servlet程序。
JSP转译之后就是Servlet,各个隐含对象都对应于Servlet API中的某个对象,如果您对隐含对象的功能有什么不了解的,查询Servlet API文件中该对象的说明就可以了解了。
JSP中有数种类型的Action元素,有一些使用于JavaBean,有一些使用于自订标签等等,这边先介绍几个常用的元素。
在HTML标签间混合程序代码会使得程序逻辑与网页逻辑都难以维护,Model 1是将程序代码与网页逻辑分离的一种架构,JSP中有一些技术用以支持这种架构的实现。
JavaBean是一个纯綷的Java类别,它遵守一些规则与命名方式,它是一个公开(public)的类别,具有公开的setter与getter方法,在JSP中可以使用它将程序的逻辑处理与呈现部份分离。
Expression Language在JSP 2.0中纳入了JSP的标准,它定义了变量存取、运算、隐含对象、函式等内容,配合JavaBean或其它标签库,可以实现较好的逻辑与视图分离之目的。
您可以将一些网页格式处理或是限定存取之类的需求,使用标签库来处理,程序逻辑撰写在标签处理类别(Tag Handler Class)中,并定义好标签库定义档案(.tld),而在JSP网页中使用自订标签来撰写网页。
Tag File是从JSP 2.0开始新增的功能,主要的目的是让撰写JSP网页的网页设计人员即使在不懂Java语法的情况下,也可以使用JSP语法来自订卷标。
JSP网页最后是转译为Servlet,从Java程序设计人员的角度来看,Servlet其实就是一个 Java类别,它实作Servlet接口,通常我们会继承实作该界面的GenericServlet类别或HttpServlet类别。
如果您了解JSP中的隐含对象之意义,再来了解Servlet中的对应对象,则学习Servlet就不是件难事。
使用Filter,您可以先对request作一些前置处理,例如进行身份验证、过滤不安全的请求、监视统计请求的来源与出处等等,或是对response进行后置处理,例如对输出先进行压缩、对XML的呈现进行转换等等。
这边藉由实作一个简单的 Model 2 Web 应用程序,了解如何以JSP/Servlet 技术实现一个 Model 2 架构的简单应用程序。