Servlet_生命周期详解和Servlet_3.0注解配置

Servlet_生命周期详解:

1.被创建:执行init方法,只执行一次

 Servlet什么时候被创建?

   默认情况下,第一次被访问时,Servlet被创建

   可以配置执行Servlet的创建时机

     在<servlet>标签下配置  

     1.第一次被访问时,创建

       <load-on-startup>的值为负数

     2.在服务器启动时,创建     

       <load-on-startup>的值为0或正整数

    <!-- 配置Servlet -->
    <servlet>
        <servlet-name>demo2</servlet-name>
        <servlet-class>com.example.web.servlet.ServletDemo2</servlet-class>
<!--        执行Servlet的创建时机
                1.第一次被访问时,创建
                       <load-on-startup>的值为负数
                2.在服务器启动时,创建
                       <load-on-startup>的值为0或正整数
-->
        <load-on-startup></load-on-startup>
    </servlet>

    <!-- 映射 -->
    <servlet-mapping>
        <servlet-name>demo2</servlet-name>
        <url-pattern>/demo2</url-pattern>
    </servlet-mapping>

Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的

 多个用户同时访问时,可能存在线程安全问题

   解决:尽量不要在Servlet中定义成员变量,即使定义了成员变量,也不要对修改值

2.提供服务:执行service方法,每次访问执行一次

 每次访问Servlet时,Servlet方法都会被调用一次

3.被销毁:执行destroy方法,执行一次

 Servlet被销毁是执行。服务器关闭时,Servlet被销毁

 只有服务器正常关闭时,才会执行destroy方法

 

 

 

 

 

Servlet_3.0注解配置:

好处:

 支持注解配置,可以不需要web.xml了

步骤:

 1.创建JavaEE项目,选择Servlet的版本3.0以上,可以不创建web.xml

 2.定义一个类,实现Servlet接口

 3.复写方法

 4.在类上使用@WebServlet注解,进行配置

     @WebServlet("资源路径")

@WebServlet("/demo")
public class ServletDemo3 implements Servlet {

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }


    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("Servlet3.0来了...");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

 

posted @ 2022-12-06 19:54  冰灵IT  阅读(29)  评论(0)    收藏  举报