在Servlet(或者Filter,或者Listener)中使用spring的IOC容器
spring是用监听器或Servlet把IOC容器配置到web容器里 以上两个类会把IOC容器放入Servlet容器内,也就是Application范围内, 假设你没有给他设置存入参数,默认的JSP可以采用以下方式得到IOC容器, 从而通过IOC容器得到受管理bean。 <% WebApplicationContext context = (WebApplicationContext)application .getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE); context.getBean("bean id"); %>
web.xml中的加载顺序为:listener >> filter >> servlet >> spring。其中filter的执行顺序是filter- mapping在web.xml中出现的先后顺序。
加载顺序会影响对spring bean的调用。比如filter 需要用到bean ,但是加载顺序是先加载filter 后加载spring,则filter中初始化操作中的bean为null。所以,如果过滤器中要使用到 bean,可以将spring 的加载改成Listener的方式。
复制代码
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
复制代码
ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext的配置信息。
如果在web.xml中不写任何参数配置信息,默认的路径是"/WEB-INF/applicationContext.xml",在WEB-INF目录下创建的xml文件的名称必须是applicationContext.xml。如果是要自定义文件名可以在web.xml里加入contextConfigLocation这个context参数。
复制代码
private static ApplicationContext ctx = null;
public Object getBean(String name) {
if (ctx == null) {
ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(this.servletContext);
}
return ctx.getBean(name);
}
复制代码
在servlet或者filter或者Listener中使用spring的IOC容器的方法是:
WebApplicationContext webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext());
由于spring是注入的对象放在ServletContext中的,所以可以直接在ServletContext取出WebApplicationContext 对象:
WebApplicationContext webApplicationContext = (WebApplicationContext) servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
事实上WebApplicationContextUtils.getWebApplicationContext方法就是使用上面的代码实现的,建议使用上面上面的静态方法
注意:在使用webApplicationContext.getBean("ServiceName")的时候,前面强制转化要使用接口,如果使用实现类会报类型转换错误。如:
LUserService userService = (LUserService) webApplicationContext.getBean("userService");
相关推荐
然后,我们需要编写Spring的配置文件(如`applicationContext.xml`和`spring-servlet.xml`),以及MyBatis的配置文件(`mybatis-config.xml`)。在这些文件中,我们会配置数据源、SqlSessionFactory、Mapper扫描器、...
在"baseArch"这个文件夹中,可能包含了项目的基本架构,包括pom.xml文件、Spring配置文件(如applicationContext.xml、spring-servlet.xml)、MyBatis的Mapper接口和XML配置、Spring Security的配置文件,以及可能的...
在IT行业中,Web开发是至关重要的领域,而`JSP`、`Servlet`、`Spring`和`Struts`是构建高效、可扩展的企业级应用的基石。这些技术结合使用,能够实现强大的前后端交互,提供高效的数据处理和用户体验。 首先,`JSP ...
实验一之后,实验二和实验三进一步介绍了JSF(JavaServer Faces)+JPA(Java Persistence API)以及Struts+Spring+Hibernate框架。这些高级框架简化了数据访问和业务逻辑的处理,JSF提供了一种声明式UI开发方式,JPA...
JavaWeb家居电子商城管理系统,没有spring框架,纯servlet,线上家居电子商城系统,主要实现了用户注册,登录、浏览,查看家居商品信息,购物车,订单,支付,查看通知以及管理员对用户信息的管理,订单管理,商品...
1. **Spring 4**: Spring 是一个开源的应用框架,它提供了面向切面编程(AOP)和依赖注入(DI)的功能,简化了Java应用的开发。Spring 4 是该框架的一个版本,增加了对Java 8的支持,改进了对WebSocket协议的处理...
《Java Web开发技术大全--JSP+Servlet+Struts 2+Hibernate+Spring+AJAX》.(李宁).[PDF].&ckook;
4. **连接池监控**: Druid提供了丰富的监控功能,可以在运行时查看连接池状态、SQL执行情况等,通过配置`spring.datasource.druid.web-stat-filter`和`spring.datasource.druid.stat-view-servlet`实现。 综上所述...
1. **spring-core-3.2.0.RELEASE.jar**:这是Spring框架的核心模块,提供了基本的IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)功能,以及资源加载和通用工具类。 2. **spring-...
【标题】中的“基于jsp + servlet + jquery + easy-ui + ajax 的学生成绩管理系统”揭示...通过分析和参与这个项目,可以深入了解JSP、Servlet、jQuery、Easy-UI和Ajax的协同工作,以及Spring Boot在实际项目中的应用。
1. **Servlet**:Servlet是Java平台上的服务器端组件,用于扩展服务器的功能。它们处理HTTP请求并生成响应,是构建动态Web应用的基础。在本章中,你可能会学习到Servlet生命周期、初始化、服务、销毁方法,以及如何...
org.springframework.web.servlet.DispatcherServlet ) spring-webmvc 是 Spring MVC 的一个实现。spriing-webmvc 依赖于 spring-web如果直接使用spring-webmvc,就会隐式地添加 spring-web。不必显示添加 spring-...
1. **Core Container**:这是Spring的基础,包括Core和Beans模块,它们提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)的基础。Core模块提供了ApplicationContext...
此外,它还提供了对Servlet、Filter和Listener的集成,使得Spring能够与任何Servlet容器(如Tomcat、Jetty)无缝协作。WebSocket API的集成则允许开发者创建实时双向通信的应用。 Spring Web MVC模块(spring-web...
1. **spring-context-3.1.2.RELEASE.jar**:提供Spring的IoC(Inversion of Control)容器和AOP(Aspect Oriented Programming)支持,这是Spring框架的基础,为Spring Security提供了配置和事件处理能力。...
【基于Servlet+Spring+Mybatis的客户关系管理系统】 在IT领域,客户关系管理(CRM)系统是企业管理和优化与客户关系的重要工具。本项目“基于Servlet+Spring+Mybatis的客户关系管理系统”是一个典型的Java Web应用...
1. **核心容器**:包括Core Container和Beans模块,定义了Spring的基本部分,如Bean工厂、ApplicationContext和依赖注入功能。Bean工厂是Spring的基石,它负责创建、管理和配置对象。 2. **数据访问/集成**:如JDBC...
使用SpringMVC构建web(包括RESTful)应用程序的初学者。...spring-boot-starter-web 为我们提供了嵌入的 Servlet 容器以及 SpringMVC 的依赖,并为 Spring MVC 提供了大量自动配置,可以适用于大多数 Web 开发场景。
Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java...
1. **spring-beans**:这是Spring的核心模块,实现了IoC容器,负责管理对象的生命周期和依赖关系。 2. **spring-context**:扩展了spring-beans,引入了ApplicationContext接口,提供了一种更高级的容器,可以处理...