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

文章描述了一个关于Servlet在使用Spring框架时遇到的问题:Servlet的init方法仅在第一次请求时执行,导致之后的所有请求都无法更新从Spring容器中获取的数据。
在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,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值