美文网首页
JavaWeb学习笔记 | Servlet

JavaWeb学习笔记 | Servlet

作者: 一颗白菜_ | 来源:发表于2019-07-31 19:46 被阅读0次

    1.Servlet的简介

    (1).Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中。Servlet容器负责Servlet和客户的通信以及调用Servlet的方法,Servlet和客户的通信采用"请求/响应"的模式

    (2).Servlet容器响应客户请求的过程

    image image.gif

    2.Servlet的生命周期方法

    (1).构造器:只被调用一次,只有第一次请求Servlet时,创建Servlet的实例,调用构造器,这说明Servlet是单实例的。

    (2).init方法:只被调用一次,在创建好实例后立即被调用。用于初始化当前Servlet。

    (3).service:被多次调用,每次请求都会调用service方法。实际用于响应请求的。

    (4).destroy:只被调用一次,在当前Servlet所在的WEB应用被卸载前调用。用于释放当前Servlet所占用的资源。

    3.Servlet容器响应客户服务器的过程

    (1).Servlet引擎检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第四步,否则,执行第二步。

    (2).装载并创建该Servlet的一个实例对象:调用该Servlet的构造器。

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

    (4).创建一个用于封装请求的ServletRequest对象和一个代表响应消息的ServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递过去。

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

    4.运行第一个Servlet程序

    (1).新建一个Java类HelloServlet,用于实现Servlet,如下:

    public class HelloServlet implements Servlet{
    
        @Override
        public void destroy() {
            System.out.println("destroy....");
    
        }
    
        @Override
        public ServletConfig getServletConfig() {
            // TODO Auto-generated method stub
            System.out.println("getServletConfig");
    
            return null;
        }
    
        @Override
        public String getServletInfo() {
            // TODO Auto-generated method stub
            System.out.println("getServletInfo");
            return null;
        }
    
        @Override
        public void init(ServletConfig servletConfig) throws ServletException {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
    
        }
        public HelloServlet() {
            // TODO Auto-generated constructor stub
            System.out.println("HelloServlet constructor");
        }
    
    }
    
    

    (2).Servlet的注册和映射(配置在web.xml文件)

    (a).Servlet程序必须在WEB应用程序的web.xml文件中进行注册和映射其访问路径,才可以被Servlet引擎加载和被外界访问

    (b).一个<servlet>元素用于注册一个Servlet,它包含有两个主要的子元素<servlet-name>和<servlet-class>,分别用于设置Servlet的注册名称和Servlet的完整类名

    (c).一个<servlet-mapping>元素用于映射一个已注册的Servlet的一个对外访问路径,它包含有两个元素:<servlet-name>和<url-pattern>,分别用于指定Servlet的注册名称和Servlet的对外访问路径

        <servlet>
            <!-- Servlet注册的名字 -->
            <servlet-name>helloServlet</servlet-name>
            <!-- Servlet的全类名,指向某一个java类 -->
            <servlet-class>com.one.HelloServlet</servlet-class>
        </servlet>
    
        <servlet-mapping>
            <!-- 需要和某一个Servlet节点的Servlet-name子节点的文本节点一致-->
            <servlet-name>helloServlet</servlet-name>
            <!-- 映射具体的访问路径:/代表当前WEB应用的根目录 -->
            <url-pattern>/hello</url-pattern>
        </servlet-mapping>
    
    image.gif

    通过这样的配置后即可通过http://localhost:8080/Day_1/hello****来访问

    5.关于web.xml配置中的load-on-startup参数

    可以指定Servlet被创建的时机。

    若为负数,则在第一次请求时被创建。

    若为0或正数,则在当前WEB应用被Servlet容器加载时创建实例,如果有多个Servlet,则该数值越小,越早被创建。

        <servlet>
            <!-- Servlet注册的名字 -->
            <servlet-name>helloServlet</servlet-name>
            <!-- Servlet的全类名,指向某一个java类 -->
            <servlet-class>com.one.HelloServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet>
            <servlet-name>secondServlet</servlet-name>
            <servlet-class>com.one.SecondServlet</servlet-class>
            <load-on-startup>2</load-on-startup>
        </servlet>
        <!-- 结果为com.one.HelloServlet先被加载 -->
    
    image.gif

    相关文章

      网友评论

          本文标题:JavaWeb学习笔记 | Servlet

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