Java, Only Java!

统计

留言簿(20)

积分与排名

好友空间

文档技巧

阅读排行榜

评论排行榜

JSF(JavaServer Faces)学习手册-入门篇(1.1)

 

1.1             Servlet

Servlet是一种用Java写的Web组件,它的目的是产生动态内容。它位于应用服务器端,由Web容器管理它的执行和生命周期。在此所讨论的应用服务器通常指的是Kingdee Apusic应用服务器。

1.1.1       Lifecycle Phase(生命周期)

Servlet使用HTTP Request-Response协议间接地通过容器与Web用户进行交互。在Servlet的体系结构中,Web服务器向应用服务器传递请求。应用服务器使用JVMJava Virtual MachineJava虚拟机)执行Servlet,在并发处理多个请求时启动多个独立的轻量级线程就可以满足,对于Servlet的加载与初始化只有一次,大大降低了系统开销。当请求结束时,应用服务器在内存中保留Servlet,等待新的请求。说明了一个Servlet生命周期

实例化:默认构造函数-->初始化:init()-->服务调用:service()-->销毁:destroy()

图表 11

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容器就会调用相应servletservice方法。对于每个HTTP请求,servlet容器都会创建一个请求对象和一个响应对象,请求对象实现了javax.servlet.ServletRequestjavax.servlet.http.HttpServletRequest接口,而响应对象实现了javax.servlet.ServletResponsejavax.servlet.http.HttpServletResponser接口,并将它们传给service方法。请求对象封装了从HTTP请求里解析出来的,并且对servlet有用的信息,比如请求的URL、请求的HEADcookie及请求的参数等。当请求完毕以后,servlet使用响应对象将响应发送回Web客户端。

destory

       public void destroy()

在删除一个servlet实例前,servlet容器会调用其destroy方法,这种情况一般发生在servlet容器需要被关闭或释放内存时。可以使用此方法来清除占用的资源(如内存、文件句柄及线程等)或确保某些持久化数据被保存。

1.1.2       Directory(目录结构)

为了运行servlet应用,需要一个servlet容器。Apusic是可用的容器之一,本书的代码都将在Apusic 5.0测试通过,但是也可以在其他支持Servlet 2.5规范的servlet容器来运行。

Servlet需要按照J2EE规范定义的目录结构打包后才可以部署到应用服务器上运行。打包有两种格式:EARWAREAR是标准的J2EE应用格式,WAR是一个Web打包文件。无论哪种打包方式,都会包括META-INF目录,是应用程序配置文件所在目录,具体说明可以参考《Apusic 5.0安装参考手册》;还会有WEB-INF目录,是Web应用配置文件所在目录。

WEB-INF目录下包括两个子目录classeslibclasses目录包括Web应用中用到的所有Java类(Servlet类也属于Java类一种),目录结构反映了Java包的名称;lib目录包括了Web应用中所引用的所有库文件。

所有与网页展现相关的文件(JSP文件是动态的网页展现)都直接存放在WAR根目录下。为了更好地组织这些文件,可以在WAR中直接建立子目录。例如:所有的JSP文件都放在jsp子目录中,所有的图片文件都放在images子目录中。除了WEB-INF目录以外,Web客户端可以直接访问WAR中的所有文件。

一般情况下,一个Web应用会有一个部署描述符,文件名称是web.xmlXML文件,其中包含了应用的完整描述,此文件也放在WEB-INF目录下。

1.1.3       Deploy Description(部署描述符)

web.xml(部署描述符)是XML文件,可以使用文本编辑器来编辑它。符合servlet 2.5规范的应用部署描述符格式如下:

<?xml version="1.0" encoding="UTF-8"?>

<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">

</web-app>

这个XML头指明了该部署描述符的XML模式(XML Schema Description)可以从http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd下载。如果打开这个文件,可以了解到里面有许多元素,但是这些元素都是可选的,不强制使用任何一个。

提示 11所有的元素都插入到<web-app></web-app>之间。

定义Servlet

Web浏览器访问servlet之前,需要先在web.xml里将其映射到一个路径。例如: 程序清单 11将一个叫做MyServletservlet文件映射到/MyURL路径上。

       <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>

程序清单 11  web.xml中的servlet映射

这样用户就可以通过http://localhost:6888/appName/MyURL来访问该servlet

提示 12修改了web.xml后,需要重新启动应用才能生效。

定义Context

web.xml中还可以定义初始化用的上下文参数,这些参数可以应用于所有的servletJSP页面中,从而避免将这些信息硬编码在servlet的代码里。例如:程序清单 12userName/zhuyuanxiangpassword/apusic进行了注入。

       <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>

程序清单 12  web.xmlcontext的定义

1.1.4       Context Parameter上下文参数

为了获取web.xml中定义的上下文参数,首先需要获得实现ServletContext接口对象,然后再调用接口的两个方法:

l         getInitParametersName()。不需要传入参数,返回包含所有context参数名的java.util.Enumeration

l         getInitParameter()。需要传入一个String类型参数,参数是上下文名字,返回包含上下文定义的值。

 

1.1.5       Listener侦听器

1.1.6       打包及部署应用

posted on 2007-09-11 14:04 zYx.Tom 阅读(847) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: