本文作者:刘志伟,感谢他的分享。经本人测试,以下方法是GOOGLE后得出的最简单的方法。
servlet中获得spring上下文
之前一直是在web项目中使用struts2然后通过plugin集成spring,action生成的细节全部由plugin实现了,对于我们是透明的。过几天学校留个作业只能用普通的jsp+servlet做,之前一直是透明的使用spring,对spring的初始化及bean的获取一直没什么概念。这回正好用的上,就研究了一下ContextLoaderListener ContextLoader和StrutsSpringObjectFactory的源码。经过一番阅读对spring的初始化和获取bean有了一些印象。
在spring中的org.springframework.beans.factory.BeanFactory接口getBean(String id)用来获取spring管理的bean。而我们一般使用实现了该接口的ApplicationContext接口。所以只要我们在servlet中取得了ApplicationContext接口的实现类,就可以获取spring管理的bean了。
首先是在web.xml中配置listener
- <listener>
- <listener-class>
- org.springframework.web.context.ContextLoaderListener
- </listener-class>
- </listener>
这个类的核心代码如下
-
- public void contextInitialized(ServletContextEvent event) {
- this.contextLoader = createContextLoader();
- this.contextLoader.initWebApplicationContext(event.getServletContext());
- }
- protected ContextLoader createContextLoader() {
- return new ContextLoader();
- }
ContextLoader这个类内的代码就不写了,看不太明白。然后一个必须的类是WebApplicationContextUtils,该类有一个方法getWebApplicationContext(ServletContext servletContext),这个方法的官方解释是: Find the root WebApplicationContext for this web application, which is typically loaded via ContextLoaderListener or ContextLoaderServlet
。它的大概意思就是这个方法通过ContextLoaderListener获取WebApplicationContext。所以在servlet中就可以通过如下方法实现获取spring上下文
- import javax.servlet.http.HttpServlet;
- import org.springframework.context.ApplicationContext;
- import org.springframework.web.context.support.WebApplicationContextUtils;
- public class NewServlet extends HttpServlet {
-
- public ApplicationContext getApplicationContext(){
- return WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
- }
- }
使用方法
- public void test(){
- TestBean testBean=(TestBean)this.getApplicationContext().getBean("testBean");
- }
在filter里面server会给它注入一个FilterConfig对象,在filter里可以使用FilterConfig的filterConfig.getServletContext()方法获取servlet上下文,所以在filter里获取spring的上下文方法如下
- public ApplicationContext getApplicationContext() {
- return WebApplicationContextUtils.getWebApplicationContext(filterConfig.getServletContext());
- }
分享到:
相关推荐
Spring的注入在Servlet中使用:在Servlet中使用Spring注入的信息,需要WebApplicationContext这个专门为Web准备的应用上下文
接下来,Spring MVC中的DispatcherServlet创建了自己的WebApplicationContext,这个上下文是特定于Servlet的。它继承自ApplicationContext,但主要处理与Web相关的Bean,如控制器(Controller)、视图解析器、本地化...
然后在Web应用的`web.xml`中,通过`ContextLoaderListener`配置Spring上下文,使得在应用启动时Spring容器被初始化。 2. **Servlet与Spring的交互** 传统的Servlet在接收到请求后,会手动创建或查找需要的服务对象...
在`web.xml`中,使用`ContextLoaderListener`来初始化Spring的WebApplicationContext,确保在Filter执行之前Spring的上下文已经被加载。配置如下: ```xml <param-name>contextConfigLocation <param-value>/...
3. **Spring MVC入门**:理解DispatcherServlet的作用,配置Spring MVC的上下文和组件扫描,以及配置视图解析器。 4. **Model-View-Controller**:了解MVC模式的工作原理,如何创建模型、控制器和视图。 5. **请求...
在Web应用中,Spring通常会创建一个WebApplicationContext,它与Servlet上下文(ServletContext)关联。 **方法一:使用WebApplicationContextUtils** 在Servlet中,我们可以利用`WebApplicationContextUtils`工具...
在处理SFTP连接时,我们可以将服务器地址、端口、用户名和密码等信息写入到如`application.properties`或`application.yml`文件中,然后在Spring应用上下文中通过`@Value`注解或者`@ConfigurationProperties`来注入...
6. **启动配置**:在运行项目时,你需要确保Tomcat服务器配置正确,Spring的上下文加载正常,以及Servlet被正确地部署和初始化。 通过这个简单的"spring+servlet 入门hello_world"实例,你将学习到如何设置和运行一...
这段代码指定了一个Listener类`ContextLoaderListener`,该类由Spring框架提供,用于在应用程序启动时加载Spring的上下文配置。 #### Filter Filter是在请求到达目标资源之前可以执行预处理操作的对象,并且在响应...
执行这个SQL脚本将初始化数据库,为应用提供安全上下文。 `说明.txt`文件可能包含了项目的一些介绍、安装步骤或者配置说明,这对于理解和运行项目至关重要。建议仔细阅读此文件,以了解如何设置环境和启动应用程序...
使用原生 Servlet 方式时,需要在 Servlet 中添加 asyncSupported = true 属性,并使用 AsyncContext 对象来获取异步请求的上下文对象。然后,可以使用 setTimeout 方法来设定最大超时时间,并使用 response....
在Spring-Context中,你可以理解为Spring上下文就是应用程序的运行环境,它负责管理和装配Bean,同时提供了事件发布、国际化等功能。让我们深入探讨一下Spring上下文的相关知识点。 1. **Bean的定义与管理** - **...
在IT行业中,Spring框架与FreeMarker模板引擎的整合是一个常见的任务,特别是在开发Web应用程序时。Spring MVC作为Spring框架的一部分,负责处理HTTP请求并提供视图层的解决方案,而FreeMarker则是一个强大的、轻量...
监听器是Java Web中的特殊组件,可以监听特定的事件,如会话创建、销毁或上下文初始化等,从而实现自动化管理和监控。 综合以上技术,这个章节可能讲解了如何将这些组件集成在一起,创建一个完整的Java Web应用。...
5. **ServletContext接口**:代表整个Web应用的上下文,可用于在整个应用范围内共享数据,获取应用配置信息等。 6. **ServletRequest和ServletResponse接口**:分别表示HTTP请求和响应,提供了获取请求参数、设置...
1. **Servlet**: 可以在Servlet的init()方法中,通过ApplicationContextAware接口获取Spring上下文,然后手动从上下文中获取依赖的bean。 2. **Filter**: 同样,可以在Filter的init()方法中获取ApplicationContext...
例如,可以设置服务器端口、上下文路径、错误页面等。 4. **注册Servlet和Filter**: 在Spring Boot中,可以使用`@WebServlet`和`@WebFilter`注解来注册Servlet和Filter。此外,还可以通过`...
Spring提供了一个名为`DelegatingFilterProxy`的Filter实现,它的作用是作为代理,将实际的工作委托给Spring应用上下文(ApplicationContext)中管理的Bean。在Spring Security中,这个Bean通常是`...
8. **Web应用上下文**:Spring 2.5对Web应用上下文进行了增强,支持在Servlet容器外启动Spring应用上下文,增加了更多的初始化参数。 9. **JSR-303 Bean验证**:Spring 2.5开始支持JSR-303标准的bean验证,可以通过...
9. **Spring MVC中的Servlet**:在现代的Java Web开发中,Servlet常与Spring MVC框架结合使用,Spring MVC将请求映射、模型绑定、视图解析等工作都进行了封装,使得开发更为简洁。 通过这份"Servlet代码+说明文档...