Jsp 中如何获取spring的bean呢?
方式一:通过上下文
<?xml version="1.0" encoding="UTF-8" ?> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="org.springframework.web.context.support.WebApplicationContextUtils"%> <%@page import="org.springframework.context.ApplicationContext"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Insert title here</title> </head> <body> <% ServletContext context = request.getSession().getServletContext(); ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(context); Object supermarketDao= ctx.getBean("supermarketDao"); System.out.println("jsp:"+supermarketDao); %> </body> </html>
问题:JSP页面中获取的bean与spring 容器中的bean是同一个吗?
是的。
方式二:通过类路径加载bean文件,得到bean工厂
<?xml version="1.0" encoding="UTF-8" ?> <%@page import="org.springframework.beans.factory.BeanFactory"%> <%@page import="org.springframework.context.support.ClassPathXmlApplicationContext"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="org.springframework.web.context.support.WebApplicationContextUtils"%> <%@page import="org.springframework.context.ApplicationContext"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Insert title here</title> </head> <body> <% ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext("beans.xml","user_beans.xml","goods_beans.xml","supermarket_beans.xml","aop.xml","upload_beans.xml"); BeanFactory factory = (BeanFactory) appContext; Object obj=factory.getBean("supermarketDao"); System.out.println("jsp2:"+obj); %> </body> </html>
问题:JSP页面中获取的bean与spring 容器中的bean是同一个吗?
不是的。
总结:(1)通过WebApplicationContextUtils 获取bean是直接从spring容器中拿的;
(2)通过ClassPathXmlApplicationContext,实际上又解析了一遍xml,即又创建了一个新的spring容器,所有获取的bean与web上下文中是不同的。
相关推荐
下面将详细介绍在JSP页面中获取Spring容器中bean的两种方法。 ### 方法一:在Web应用中使用 在Web应用中,一般推荐使用Spring提供的WebApplicationContextUtils工具类来获取ApplicationContext。这种方法主要适用...
4. 从ApplicationContext获取bean:最后,通过`ApplicationContext`的`getBean()`方法,我们可以按bean的ID获取到具体的对象。这里假设我们的bean ID为"myService"。 ```jsp MyService serv = (MyService) ac2....
开发者可以在这个项目中看到如何配置Spring的ApplicationContext,如何声明和注入Bean,以及如何在JSP中调用这些Bean。同时,项目可能会包含一个简单的数据库模型,展示如何使用Hibernate进行数据操作,并在JSP页面...
在应用程序中使用国际化支持时,可以在需要显示本地化消息的地方通过ApplicationContext获取MessageSource实例,并调用getMessage方法。在调用时,通常需要提供消息代码(对应资源文件中的key),可选的消息参数...
在IT行业中,Spring、SpringMVC和MyBatis是三个非常重要的开源框架,它们分别用于处理应用程序的不同层次:Spring作为全面的容器管理依赖注入,SpringMVC负责Web层的处理,而MyBatis则专注于数据库操作。这次我们将...
- 配置Spring环境,包括设置Spring的bean定义文件(如applicationContext.xml),定义数据源、事务管理器等。 - 配置Hibernate,创建hibernate.cfg.xml文件来指定数据库连接,以及实体类对应的hbm.xml映射文件。 - ...
- **Spring配置文件**:可能有applicationContext.xml,定义Spring容器中的bean及其依赖关系。 - **资源文件**:如数据库连接配置(db.properties)、国际化消息资源(messages.properties)等。 - **样式表和...
在整合过程中,我们通常会配置Spring的ApplicationContext,定义Bean的定义,并通过Struts2的插件来读取Spring的ApplicationContext,这样Struts2的动作类就可以直接从Spring容器中获取依赖的对象。 具体步骤如下:...
如果直接在JSP页面尝试调用DAO层的方法,很可能会遇到空指针异常,这是因为JSP页面无法直接获取到Spring容器管理的对象实例。因此,我们需要一种方法使得JSP页面能够间接地调用DAO层的方法。 #### 三、解决方案步骤...
1. **配置文件**:如`applicationContext.xml`和`servlet-context.xml`,它们定义了Spring MVC的组件、数据源、视图解析器等设置。 2. **Controller类**:如`HelloWorldController.java`,展示了如何定义处理HTTP...
Spring作为整体应用的容器,负责依赖注入(DI)和面向切面编程(AOP),提供了事务管理和服务层抽象;Hibernate是持久化层框架,用于简化数据库操作,实现了对象关系映射(ORM);而Struts则作为表现层框架,处理...
这样,Action可以从Spring容器中获取依赖,实现依赖注入。 1. **配置Struts-Spring插件**。在Struts2的配置文件(struts.xml)中,需要启用Spring插件并指定Action类的Spring bean名称。 ```xml ...
它介绍了Spring的ApplicationContext和BeanFactory等核心组件,以及如何通过注解和Java配置文件来配置bean。还涉及了Spring IoC容器的扩展功能,例如资源加载、环境抽象和加载时编织器的注册。 资源管理章节涵盖了...
1. **控制反转(IoC)**:IoC是Spring的核心特性,它将对象的创建和管理权交给了Spring容器。开发者只需要定义对象的配置,而无需关注如何实例化和依赖关系的建立。这使得代码更加灵活,易于测试和维护。 2. **依赖...
这通常通过在Service层的方法上添加@Transactional注解实现,Spring容器会自动处理事务的开启、提交或回滚。 最后,整合完成后,我们的应用程序将能够充分利用Spring的灵活依赖注入和事务管理,以及Struts的流程...
该项目可以帮助开发者理解和学习Spring框架的核心组件,如IoC(Inversion of Control,控制反转)容器、AOP(Aspect Oriented Programming,面向切面编程)、MVC(Model-View-Controller,模型-视图-控制器)架构...
3. **容器**:Spring容器(如ApplicationContext)负责创建、配置和管理应用中的对象。对象可以通过XML、Java配置或注解进行定义。 4. **数据访问**:Spring提供了JDBC抽象层,简化了数据库操作,同时支持ORM(对象...