Servlet(1)

来源:互联网 发布:奥登nba健康数据 编辑:程序博客网 时间:2024/06/09 13:38

    • Servlet 简介
      • Servlet容器响应客户请求的过程
      • Servlet生命周期方法
      • Servlet注册和运行
      • Servlet注册细节
      • Servletconfig对象
      • ServletContext对象

Servlet本质上就是一个java类,只不过运行在Servlet容器中

Servlet 简介

  • Java Servlet 是和平台无关的服务器组件,它运行在Servlet容器中。Servlet容器负责Servlet和客户的通信以及调用Servlet方法,Servlet和客户的通信采用”请求/响应”的模式。
  • Servlet可完成一下功能
    - 创建并返回客户请求的动态HTML页面
    - 创建可嵌入到现有HTML页面中的部分HTML页面。
    - 与其他服务器资源进行通信。

Servlet容器响应客户请求的过程

 - 1.Servlet引擎检查是否已经装载并创建该Servlet实例对象,有4否2 - 2.装载并创建Servlet的一个实例对象:调用该Servlet的构造器 - 3.调用init()方法。 - 4.创建一个用于封装请求的ServletRequest对象和一个代表响应消息的ServletReponse,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。 - 5.Web程序在停止或重新启动前,Servlet引擎卸载Servlet,并在卸载之前调用Servlet的destroy()方法。

Servlet生命周期方法:

都是被Servlet容器负责调用
1.构造器:只有第一次请求servlet时,创建Serrvlet的实例,是单实例的。(如果在web.xml中配置load-on-startup值为正数,在web应用被Servlet容器加载时创建实例,数值越小越早被创建。)
2.init方法:只调用一次,创建实例后调用,初始化当前Servlet。
3.service:每次请求都会调用service方法。
4.destory:终止程序前,被调用,释放当前servlet所占用的资源。

Servlet注册和运行

  • Servlet程序必须通过Servlet容器来运行,并且存储目录有特殊要求,通常要求存储在WEB-INF/classes目录中。
  • Servlet程序必须在WEB引用程序的Web.xml文件中进行注册和映射其访问路径,才可以被Servlet引擎加载和被外界访问。
  • 一个Servlet元素用于注册一个Servlet,它包含俩个主要的子元素:servlet-name和servlet-class,分别用来设置servlet的注册名称和Servlet完整类名。
    • 一个Servlet-mapping元素用于映射一个已注册的Servlet的一个对外访问路径,它包含俩个子元素:servlet-name和url-pattern分别用于指定Servlet的注册名称和对外访问路程。

Servlet注册细节

  • 同一个Servlet可以被映射到多个URL上,即多个servlet-mapping的子元素servlet-name的设置值可以是一个Servlet的注册名。
  • 在Servlet映射的URL可以使用*通配符,但只能是俩种固定格式:一种是”.扩展名”,另外一种是以正斜杠(/)开头并以” /“结尾。
<servlet-mapping>    <servlet-name>anyna</servlet-name>    //扩展名匹配:表示可以访问以.do结尾路径    <url-pattern>*.do</url-pattern></servlet-mapping><servlet-mapping>    <servlet-name>anyna</servlet-name>    //目录匹配 表示可以访问action下任意内容    <url-pattern>/action/*</url-pattern></servlet-mapping>

Servletconfig对象

  • 先配置servlet初始化参数
web.xml<!-- 节点必须在load-on-startup前面--><init-param>    <!--参数名 -->    <param-name>jdbc</param-name>    <!--参数值 -->    <param-value>mysql</param-value></init-param>
  • 获取servlet初始化参数
    getInitParameter(String name):获取指定的参数名的初始化参数。
String name=servletConfig.getInitParameter("jdbc")

getInitParameterNames():获取参数名组成的Enumeration对象

Enumeration<String> names=servletConfig.getInitParameterNames()
  • 获取Servlet的配置名称(了解)
    getServletName()

  • getServletContext()

ServletContext对象

  • Servlet引擎为每一个Web应用程序都创建一个对应的ServletContext对象,ServletContext对象被包含在ServletConfig对象中,调用ServletConfig.getServletContext方法可以返回ServletContext对象的引用。
  • 由于一个Web应用的所有Servlet都共享一个ServletContext对象。所以Servlet对象被称之为application对象(Web应用程序对象)。
  • 功能
    -获取Web应用程序的初始化参数
    记录日志
    application域范围的属性
    访问资源文件
    获取虚拟路径所映射的本地路径
    WEB应用程序之间的访问
    ServletContext的其他方法
  • 配置当前Web应用初始化参数
<context-param>    <param-name>driver</param-name>    <param-value>com.mysql.jdbc.Driver</param-value></context-param>
  • 获取Web应用初始化参数
    getInitParameter()
ServletContext servletContext=servletConfig.getServletContext();String driver=servletContext.getInitParameter("driver");

getInitParameterNames()

Enumeration<String> names=servletContext.getInitParameterNames()
  • 获取Web应用的某一个文件的绝对路径(必须在WebContent里面)
    getRealPath
  • 获取项目路径
    getContextPath

  • 获取当前Web应用某一个文件对应输入流
    getResourceAsStream(String path)

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 澳洲留学挂科签证续签怎么办 澳洲旅游签证被拒了怎么办 学校六级不让刷分怎么办 英国留学生怎么办申根签证 挂科太多拿不到学位证怎么办 ucl语言班没过怎么办 西澳大学工程挂科怎么办 澳洲语言班没过怎么办2018 杨浦区对口公立小学太差怎么办 公立小学太差了怎么办 澳大利亚出国留学怎么办-语言课程 学校不给释放信怎么办 重修费交不起钱怎么办 不想用家里的钱怎么办 三本学费太贵怎么办 从日本往中国汇款怎么办 学费钱大一没交怎么办 初中孩子和同学相处不好怎么办 使用假护照出国被发现怎么办 酒店忘记退房了怎么办 语言课申请不上怎么办 学会计的应届生想转行怎么办 上班熬不下去了怎么办 墨大选修挂科怎么办 日本签证年收入没有10w怎么办 做生意的办房贷没有薪资流水怎么办 澳洲医保卡丢了怎么办 澳洲爱他美上火怎么办 学信网学籍在籍没交学费怎么办 宝宝从床上摔下来怎么办 狗没打针被咬了怎么办 狗咬了没破皮没出血怎么办 被宠物狗咬了出血了怎么办 让狗咬了下红了怎么办 狗牙齿碰到红了怎么办 加拿大学生签背景调查了怎么办 gpa不到3该怎么办英国 内地学生赴港签证怎么办 学生去日本旅游签证怎么办 澳洲未婚妻签需要单身证明怎么办 高院收到申诉材料怎么办?