最近做项目,用到了一个比较不熟悉的东西,但我自己又觉得很有用。所以记录下吧……
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【后】被触发,会发现在控制台输出以下结果:
相关推荐
总结来说,`ServletContext`是Java Web开发中的重要工具,它提供了一种在不同Servlet间共享数据和资源的有效方式。在Myeclipse这样的开发环境中,理解和熟练运用`ServletContext`能够极大地提升开发效率,同时也能...
正确理解和使用`ServletContext`,对于构建高效、可靠的Web应用至关重要。开发者应该熟悉其主要方法和应用场景,以便更好地利用这一强大工具。 以上就是关于`ServletContext`的基本介绍和应用示例。希望对您有所...
开发者可以使用`getServletContext()`方法获取到ServletContext对象,然后通过`setAttribute()`和`getAttribute()`方法来存储和检索信息。例如,当多个Servlet需要共享数据时,ServletContext就非常有用,它可以用来...
面试时,理解这些类和接口的工作原理和使用场景是非常重要的。 设计模式是软件工程中的重要概念,单例模式是其中的一种。单例模式确保一个类只有一个实例,并提供全局访问点。面试中,面试官可能会询问你如何实现...
路径可以分为相对路径和绝对路径两种,在不同的场景下,选择合适的路径类型非常重要。本文将对 Servlet 中的相对路径和绝对路径进行归纳,帮助开发者更好地理解和使用路径。 1. 表单中的路径 在 HTML 表单中,...
浅谈Spring中用到的设计模式及应用场景 Spring 框架是 Java 企业级应用程序的核心组件之一,它提供了强大的功能和灵活的架构来简化企业级应用程序的...了解这些设计模式可以帮助我们更好地理解和使用 Spring 框架。
在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,它结合了HTML、Java代码和脚本语言。在某些场景下,比如文件上传或大任务处理时,用户可能希望看到一个进度条来展示任务的完成进度。本...
此外,标签中提到的“网站CMS”,即内容管理系统,是一种用于创建、管理和发布数字内容的平台。虽然这个实训项目可能没有实现完整的CMS系统,但其思想是通过JSP和Ajax实现动态数据更新,这在许多CMS系统中是常见的...
本文将详细解释Session、Application、Cookie 和 ViewState 的概念及用法,帮助开发者更好地理解这些机制如何在Web应用程序中工作。 #### 1. Session Session 是一种用于跟踪用户在网站上的活动的技术。它存储特定...
监听器机制为开发者提供了一种优雅的方式来扩展和维护Web应用程序,极大地提高了开发效率和系统的灵活性。理解并熟练掌握这些监听器的工作原理及其使用方法对于成为一名优秀的Java开发者至关重要。
- Servlet上下文:掌握`ServletContext`对象的作用和使用场景。 4. **请求和响应处理**: - 请求参数:学习如何获取和处理请求参数,包括路径参数、查询参数和表单数据。 - 响应处理:设置HTTP响应状态码、头...
Session是服务器端状态管理的一种方式,用于在多个请求之间存储特定用户的数据。每个用户会话都有一个唯一的Session ID,这个ID通过Cookie在客户端和服务器之间传递。 3.2 Session原理 当客户端首次发送请求时,...
【监听器和过滤器概述】 在Java Web开发中,监听器(Listener)和过滤器(Filter)是两种非常重要的组件,它们分别承担着不同的...理解并熟练使用它们,能够帮助开发者更好地控制和管理应用程序,提升系统功能和性能。
这使得`init-parameter`成为一种理想的机制,用于传递只对某个特定Servlet有意义的信息或配置数据。 例如,如果一个Servlet需要一个数据库连接字符串,这个信息可以作为`init-parameter`在web.xml中定义,并在...
综上所述,监听器和过滤器是Java Web开发中的重要工具,它们帮助开发者更精细地管理和控制应用程序的行为,提供了一种灵活的扩展机制,以满足复杂的应用场景需求。正确理解和有效利用这两种技术,对于提升应用的健壮...
17. **RESTful API设计**:RESTful是一种Web服务设计风格,强调资源的表示和操作,使用HTTP方法(GET、POST、PUT、DELETE)来操作资源,使得API更易于理解和使用。 这些知识点构成了JavaWeb开发的基础,通过"狂神...
3. **MVC(Model-View-Controller)模式**:这是一种常见的软件设计模式,在Java Web中常用于分离业务逻辑、数据模型和用户界面。第六章可能涉及如何实现简单的MVC架构,比如使用Servlet作为Controller,JavaBeans...