Servlet(1)

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值