servlet学习

12/12/2015来源:Java教程人气:506

一.servlet简介

servlet(server applet)是sun公司提供的一门用于开发动态web资源的技术

sun公司在其API中提供了servlet接口,如果用户想要开发web资源,需要:

1.编写一个java类,实现servlet接口

2.把开发好的java类部署到web服务器中

二.servlet的运行过程

servlet是由web服务器调用,web服务器收到客户端的servlet访问请求后:

1.web服务器首先检查是否已经装载并创建了该servlet的实例对象

  是----执行第4步

      不是--执行第2步

2.装载并创建该servlet的一个实例对象

3.调用servlet实例对象的init()方法

4.创建一个用于封装http请求消息的HttpServletRequest对象和封装http响应消息的HttpServletResponse对象,然后调用servlet的service()方法,并将请求和响应作为参数传递进去

5.web应用程序被停止或重新启动之前,servlet引擎将卸载Servlet,并在卸载之前Servlet的destory()方法

与生命周期有关的方法

可见Servlet的方法是与生命周期有关的方法,那么来看一下它的与生命周期有关的方法

·public void init(ServletConfig config)throws ServletException

多个客户请求Servlet时,引擎会为每个客户启动一个线程,所以Servlet类的成员变量被所有的线程共享(Servlet是单实例多线程)

·public void service(HttpServletRequest request ,HttpServletResponse response)

                            throw ServletException,IOException

处理用户的请求和响应,每个用户的请求Servlet都会调用该方法,但是调用的时候在不同的线程中,所以互不干扰

·public destory()

当Servlet引擎终止服务时,比如关闭服务器,destory就会被执行,消灭servlet对象

三.Servlet接口的实现类

Servlet接口Sun公司定义了两个默认实现类GenericServlet(空实现)和HttpServlet(能够处理htpp请求的servlet)

在开发中我们只需要继承HttpServlet类,再其service()方法中进行请求处理和数据相应

四.访问开发好的Servlet资源

由于客户端(浏览器)是通过URL地址访问web服务器中的资源,所以Servlet程序想要被访问就必须把Servlet映射到一个URL地址上

·在web.xml中配置

  <servlet>元素用来注册Servlet,它包含有两个主要的子元素

    <servlet-name>注册名称

    <servlet-class>完整类名

    <load-on-startup>创建web应用程序的时候装载该Servlet

    <init-param>配置属性

  <servlet>

    <servlet-name>Servlet</servlet-name>

    <servlet-class>cctv.session.Servlet</servlet-class>
  </servlet>

  <servlet-mapping>元素用来映射一个已注册的Servlet的一个对外访问路径

    <servlet-name>注册名称

    <url-pattern>对外访问路径

  <servlet-mapping>

    <servlet-name>Servlet</servlet-name>
    <url-pattern>/servlet/servlet</url-pattern>
  </servlet-mapping>

五.Servlet的特点

1.针对客户端的多次Servlet请求,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至web容器退出,servlet实例对象才会销毁.

2.在Servlet生命周期中init()方法只会调用一次,对于service()方法,每次请求都会去调用该方法并且实例请求响应对象

六.线程安全(等待更新)

实现SingleThreadModel接口

七.Servlet的一些对象

ServletConfig对象

Config翻译过来是配置的意思,可想而知这个对象是用来配置文件的,那么它是如何来配置文件的?

在web.xml文件中利用<init-param>为servlet配置一些初始化参数

储存以键值对的形式进行

<init-param>
  <param-name>url</param-name>
  <param-value>jdbc:MySQL://localhost:3306</param-value>
</init-param>

 

通过该对象的getInitParameter(name)方法获取name的value,或者通过getInitParameterNames()方法获取枚举器然后进行迭代获取所有的name与value

ServletContext对象

Context翻译过来是上下文的意思,可想而知这个对象是用来代表这个web应用的