• 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       打包及部署应用

  • 相关阅读:
    c 编译异常 switch 之a label can only be part of a statement and a declaration is not a statement
    释码大华虹膜识别
    嵌入式开发之davinci--- 8168 总的roi 编码
    cv resource
    图像增强之DDE---基于红外图像的数字图像细节增强DDE
    音频处理之去噪算法---基于pcm和g711的音频16000hz、8bit去噪声算法
    嵌入式开发之davinci--- 8148/8168/8127 中的alsa音频pcm g711 和aac 音频格式
    嵌入式开发之davinci--- 8148/8168/8127 中的音频alsa 采集
    嵌入式开发之davinci--- 8148/8168/8127 中swms、Mosaic’s、display 显示pal 模式
    目标跟踪之klt---光流跟踪法
  • 原文地址:https://www.cnblogs.com/zhuyx/p/10402016.html
Copyright © 2020-2023  润新知