Servlet

什么是Servlet

屏幕快照 2019-04-21 下午8.22.08.png

服务器会把接受的请求交给Servlet,每个Servlet必须实现javax.servlet.Servlet接口

  • 接受请求数据
  • 处理请求
  • 完成响应

实现Servlet的方式

  • 三种
    实现javax.servlet.Servlet接口
    继承javax.servlet.GennericServlet类
    继承javax.servlet.http.HttpServlet类
    Servlet中的方法不由我们来调用,是由tomcat来调用的,并且Servlet中的对象不由我们来创建,也是由tomcat来创建


    浏览器访问Servlet
package Servlet;

import javax.servlet.*;
import javax.servlet.Servlet;
import java.io.IOException;

public class AServlet implements Servlet {
    //实现生命周期方法
    //他会在Servlet对象创建之后马上执行,并且只执行一次(出生之后)
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("init.....");
    }

    //获取Servlet的配置信息
    @Override
    public ServletConfig getServletConfig() {
        System.out.println("getServletConfig...");
        return null;
    }

    //实现生命周期方法
    //这个方法会被调用多次,每次处理请求都是在调用这个方法
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("service....");
    }

    //获取Servlet的信息
    @Override
    public String getServletInfo() {
        System.out.println("getServletInfo...");
        return null;
    }

    //实现生命周期方法
    //它会在Servlet销毁之前调用一次,并且只调用一次
    @Override
    public void destroy() {
        System.out.println("destroy...");
    }
}
  • 生命周期方法:
    void init(ServletConfig):出生之后,(一次)
    void service(ServletRequest request,ServletResponse response):没你处理请求时都会调用
    void destroy():临死之前,(一次)//销毁
  • 特性:
    单例,一个类只有一个对象,可能存在多个Servlet类
    线程不安全的,所以效率很高

Servlet是自己写,但对象是服务器来创建,并且服务器来调用相应的方法

  • servletConfig是什么?
    一个ServletConfig对象,对应一段web.xml中的Servlet的配置信息,可以用来获得servlet的配置信息

String getServletName()获得的是里面的内容
Servlet Context getServletContext():获取Servlet上下文对象
String getInitParameter(String name):通过名称获取指定初始化参数的值
Enumeration getInitParamenterNames():获取所有初始化参数的名称



    
        Servlet
        Servlet.AServlet
        
            p1
            v1
        
        
            p2
            v2
        
    
    
        Servlet
        /A
    

package Servlet;

import javax.servlet.*;
import javax.servlet.Servlet;
import java.io.IOException;
import java.util.Enumeration;


public class AServlet implements Servlet {
    //实现生命周期方法
    //他会在Servlet对象创建之后马上执行,并且只执行一次(出生之后)
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("init.....");
        //获取初始化参数
        System.out.println(servletConfig.getInitParameter("p1"));
        System.out.println(servletConfig.getInitParameter("p2"));

        //获取所有初始化参数的名称
        Enumeration a = servletConfig.getInitParameterNames();
        while(a.hasMoreElements()){
            System.out.println(a.nextElement());
        }
    }

    //获取Servlet的配置信息
    @Override
    public ServletConfig getServletConfig() {
        System.out.println("getServletConfig...");
        return null;
    }

    //实现生命周期方法
    //这个方法会被调用多次,每次处理请求都是在调用这个方法
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("service....");
    }

    //获取Servlet的信息
    @Override
    public String getServletInfo() {
        System.out.println("getServletInfo...");
        return null;
    }

    //实现生命周期方法
    //它会在Servlet销毁之前调用一次,并且只调用一次
    @Override
    public void destroy() {
        System.out.println("destroy...");
    }
}

你可能感兴趣的:(Servlet)