servlet生命周期

 

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值