为这么突然会想到获取context呢,主要是最近在做一个需求实现时,需要在服务器端弄一个定时器去定时检测客户端是否正常工作。客户端会定时发请求告诉服务器端“我很正常” 如果在规定的时间内不能收到客户端的请求,那么就得修改客户端在数据库中相应的状态,需要的两个东西就是客户端id和最近一次请求时间,起将其以map存放到context中(伴随服务器终身)
但是我的定时器是使用的是spring的
<!--定时器部分--> <task:executor id="executor" pool-size="5"/><task:scheduler id="scheduler" pool-size="10"/><task:annotation-driven executor="executor" scheduler="scheduler"/> 往定时器中传递参数比较麻烦,索性就交给context了
通常在spring项目中获取servletContext有以下方式 1、request获取servletContext
ServletContext servletContext = request.getServletContext();
- 1
2、使用ContextLoader
ServletContext servletContext = ContextLoader.getCurrentWebApplicationContext().getServletContext();
- 1
3、使用spring注入自动注入
@Autowired
private ServletContext servletContext;
前两种就不说了,关键是第三种,这个context对象会在spring容器启动时就会被示例化,第二种就可能出现空指针