天天看点

初识 JSP---(servlet / ServletConfig接口 / ServletContext接口)servlet简介Servlet介绍Servlet生命周期ServletConfig接口的方法:ServletContext接口的功能:

servlet简介

Java Servlet是和平台无关的服务器端的组件,它运行在servlet容器中。Servlet容器负责servlet和客户的通信以及调用servlet的方法,servlet和客户的通信采用的是“请求/响应”的模式。

servlet可完成如下功能:

1.创建并返回客户请求的动态HTML页面

2.创建可嵌入现有HTML页面的部分HTML页面(HTML片段)

3.去其他服务器资源交互(如数据库或基于java的应用程序)进行通信

Servlet介绍

–Java Servlet(server applet)

–Java Servlet继承结构

Servlet接口(javax.servlet.Servlet)

GenericServlet(javax.servlet.GenericServlet)

HttpServlet(javax.servlet.http.HttpServlet)

创建一个Servlet

–继承HttpServlet

–重写service(doGet、doPost)方法

–在web.xml中配置Servlet

–部署和执行

Servlet的API

Servlet接口(javax.servlet)

说明:javax.servlet的基础接口,定义了Servlet必须实现的方法。

GenericServlet类(javax.servlet)

说明:实现Servlet的接口,属于通用的,不依赖与HTTP协议的servlet(实际应用不算多)

HttpServlet类(javax.servlet.http)

说明:继承GenericServlet类,是在其基础上扩展了HTTP协议的servlet

Servlet生命周期

1.加载和实例化:(构造方法)只有第一次请求servlet时。创建servlet的实例

2.初始化:(init方法)只被调用一次,在创建好实例后立即调用初始化方法

3.服务的方法:每次请求都会调用service的方法,实际用于响应请求的

4.销毁方法:只调用一次,在当service所在的web应用项目被卸载前调用,用于释放资源

在什么时候创建,加载,初始化?

<load-on-startup>0</load-on-startup>

大于0时,tomcat启动时就被加载了,小于0时,访问时才被加载,默认的是小于0

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

第一步:servlet引擎检查是否已经装载并创建了该servlet的实例对象,如果是则直接执行第四步,否则执行第二步

第二步:装载并创建servlet的实例对象,调用该servlet的构造器

第三步:调用servlet实例对象的init的方法

第四步:创建一个用于封装请求ServletRequest对象和一个代表响应的消息的ServletResponse对象,然后调用Servlet的service方法并请求和响应对象作为参数传递进去

第五步:web应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destory的方法

ServletConfig接口的方法:

getInitParameter()方法:通过名字获取值

getInitParameterNames()方法:获取所有的名字,返回的是枚举类型,可以迭代

例:

结果:

getServletName方法:获取servlet的名称

getServletContext方法:获取ServletContext的接口的初始化参数

ServletContext对象:

Servlet引擎为每个web应用程序都创建了一个对应的ServletContext对象,ServletContext对象包含在ServletConfig对象中,调用ServletConfig.getServletContext方法可以返回ServletContext对象引用。

由于一个web应用程序中的所有的Servlet都共享一个ServletContext对象,所以ServletContext对象都被称之为Application对象(web应用对象)

ServletContext接口的功能:

1.获取web应用程序的上下文参数

(1)配置web.xml,不需要配置在<servlet></servlet>标签中,使用<context-param></context-param>标签

(2)通过ServletConfig对象获取ServletContext对象

(3)通过servletContext按照名字获取值(servletContext.getInitParameter)

(4)通过servletContext获取所有的名字(servletContext.getInitParameterNames)

2.记录日志

3.Application域范围的属性(application作用域)

4.访问资源文件

获取当前web应用的某一个文件对应的输入流

5.获取虚拟路径所映射的本地路径

方法:servletContext.getRealPath("/Test");

例子:

6.web应用程序对象之间的访问

7.ServletContext的其他方法

获得当前名称:servletContext.getContextPath();-