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

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