用于毕业设计外文翻译
Servlet 本身是要编译成字节码的Java类,就像其他Java对象一样。Servlet访问HTTP 特定服务的API,但它仍然是一个运行于程序之中的Java 对象,并可以利用所有的Java 资产。为了使常规web servers能访问servlet,servlet被安插在一个容器之中。Servlet容器连接到Web服务器。每servlet 都可以声明它可以处理何种样式的URL。当符合所注册样式的请求到达,web server将请求传递给容器,容器则调用响应的servlet。但和CGI 程序不同,并不是针对每个请求都要创建一个新的servlet。一旦容器实例化了一个servlet,它就仅为每个新的请求创建一个新的线程。Java线程可比使用CGI程序的服务器处理开销小多了。
一旦servlet被创建,使用它处理额外的请求仅带来很小的额外开销。Servlet开发人员可以使用init() 方法保持对昂贵资源的引用,比如到数据库或者EJB Home接口的连接,以便它们可以在不同的请求之间进行共享。获得这些资源要耗费数秒时间,这比大多数冲浪者愿意等的时间要长些。
Servlet的另一个好处是,它是多线程的,servlet开发人员必须特别注意确保它们的servlet是线程安全的。学习servlet 编程,我们推荐Java Servlets by Example, 作者Alan R. Williamson[Williamson]。
JavaServer Pages:
虽然servlets对CGI程序来说前进了一大步,但它也不是万能灵药。为了产生响应,开发人员不得不使用大量的println语句来生成HTML。比如这样的代码:
out.println("<P>One line of HTML.</P>");
out.println("<P>Another line of HTML.</P>");
在产生HTTP响应的Servlet 中是很普遍的。也有一些库有助于你产生HTML。随着应用越来越复杂,Java开发人员将不再扮演HTML页面设计的角色。同时,大多数项目经理更喜欢将团队分成不同的小组。 它们喜欢HTML设计人员处理表现层的工作,而Java工程师则专注于业务逻辑。单独使用servlet的做法鼓励混合标记和业务逻辑,很难区分团队人员的专业工作。
为解决这个问题,Sun提出了一个将脚本和模板技术结合到一个组件中的服务器页面技术(JavaServer Pages)。为创建JSP页面, 开发者按创建HTML页面类似的方式创建页面,使用相同的HTML 语法。为将动态内容引入页面,开发人员可以将脚本元素置入页面之中。脚本元素是一些标记,封装了可以被JSP识别的逻辑。你可以在JSP页面中很容易的识别出脚本元素,他们被封装在一对<% 和 %>标记