servlet生命周期

    技术2022-05-11  64

    Servlet的生命周期分为四个阶段1,创建Servlet对象,通过服务器反射机制创建Servlet对象,第一次请求时才会创建。(默认)2,调用Servlet对象的init()方法,初始化Servlet的信息,init()方法只会在创建后被调用一次3,响应请求,调用service()或者是doGet(),doPost()方法来处理请求,这些方法是运行的在多线程状态下的。4,在长时间没有被调用或者是服务器关闭时,会调用destroy()方法来销毁Servlet对象。

    可以通过web.xml文件可以配置Servlet对象的创建时间,<load-on-startup>数字</load-on-startup>,表示服务器启动时创建,并依照数字大小按顺序创建,只用重要的Servlet才会是用这个设置。

    可以通过<init-param>标签来配置初始化参数,可以用ServletConfig对象的getInitParameter(String name)方法来得到参数。 <init-param><param-name>...</param-name><param-value>...</param-value></init-param>

    多线程下所操作的变量,如果操作的是一个变量,且兼有读写操作,就要考虑加上同步,但同步不能乱加,否则会造成死锁问题。

    init()和destroy()方法都是运行在单线程下的。

    GenericServlet类中的有参和无参的init方法。  public void init(ServletConfig config)throws ServletException    {        this.config = config;        init();    }

        public void init()throws ServletException    { .....;//覆盖了的无参的init()方法,会在Servlet创建时调用有参的init方法时  也会被调用。    } HttpServlet类中参数不同的service方法的调用关系。public void service(HttpServletRequest req,HttpServletResponse res){ .......; .......;}public void service(ServletRequest req, ServletResponse res)        throws ServletException, IOException    {        HttpServletRequest request;        HttpServletResponse response;        try        {            request = (HttpServletRequest)req;            response = (HttpServletResponse)res;        }        catch(ClassCastException e)        {            throw new ServletException("non-HTTP request or response");        }        service(request, response);    }


    最新回复(0)