天天看点

【servlet生命周期】一个愚蠢的错误

在SSI框架中需要用到一个servlet,servlet需要从spring 容器中读取几个bean。于是,我给servlet写了这么一个init方法:

public void init(){

wac = WebApplicationContextUtils

    .getRequiredWebApplicationContext(getServletContext());

req = (RequestData) wac.getBean("ReqData");

……

}

结果发现,这个servlet中每一次操作,都是针对同一个req数据进行的,而丝毫不管页面请求中包含了怎样的数据。

很郁闷,但是这个问题出得很蠢。

init方法只在一个servlet第一次被初始化时才调用一次,并且只调用这一次,而不是在每一个请求到来时都调用一次。因此,只有第一次请求这 个servlet服务的时候,页面的req信息被spring注入了;此后每一次请求,这个servlet都没有再跟spring打任何交道,当然也不会 读到正确的数据了。

郁闷,为这事儿加了一周末的班。

本文转自 斯然在天边 51CTO博客,原文链接:http://blog.51cto.com/winters1224/798960,如需转载请自行联系原作者