Servlet

作者: 十六只猴子王 | 来源:发表于2019-04-23 19:06 被阅读0次

什么是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-name>里面的内容
Servlet Context getServletContext():获取Servlet上下文对象
String getInitParameter(String name):通过名称获取指定初始化参数的值
Enumeration getInitParamenterNames():获取所有初始化参数的名称

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>Servlet</servlet-name>
        <servlet-class>Servlet.AServlet</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>
    <servlet-mapping>
        <servlet-name>Servlet</servlet-name>
        <url-pattern>/A</url-pattern>
    </servlet-mapping>
</web-app>
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 笔记

    servlet servlet 声明周期 Servlet 的线程安全 Servlet 获取配置信息 Servlet...

  • Servlet

    Servlet介绍 Servlet开发步骤 创建Servlet 配置Servlet 配置Servlet中设置初始化...

  • 深入理解Servlet技术

    1. 什么是servlet servlet Servlet是javax.servlet.Servlet包中定义的一...

  • Servlet与Jsp(1)

    Servlet 实现原理Servlet接口使Servlet容器能将Servlet类载入内存,并在Servlet实例...

  • web.xml不同版本之间头信息的区别

    一、Servlet 2.3 二、Servlet 2.4 三、Servlet 2.5 四、Servlet 3.0 五...

  • Servlet入门

    Servlet简介 Servlet(Servlet Applet)是Java Servlet的简称,称为小服务程序...

  • Servlet 实例

    Servlet 实例 Servlet 是服务 HTTP 请求并实现 javax.servlet.Servlet 接...

  • Java Servlet API

    Servlet 支持的版本 Servlet 3.0 新特性详解 Servlet 3.0 新特性概述Servlet ...

  • 简单认识Servlet

    Servlet与JSP的关系 初识Servlet Servlet层级关系 顶层Servlet接口 GenericS...

  • 2019-10-14 SpringMVC与Servlet接口 S

    SpringMVC与Servlet接口 Servlet接口规范 Servlet 接口 定义servlet接口规范i...

网友评论

      本文标题:Servlet

      本文链接:https://www.haomeiwen.com/subject/lwzjgqtx.html