Servlet容器:
Servlet容器主要是JavaWeb应用提供运行时环境,所以也可以称之为JavaWeb应用容器,或者Servlet/JSP容器。Servlet容器主要负责管理Servlet、JSP的生命周期以及它们的共享数据。
IOC容器:配置和管理JavaBean。
下面是一个问题实例:
Servlet如下,里面有一个studentService属性,通过springioc容器给studentService注入一个对象(配置监听器)。

public class QueryStudentByIdServlet extends HttpServlet {private static final long serialVersionUID = 1L;private  IStudentService studentService;//通过springioc容器将 studentService 注入给Servletpublic void setStudentService(IStudentService studentService) {this.studentService = studentService;System.out.println(studentService);}/*** @see HttpServlet#HttpServlet()*/public QueryStudentByIdServlet() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String name = studentService.queryStudentById(); request.setAttribute("name", name);request.getRequestDispatcher("result.jsp").forward(request, response);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//      IStudentService studentService = new StudentServiceImpl();// TODO Auto-generated method stubdoGet(request, response);}}

运行时报空指针异常:java.lang.NullPointerException;
通过断点可以发现,初始化时studentService不为null。

调用时studentService为null。

为什么会这样:加载时,给springioc容器中studentService赋了值,而使用时,访问的是Servlet容器中的studentService。
bean的实例化是保存在Spring IOC容器中;但是每一次request都是请求servlet容器。
解决办法:在Servlet初始化时,获取Spring IOC容器中的bean对象。

@Override public void init() throws ServletException { ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());studentService=(IStudentService)context.getBean("studentService"); }

Servlet容器和IOC容器相关推荐

  1. IoC容器和Servlet容器

    目录 IoC容器 IoC实现方法 依赖注入 依赖查找 认识Servlet容器 实例 实例1:使用IoC管理Bean 实例2:Servlet处理请求 IoC容器 IoC容器,是面向对象编程中的一种设计原 ...

  2. Spring – IoC 容器

    Spring IoC 容器是 Spring 框架的核心.容器将创建对象,将它们连接在一起,进行配置,并管理从创建到销毁的整个生命周期.Spring 容器使用依赖项注入(DI)来管理组成应用程序的组件. ...

  3. Spring技术内幕——Spring Framework的IOC容器实现(一)

    一.SpringIOC容器概述 IOC容器和依赖反转的模式 在面向对象的系统中,对象封装了数据和对数据的处理,对象的依赖关系常常体现在对数据和方法的依赖上.这些依赖关系可以通过把对象的依赖注入交给框架 ...

  4. [Spring 深度解析]第6章 Spring的IoC容器系列

    6. Spring的IoC容器系列 ​ IoC容器为开发者管理对象之间的依赖关系提供了很多便利和基础服务.有许多IoC容器供开发者选择,SpringFramework的IoC核心就是其中一个,它是开源 ...

  5. IOC容器特性注入第一篇:程序集反射查找

    学习kooboo的框架发现它的注入容器方法比较特别,同样是利用MVC的注入点,但它是查找网站下面bin所有的DLL利用反射查找特性找到对应的服务注入到容器. 这样的好处很简单:完全可以不用关心IOC容 ...

  6. php ioc容器,PHP 在Swoole中使用双IoC容器实现无污染的依赖注入

    容器(container)技术(可以理解为全局的工厂方法), 已经是现代项目的标配. 基于容器, 可以进一步实现控制反转, 依赖注入. Laravel 的巨大成功就是构建在它非常强大的IoC容器 il ...

  7. 依赖反转原理,IoC容器和依赖注入:第3部分

    目录 介绍 背景 自定义IoC容器的工作方式 自定义IoC容器 高级模块的使用者 编码自定义IoC容器 步骤1:在Visual Studio中创建一个空白解决方案,并创建以下项目 步骤2:将以下代码添 ...

  8. 【Spring】IoC容器系列的设计与实现:BeanFactory和ApplicationContext

    在Spring IoC容器的设计中,我们可以看到两个主要的容器系列,一个是实现BeanFactory接口的简单容器系列,这系列容器只实现了容器的最基本功能,另一个是ApplicationContext ...

  9. Spring简介与IOC容器

    一.Spring简介 开源:源码公开.免费试用: 简化:简化企业级开发. 解耦:耦合度降低.可插拔,便于后续维护更新升级拓展. 二.Sping核心模块 Spring 框架的这些模块可以满足一切企业级应 ...

  10. spring的IOC容器

    文章目录 1. IOC.IOC容器.Bean.DI 2. 核心概念小结 3,入门案例 3.1 IOC入门案例 3.1.1 入门案例思路分析 3.1.2 入门案例代码实现 步骤1:创建Maven项目 步 ...

最新文章

  1. 安全工程师2017年真题_以下是2017年全球软件工程师的平均薪水
  2. QT cannot open output file debug\OpencvTest.exe: Permission denied
  3. Python爬虫入门(5):URLError异常处理
  4. ESlint全局安装(安装教程) - cmd篇
  5. 【英语学习】【WOTD】disbursement 释义/词源/示例
  6. Android开发者指南24难点各个击破—来自androi中文翻译组
  7. 20个Excel操作技巧,提高你的数据分析效率
  8. Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
  9. 【CCCC】L2-011 玩转二叉树 (25分),二叉树建树与遍历(我讨厌树,@L2-006)
  10. redis使用sysc超时_优雅的处理Redis访问超时
  11. Java实现在线视频通话
  12. 串口通信校验方式(even,odd,space,mark)UART数据波形分析
  13. 洛谷P3373线段树
  14. 读《有效管理的5大兵法》笔记摘录(一)核心价值观:求实、进取、创新、协同、分享
  15. 计算机科学之父-艾伦·麦席森·图灵的传奇人生
  16. Halcon面阵相机采像
  17. golang设计模式——备忘录模式
  18. 艾美捷游离维多珠单抗ADA水平检测试剂盒,高灵敏度检测
  19. configSections(配置文件)
  20. Magento获取当前页面URL地址

热门文章

  1. 译文-Teach Yourself Computer Science-自学计算机科学
  2. snipaste滚动截图方法_Snipaste——这是我用过最好用的截图贴图工具!
  3. 动态申请空间 malloc函数
  4. java 拼音首字母 高效_如何实现一个高效的拼音匹配库?解决多音字,首字母匹配等问题...
  5. 飞思卡尔智能车知识总结
  6. 032-OpenCV模板匹配单个对象、多个对象
  7. C语言多种格式输入乘法表,C语言:九九乘法表打印
  8. 正版Oracle产品价格
  9. 计算机语言元素周期表,元素周期表高清大图
  10. 【翻译】steam离线时通过局域网游玩L4D2(求生之路2)