JSP之Servlet

认识Servlet

1、Servlet是JavaWeb三大组件之一(Servlet,Filter,Listener)

2、Servlet是用来处理客户端请求的动态资源,其认为有:获取请求数据、处理请求、完成响应

3、Servlet接口方法:void init(ServletConfig)、void service(ServletRequest,ServletResponse)、void destory()、ServletConfig getServletConfig()、String getServletInfo()

实现Servlet的方式

1、实现Servlet接口

2、继承GenericServlet类

3、继承HttpServlet类(最常使用)

Servlet生命周期

在Servlet的5个方法中有3个是生命周期方法:init(初始化)、service(服务)、destroy(销毁)

Servlet的创建

当Servlet第一次被请求(默认情况),或服务器启动时(配置web.xml)Servlet实例就会被创建。

一个Servlet类只有一个实例,Servlet是单例的。

Servlet初始化

当服务器创建Servlet实例后马上会调用Servlet中的init(ServletConfig)方法,完成Servlet的初始化,该方法之后执行一次。

Servlet处理请求

当Servlet被请求时,服务器会调用Servlet中的service(ServletRequest,ServletResponse)方法来响应请求,该方法在每次请求都会被调用。一个Servlet可以同时被多个请求所调用,它是多线程的。

Servlet的销毁

服务器通常不会销毁Servlet,只有在关闭服务器时调用Servlet中destroy()方法来销毁Servlet

ServletConfig

ServletConfig是Servlet中init()方法中的参数,服务器在调用时会传入该参数,这个对象中封装了Servlet在web.xml中的配置信息,一个ServletConfig对应一个<Servlet>,可以通过该对象得到一个Servlet的相关配置信息:

String getServletName()得到Servlet的配置名称,对应<servlet-name>

ServletContext getServletContext()  得到ServletContext对象

String getInitParameter(String name)  传入参数名称,获得初始化参数值

Enumeration getInitParameterNames() 获取所有初始化参数名称

在web.xml文件中可以配置多个初始化参数,其位置在标签<servlet></servlet>之间。如:

<servlet>
  <servlet-name>Servlet名称</servlet-name>
  <servlet-class>Servlet路径</servlet-class>
  <init-param>//第一个初始化参数
    <param-name>p1</param-name>
    <param-value>v1</param-value>
  </init-param>
  <init-param>第二个初始化参数
    <param-name>p2</param-name>
    <param-value>v2</param-value>
  </init-param>
</servlet>

ServletContext

ServletContext是三大域对象之一,它在服务器启动是创建,在服务器关闭时销毁,一个JavaWeb应用只创建一个ServletContext对象,它的功能是存储数据、读取web.xml的初始化参数、读取应用资源。

获取ServletContext

ServletContext sc = getServletContext();   ServletContext sc = getServletConfig().getServletContext();

获取数据

因为在一个JavaWeb应用中,只有一个ServletContext对象,所以在ServletContext中保存的数据可以共整个JavaWeb应用中的动态资源共享,该对象中存在Map,使用key-->value的形式存储值:

void setAttribute(String name,Object value);//存储值
Object getAttritube(String name);//取出值
void removeAttribute(String name);//移除值

还可以获取web.xml文件中的应用初始化参数(注意区别于ServletConfig中的参数参数值)
<context-param>
     <param-name>name</pararm-name>
     <param-value>value</param-value>
</context-param>
  servletContext.getInitParameter("name"),返回value
  servletContext.getInitParameterNames(),得到所有初始化参数名称,返回Enumeration<String>

下面几张图片有助于理解Servlet

技术分享技术分享技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。