JavaWeb应用中获取Spring的ApplicationContext

简介:
ApplicationContext是Spring的容器环境,通过ApplicationContext对象可以访问所有配置的bean。
 
在Web开发开发中,常常需要从JSP或者Servlet或者Action中获取ApplicationContext对象,这时候,就无法使用new关键字通过查找配置文件来实例化ApplicationContext这个对象了。Spring通过WebApplicationContextUtils可以方便实现您的需求。下面看个例子:
 
一、Spring2.5+Struts2环境下
 
1、配置web.xml,通过这个配置来获取的。
<? xml  version ="1.0"  encoding ="UTF-8" ?> 
< web-app  xmlns ="http://java.sun.com/xml/ns/javaee" 
                      xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" 
                     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        [url]http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd[/url]" 
                      version ="2.5" > 
         < context-param > 
                 < param-name >contextConfigLocation </ param-name > 
                 < param-value >/WEB-INF/applicationContext.xml </ param-value > 
         </ context-param > 

         < filter > 
                 < filter-name >struts2 </ filter-name > 
                 < filter-class >org.apache.struts2.dispatcher.FilterDispatcher </ filter-class > 
         </ filter > 
         < filter-mapping > 
                 < filter-name >struts2 </ filter-name > 
                 < url-pattern >/* </ url-pattern > 
         </ filter-mapping > 
         < listener > 
                 < listener-class >org.springframework.web.context.ContextLoaderListener </ listener-class > 
         </ listener > 
         < servlet > 
                 < servlet-name >dispatcher </ servlet-name > 
                 < servlet-class >org.springframework.web.servlet.DispatcherServlet </ servlet-class > 
                 < load-on-startup >1 </ load-on-startup > 
         </ servlet > 
         < servlet-mapping > 
                 < servlet-name >dispatcher </ servlet-name > 
                 < url-pattern >*.form </ url-pattern > 
         </ servlet-mapping > 
</ web-app >
 
2、在JSP、Servlet、Action中获取ApplicationContext
 
< %@ page  import ="lavasoft.service.TestService" % > 
< %@ page  import ="org.springframework.context.ApplicationContext" % > 
< %@ page  import ="org.springframework.web.context.support.WebApplicationContextUtils" % > 
< %@ page  contentType ="text/html;charset=UTF-8"  language ="java" % > 
< html > 
< head > < title >Simple jsp page </title> </head> 
< body > 
<% 
//        ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext()); 
        ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(session.getServletContext()); 
        TestService service = (TestService) ctx.getBean("testService"); 
        String s = service.test(); 
        out.print(s); 
%> 

</body> 
</html>
 
二、Spring+JSP的环境
 
在此环境下web.xml配置会有些变化:
<? xml  version ="1.0"  encoding ="UTF-8" ?> 
< web-app  xmlns ="http://java.sun.com/xml/ns/javaee" 
                      xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" 
                     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        [url]http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd[/url]" 
                      version ="2.5" > 

         < context-param > 
                 < param-name >contextConfigLocation </ param-name > 
                 < param-value >/WEB-INF/applicationContext.xml </ param-value > 
         </ context-param > 
         < listener > 
                 < listener-class >org.springframework.web.context.ContextLoaderListener </ listener-class > 
         </ listener > 
         < servlet > 
                 < servlet-name >dispatcher </ servlet-name > 
                 < servlet-class >org.springframework.web.servlet.DispatcherServlet </ servlet-class > 
                 < load-on-startup >1 </ load-on-startup > 
         </ servlet > 
         < servlet-mapping > 
                 < servlet-name >dispatcher </ servlet-name > 
                 < url-pattern >*.form </ url-pattern > 
         </ servlet-mapping > 
</ web-app >
 
获取的方式和上述完全一样。
 
下面给出本例子的工程源码。


本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/126570,如需转载请自行联系原作者
相关文章
|
8天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
62 1
|
19天前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
4天前
|
人工智能 开发框架 Java
总计 30 万奖金,Spring AI Alibaba 应用框架挑战赛开赛
Spring AI Alibaba 应用框架挑战赛邀请广大开发者参与开源项目的共建,助力项目快速发展,掌握 AI 应用开发模式。大赛分为《支持 Spring AI Alibaba 应用可视化调试与追踪本地工具》和《基于 Flow 的 AI 编排机制设计与实现》两个赛道,总计 30 万奖金。
|
9天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用
【10月更文挑战第8天】本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,通过 Spring Initializr 创建并配置 Spring Boot 项目,实现后端 API 和安全配置。接着,使用 Ant Design Pro Vue 脚手架创建前端项目,配置动态路由和菜单,并创建相应的页面组件。最后,通过具体实践心得,分享了版本兼容性、安全性、性能调优等注意事项,帮助读者快速搭建高效且易维护的应用框架。
18 3
|
10天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用
【10月更文挑战第7天】本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,通过 Spring Initializr 创建 Spring Boot 项目并配置 Spring Security。接着,实现后端 API 以提供菜单数据。在前端部分,使用 Ant Design Pro Vue 脚手架创建项目,并配置动态路由和菜单。最后,启动前后端服务,实现高效、美观且功能强大的应用框架。
13 2
|
14天前
|
人工智能 缓存 Java
深入解析Spring AI框架:在Java应用中实现智能化交互的关键
【10月更文挑战第12天】Spring AI 是 Spring 框架家族的新成员,旨在满足 Java 应用程序对人工智能集成的需求。它支持自然语言处理、图像识别等多种 AI 技术,并提供与云服务(如 OpenAI、Azure Cognitive Services)及本地模型的无缝集成。通过简单的配置和编码,开发者可轻松实现 AI 功能,同时应对模型切换、数据安全及性能优化等挑战。
|
1月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
5天前
|
XML Java 数据格式
Spring IOC容器的深度解析及实战应用
【10月更文挑战第14天】在软件工程中,随着系统规模的扩大,对象间的依赖关系变得越来越复杂,这导致了系统的高耦合度,增加了开发和维护的难度。为解决这一问题,Michael Mattson在1996年提出了IOC(Inversion of Control,控制反转)理论,旨在降低对象间的耦合度,提高系统的灵活性和可维护性。Spring框架正是基于这一理论,通过IOC容器实现了对象间的依赖注入和生命周期管理。
17 0
|
1月前
|
Java 对象存储 开发者
故障隔离与容错处理:Hystrix在Spring Cloud和Netflix OSS中的应用
故障隔离与容错处理:Hystrix在Spring Cloud和Netflix OSS中的应用
42 3
|
1月前
|
Kubernetes Cloud Native Java
当 Quarkus 遇上 Spring Boot,谁才是现代云原生应用的终极之选?究竟哪款能助你的应用傲视群雄?
Quarkus 和 Spring Boot 均为构建现代云原生应用的热门框架,旨在简化开发流程并提升性能。Spring Boot 依托庞大的 Spring 生态系统,提供开箱即用的体验,适合快速搭建应用。Quarkus 由红帽发起,专为 GraalVM 和 HotSpot 设计,强调性能优化和资源消耗最小化,是云原生环境的理想选择。
45 3