最近做项目,用到了一个比较不熟悉的东西,但我自己又觉得很有用。所以记录下吧……
1.ServletContext 的使用
ServletContext对象是在Web应用程序装载时初始化的,它的生命周期是随着服务器启动而开始,服务器关闭而结束。即只要你的web应用程序处于启动状态,它就是一直存活的。而当你关闭web应用程序时,它也会被回收。
ServletContext对象之setAttribute和getAttribute的经典用法:
ServletContext和HttpServletRequest, HttpSession一样,可以作为1个map结构而使用。区别在于他们之间的作用范围和生命周期不同。
当你希望程序在某个类中,只执行1次,而接下来就不再执行。在web环境中,可能多次调用的类往往是action或者定时任务调度类。当我们希望action或定时任务调度类无论被调用多少次,某段代码只执行1次时,可以用ServletContext来标记。如有一个定时任务调度类TestTrigger(定时任务的配置略):
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext(); ServletContext servletContext = webApplicationContext.getServletContext(); String count = (String) servletContext.getAttribute("count"); if (StringUtils.equals("1", count)){ // 测试用 System.out.println(sdf.format(new Date()) + ": TestTrigger非第1次执行。。"); }else{ servletContext.setAttribute("count", "1"); System.out.println(sdf.format(new Date()) + ": TestTrigger第一次执行。。。"); }又有一个Action:
@RequestMapping("/test/context.json") @ResponseBody public void test() { SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext(); ServletContext servletContext = webApplicationContext.getServletContext(); String count = (String) servletContext.getAttribute("count"); if (StringUtils.equals("1",count)){ // 测试用 System.out.println(sdf.format(new Date()) + ": TestAction非第1次执行。。"); }else{ servletContext.setAttribute("count", "1"); System.out.println(sdf.format(new Date()) + ": TestAction第一次执行。。。"); } }启动web项目会发现,如果【先】在浏览器输入地址:http://localhost:8080/项目名/test/context.json 而定时任务调度类TestTrigger【后】被触发,会发现在控制台输出以下结果:
相关推荐
这是servlet中ServletContext的应用实例,主要就是添加属性和读取属性。
ServletContext与ServletConfig关系
ServletContext代码,开发工具 Myeclipse
对servletContext的学习,并使用实例进行了实战。完成了一个登录和统计登录人数的功能。
ServletContext读取web应用中的资源文件
Ssh获取ServletContext 只需要更改struts-config action中的type就可以了ru :type="com.uo.spring.SpringDelegatingActionProxy" 大家有什么疑问可以直接去我的blog查看...《[正解]Ssh获取ServletContext》
quartz servletcontext quartz servletcontext配置资料quartz servletcontext配置资料
超全面javaweb教程28天第9天_14_获取ServletContext对象
注意:每个servlet有一个ServletConfig,...如果修改XML来改变一个初始化参数的值,只有当Web应用重新部署时Web应用其他部分才会看到,因为servlet只会初始化一次,在初始化时会为它提供ServletConfig和ServletContext。
NULL 博文链接:https://onway417.iteye.com/blog/2194540
当服务器停掉后,重新启动。这个网页计数器又要重新开始计数。这显然不符合逻辑。故需要想一个办法,即使在服务器被停掉后,网页计数器也能正常计数。(使用了io流技术)
很清楚的讲解了ServletContext和ServletConfig,不光有理论上的讲解,还有例子。
ServletContext官方叫servlet上下文。服务器会为每一个工程创建一个对象,这个对象就是ServletContext对象。这个对象全局唯一,而且工程内部的所有servlet都共享这个对象。所以叫全局应用程序共享对象。
博客地址:...存放数据指的是这三个对象在工程中setAttribute(),removeAttribute()的时候,我们的监听器就会知道,然后在对应的方法中执行相应的操作。
Servlet生命周期,及servlet相关知识点的总结。
Application对象(ServletContext对象).pptx
介绍 ServletContext对象的一些重要方法的示例代码
就是不同的用户,访问网页的时候能看到某一个相同的数据,例如该网站被访问的次数 其他特征: 特点:服务器创建;用户共享 作用域:整个项目 生命周期:服务器启动到服务器关闭 如何使用: 三种创建方式: ...
本篇文章是对javax.servlet.Servlet,ServletContext接口进行了纤细的分析介绍,需要的朋友参考下
超全面javaweb教程28天第9天_13_ServletContext概述