Servlet是一种用Java写的Web组件,它的目的是产生动态内容。它位于应用服务器端,由Web容器管理它的执行和生命周期。在此所讨论的应用服务器通常指的是Kingdee Apusic应用服务器。
Servlet使用HTTP Request-Response协议间接地通过容器与Web用户进行交互。在Servlet的体系结构中,Web服务器向应用服务器传递请求。应用服务器使用JVM(Java Virtual Machine,Java虚拟机)执行Servlet,在并发处理多个请求时启动多个独立的轻量级线程就可以满足,对于Servlet的加载与初始化只有一次,大大降低了系统开销。当请求结束时,应用服务器在内存中保留Servlet,等待新的请求。说明了一个Servlet生命周期
实例化:默认构造函数-->初始化:init()-->服务调用:service()-->销毁:destroy()
图表 1‑1
init()
public void init(ServletConfig config) throws ServletException
每一次Servlet时,会调用init方法,它仅被调用一次,以通知servlet其已经被装入服务中,可以重写此方法,为其提供只需执行一次的初始化代码,比如初始化某些值、装入数据库驱动程序等。
service()
public abstract void service(ServletRequest servletrequest,
ServletResponse servletresponse) throws ServletException,
IOException;
每次调用servlet时,servlet容器就会调用相应servlet的service方法。对于每个HTTP请求,servlet容器都会创建一个请求对象和一个响应对象,请求对象实现了javax.servlet.ServletRequest或javax.servlet.http.HttpServletRequest接口,而响应对象实现了javax.servlet.ServletResponse或javax.servlet.http.HttpServletResponser接口,并将它们传给service方法。请求对象封装了从HTTP请求里解析出来的,并且对servlet有用的信息,比如请求的URL、请求的HEAD、cookie及请求的参数等。当请求完毕以后,servlet使用响应对象将响应发送回Web客户端。
destory
public void destroy()
在删除一个servlet实例前,servlet容器会调用其destroy方法,这种情况一般发生在servlet容器需要被关闭或释放内存时。可以使用此方法来清除占用的资源(如内存、文件句柄及线程等)或确保某些持久化数据被保存。
为了运行servlet应用,需要一个servlet容器。Apusic是可用的容器之一,本书的代码都将在Apusic 5.0测试通过,但是也可以在其他支持Servlet 2.5规范的servlet容器来运行。
Servlet需要按照J2EE规范定义的目录结构打包后才可以部署到应用服务器上运行。打包有两种格式:EAR和WAR,EAR是标准的J2EE应用格式,WAR是一个Web打包文件。无论哪种打包方式,都会包括META-INF目录,是应用程序配置文件所在目录,具体说明可以参考《Apusic 5.0安装参考手册》;还会有WEB-INF目录,是Web应用配置文件所在目录。
在WEB-INF目录下包括两个子目录classes和lib,classes目录包括Web应用中用到的所有Java类(Servlet类也属于Java类一种),目录结构反映了Java包的名称;lib目录包括了Web应用中所引用的所有库文件。
所有与网页展现相关的文件(JSP文件是动态的网页展现)都直接存放在WAR根目录下。为了更好地组织这些文件,可以在WAR中直接建立子目录。例如:所有的JSP文件都放在jsp子目录中,所有的图片文件都放在images子目录中。除了WEB-INF目录以外,Web客户端可以直接访问WAR中的所有文件。
一般情况下,一个Web应用会有一个部署描述符,文件名称是web.xml的XML文件,其中包含了应用的完整描述,此文件也放在WEB-INF目录下。
web.xml(部署描述符)是XML文件,可以使用文本编辑器来编辑它。符合servlet 2.5规范的应用部署描述符格式如下:
<?xml version="1.0" encoding="UTF-8"?><o:p></o:p>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"><o:p></o:p>
</web-app><o:p></o:p>
这个XML头指明了该部署描述符的XML模式(XML Schema Description)可以从http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd下载。如果打开这个文件,可以了解到里面有许多元素,但是这些元素都是可选的,不强制使用任何一个。<o:p></o:p>
提示 1‑1所有的元素都插入到<web-app>与</web-app>之间。<o:p></o:p>
定义Servlet<o:p></o:p>
在Web浏览器访问servlet之前,需要先在web.xml里将其映射到一个路径。例如: 程序清单 1‑1将一个叫做MyServlet的servlet文件映射到/MyURL路径上。<o:p></o:p>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>ch01.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyURL</url-pattern>
</servlet-mapping>
程序清单 1‑1 web.xml中的servlet映射<o:p></o:p>
这样用户就可以通过http://localhost:6888/appName/MyURL来访问该servlet。
提示 1‑2修改了web.xml后,需要重新启动应用才能生效。<o:p></o:p>
定义Context<o:p></o:p>
在web.xml中还可以定义初始化用的上下文参数,这些参数可以应用于所有的servlet/JSP页面中,从而避免将这些信息硬编码在servlet的代码里。例如:程序清单 1‑2将userName/zhuyuanxiang和password/apusic进行了注入。<o:p></o:p>
<context-param>
<param-name>userName</param-name>
<param-value>zhuyuanxiang</param-value>
</context-param>
<context-param>
<param-name>password</param-name>
<param-value>apusic</param-value>
</context-param><o:p></o:p>
程序清单 1‑2 web.xml中context的定义<o:p></o:p>
为了获取web.xml中定义的上下文参数,首先需要获得实现ServletContext接口对象,然后再调用接口的两个方法:<o:p></o:p>
l getInitParametersName()。不需要传入参数,返回包含所有context参数名的java.util.Enumeration。<o:p></o:p>
l getInitParameter()。需要传入一个String类型参数,参数是上下文名字,返回包含上下文定义的值。<o:p></o:p>
<o:p> </o:p>
分享到:
相关推荐
JSF(Java Server Faces)技术为开发基于网络用户界面的Java开发者提供了标准的编程接口API以及标签库。就像Struts框架一样,JSF定义了一套JSF标签 JSF的全称 1、Joint Strike Fighter (JSF) 2、Java Server ...
### Manning-JSF Java Server Faces in Action (2005) #### 标题解析与扩展知识点 **标题**:“Manning-JSF Java Server Faces in Action (2005)”明确指出本书是关于Java Server Faces(JSF)技术的一本指南书籍...
### JavaServer Faces (JSF) 入门学习资料解析 #### JSF简介 JavaServer Faces (简称JSF),是Sun Microsystems公司(现为Oracle公司的一部分)于2004年3月发布的一种用于构建企业级Java Web应用的标准框架。JSF的...
附件中是本人做好的例子和JSF需要的jar包 博文链接:https://di201yao.iteye.com/blog/165029
《JavaServer Faces 2.0完全参考手册》针对javaserver faces(jsf)2.0中的变化进行了全面的修订与更新,涵盖了javeee的官方标准web开发架构的每个方面。在这本权威著作中,sun microsystems公司中的jsf合作规范领导者...
通过《JavaServer Faces (JSF) in Action》这本书,读者可以深入理解JSF的工作原理,学习如何设计和实现高效的JSF应用,以及如何解决实际开发中遇到的问题。无论你是初学者还是经验丰富的开发者,都能从中受益。
《JavaServer Faces 2.0完全参考手册》针对javaserver faces(jsf)2.0中的变化进行了全面的修订与更新,涵盖了javeee的官方标准web开发架构的每个方面。在这本权威著作中,sun microsystems公司中的jsf合作规范领导者...
### JavaServer Faces (JSF) 完全参考手册知识点概览 #### 1. JavaServer Faces (JSF) 框架简介 - **JSF 定义**:JavaServer Faces(JSF)是一种用于构建基于Java的企业级Web应用程序的标准框架。它提供了组件驱动...
这本书《JavaServer Faces 2.0完全参考手册》应该是全面涵盖了JSF 2.0的核心概念、组件、事件处理、数据绑定以及与其他Java EE技术的集成。 1. **JSF架构**:JSF的核心是一个MVC(模型-视图-控制器)框架,其中视图...
### JavaServer Faces (JSF) 技术架构与应用 #### 一、JavaServer Faces (JSF) 简介 JavaServer Faces (简称 JSF) 是一种基于Java的Web应用开发框架,专为构建用户界面(UI)而设计。它提供了一套标准化的方法来...
JavaServer Faces (JSF, or simply “Faces”) makes it easy to develop web applications by bringing support for rich, powerful user interface components (such as text boxes, list boxes, tabbed panes, ...
JavaServer Faces(JSF)是Java平台上的一种用于构建用户界面的服务器端Web应用程序框架,它专注于简化开发和管理用户交互的复杂性。JSF 1.2是该框架的一个早期版本,发布于2006年,是JSF规范的第二版。在本文中,...
JavaServer Faces (JSF) 是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。它提供了一种以组件为中心的用户界面(UI)构建方法,从而简化了Java服务器端应用程序的开发。...
JavaServer Faces(JSF)是Java平台上的一种用于构建用户界面的服务器端框架,它简化了Web应用程序的开发,尤其在处理表单提交、页面导航和组件管理等方面。本资源为《JavaServer Faces核心编程(第3版)》一书的源...
《JSF核心编程 第二版》是一本深入探讨JavaServer Faces (JSF)技术的专业书籍,作者通过详尽的讲解和实例,为读者揭示了JSF框架的核心概念和实际应用。这本书不仅涵盖了JSF的基本原理,还包含了最新的JSF 2.0版本的...
JavaServer Faces(JSF)是Java平台上用于构建Web应用程序的官方标准框架,它提供了一种组件化、事件驱动的方式来创建用户界面。《JavaServer Faces核心编程(第3版)》是一本深入探讨JSF技术的专业书籍,源码的提供...