JavaWeb学习(4)

Posted by Csming on 2016-10-15

Servlet容器

  • 运行Servlet,JSP,Filter等的软件环境
  • 可以来创建Servlet,并调用Servlet的相关生命周期方法
  • JSP,Filter,Listener,Tag…都运行在Servlet,并且相关生命周期方法由Servlet容器调用

Servlet生命周期方法

  • **构造器:**第一次请求Servlet时,创建Servlet的实例,调用构造器,Servlet是单例的
  • **init方法:**只在被创建好实例后,立即被调用一次,用于初始化当前Servlet
  • **service方法:**被多次调用,每次请求都会调用Servlet方法,用于相应请求
  • **destroy方法:**只被调用一次,在当前Servlet所在的Web应用被卸载前调用,用于释放当前Servlet所占用的资源

load-on-startup参数

	<load-on-startup></load-on-startup>
  • 指定被创建的时期,eg:
    1
  • 配置在servlet节点中

    helloServlet
    com.csming.test.HelloServlet
    1
  • load-on-startup指定Servlet被创建的时机,若为负数则在第一次请求时被创建,若为0或正数,则在当前web应用被Servlet容器加载时创建实例。数值越小越早被创建

Servlet的注册与运行

  • Servlet程序必须通过Servlet容器来启动运行,并且储存目录有特殊要求,通常需要存储在<WEB应用程序目录>\WEB-INF\classes\目录中
  • Servlet程序必须在WEB应用程序的web.xml文件中进行注册和映射其访问路径,才可以被Servlet引擎加载和被外界访问
  • 一个元素用于注册一个Servlet,它包含两个主要的子元素:,分别用于设置Servlet的注册名称和Servlet的完整类名
  • 一个元素用于映射一个已注册的Servlet的一个对外访问路径,它包含两个子元素: ,分别用于指定Servlet注册名称和Servlet的对外访问路径
  • 关于servlet-mapping
  • 同一个Servlet可以被映射到多个URL上,即多个元素的子元素的设置值可以是同一个Servlet的注册名
  • 在Servlet映射的URL中也可以使用通配符,但是只能有两种固定的格式:一种格式是“.拓展名”,另一种是以正斜杠(/)开头并以"/*"结尾
  • Eg:

    secondServlet
    /*
  • 或者:

    secondServlet
    *.html
  • 不合法实例:

    secondServlet
    /*.html