`
2277259257
  • 浏览: 517968 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Servlet +Spring-----1

 
阅读更多

 在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");

分享到:
评论

相关推荐

    springmvc4+spring4+mybatis3+spring-security3的环境搭建

    然后,我们需要编写Spring的配置文件(如`applicationContext.xml`和`spring-servlet.xml`),以及MyBatis的配置文件(`mybatis-config.xml`)。在这些文件中,我们会配置数据源、SqlSessionFactory、Mapper扫描器、...

    springmvc4.1+spring4.1+mybatis3.2+spring-security3.2的maven环境搭建

    在"baseArch"这个文件夹中,可能包含了项目的基本架构,包括pom.xml文件、Spring配置文件(如applicationContext.xml、spring-servlet.xml)、MyBatis的Mapper接口和XML配置、Spring Security的配置文件,以及可能的...

    Jsp+servlet+spring+struts-API用户手册.zip

    在IT行业中,Web开发是至关重要的领域,而`JSP`、`Servlet`、`Spring`和`Struts`是构建高效、可扩展的企业级应用的基石。这些技术结合使用,能够实现强大的前后端交互,提供高效的数据处理和用户体验。 首先,`JSP ...

    javaee 实验报告 实验一 JSP+Servlet+Javabean+jdbc-基于MVC模式的数据库的应用

    实验一之后,实验二和实验三进一步介绍了JSF(JavaServer Faces)+JPA(Java Persistence API)以及Struts+Spring+Hibernate框架。这些高级框架简化了数据访问和业务逻辑的处理,JSF提供了一种声明式UI开发方式,JPA...

    java开发的家居电子商城Jsp+Servlet+Druid+JDBC-Template+JQuery+Js +EL/JSTL

    JavaWeb家居电子商城管理系统,没有spring框架,纯servlet,线上家居电子商城系统,主要实现了用户注册,登录、浏览,查看家居商品信息,购物车,订单,支付,查看通知以及管理员对用户信息的管理,订单管理,商品...

    spring4+springmvc+mybatis3+redis2.8+spring-session框架搭建

    1. **Spring 4**: Spring 是一个开源的应用框架,它提供了面向切面编程(AOP)和依赖注入(DI)的功能,简化了Java应用的开发。Spring 4 是该框架的一个版本,增加了对Java 8的支持,改进了对WebSocket协议的处理...

    《Java Web开发技术大全--JSP+Servlet+Struts 2+Hibernate+Spring+AJAX》.(李宁).[PDF].&ckook;

    《Java Web开发技术大全--JSP+Servlet+Struts 2+Hibernate+Spring+AJAX》.(李宁).[PDF].&ckook;

    spring-boot 集成hibernate

    4. **连接池监控**: Druid提供了丰富的监控功能,可以在运行时查看连接池状态、SQL执行情况等,通过配置`spring.datasource.druid.web-stat-filter`和`spring.datasource.druid.stat-view-servlet`实现。 综上所述...

    spring-context-3.2.0 spring-core-3.2.0 等齐全的Spring jar包

    1. **spring-core-3.2.0.RELEASE.jar**:这是Spring框架的核心模块,提供了基本的IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)功能,以及资源加载和通用工具类。 2. **spring-...

    基于 jsp + servlet + jquery + easy-ui + ajax 的学生成绩管理系统.zip

    【标题】中的“基于jsp + servlet + jquery + easy-ui + ajax 的学生成绩管理系统”揭示...通过分析和参与这个项目,可以深入了解JSP、Servlet、jQuery、Easy-UI和Ajax的协同工作,以及Spring Boot在实际项目中的应用。

    java web整合开发王者归来光盘代码-第七章 servlet章节 (JSP+Servlet+Struts+Hibernate+Spring)

    1. **Servlet**:Servlet是Java平台上的服务器端组件,用于扩展服务器的功能。它们处理HTTP请求并生成响应,是构建动态Web应用的基础。在本章中,你可能会学习到Servlet生命周期、初始化、服务、销毁方法,以及如何...

    spring-webmvc5.3.6 jar包.rar

    org.springframework.web.servlet.DispatcherServlet ) spring-webmvc 是 Spring MVC 的一个实现。spriing-webmvc 依赖于 spring-web如果直接使用spring-webmvc,就会隐式地添加 spring-web。不必显示添加 spring-...

    Spring框架(spring-framework-5.2.6.RELEASE)的jar包

    1. **Core Container**:这是Spring的基础,包括Core和Beans模块,它们提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)的基础。Core模块提供了ApplicationContext...

    spring-web-5.2.3.RELEASE和spring-webmvc-5.2.3.RELEASE

    此外,它还提供了对Servlet、Filter和Listener的集成,使得Spring能够与任何Servlet容器(如Tomcat、Jetty)无缝协作。WebSocket API的集成则允许开发者创建实时双向通信的应用。 Spring Web MVC模块(spring-web...

    spring-security-web源码所需jar包

    1. **spring-context-3.1.2.RELEASE.jar**:提供Spring的IoC(Inversion of Control)容器和AOP(Aspect Oriented Programming)支持,这是Spring框架的基础,为Spring Security提供了配置和事件处理能力。...

    基于Servlet+Spring+Mybatis的客户关系管理系统.zip

    【基于Servlet+Spring+Mybatis的客户关系管理系统】 在IT领域,客户关系管理(CRM)系统是企业管理和优化与客户关系的重要工具。本项目“基于Servlet+Spring+Mybatis的客户关系管理系统”是一个典型的Java Web应用...

    spring-framework-master

    1. **核心容器**:包括Core Container和Beans模块,定义了Spring的基本部分,如Bean工厂、ApplicationContext和依赖注入功能。Bean工厂是Spring的基石,它负责创建、管理和配置对象。 2. **数据访问/集成**:如JDBC...

    spring-boot-starter-web.jar

    使用SpringMVC构建web(包括RESTful)应用程序的初学者。...spring-boot-starter-web 为我们提供了嵌入的 Servlet 容器以及 SpringMVC 的依赖,并为 Spring MVC 提供了大量自动配置,可以适用于大多数 Web 开发场景。

    信息办公学生课绩管理系统 jsp + servlet + javaBean + sql-server-scm.zip

    Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java...

    spring-framework-1.0-with-dependencies.zip

    1. **spring-beans**:这是Spring的核心模块,实现了IoC容器,负责管理对象的生命周期和依赖关系。 2. **spring-context**:扩展了spring-beans,引入了ApplicationContext接口,提供了一种更高级的容器,可以处理...

Global site tag (gtag.js) - Google Analytics