http://hw1287789687.iteye.com/blog/1943433
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 <span style="font-size: 1em; line-height: 1.5;">supermarketDao</span><span style="font-size: 1em; line-height: 1.5;">= ctx.getBean("supermarketDao");</span> System.out.println("jsp:"+<span style="font-size: 1em; line-height: 1.5;">supermarketDao</span><span style="font-size: 1em; line-height: 1.5;">);</span> %> </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。这种方法主要适用...
2. 配置Spring的applicationContext.xml,声明Bean、数据源、事务管理器等。 3. 配置web.xml,设置过滤器和监听器,使Spring和Struts2协同工作。 4. 在Action类上添加注解或配置,与Spring的Bean管理相结合。 5. ...
在SSM整合中,Spring作为核心容器,管理着其他组件,如Spring MVC和MyBatis的bean实例。 3. **Spring MVC**:Spring MVC是Spring框架的一个模块,专门用于处理Web层的请求和响应。它提供了模型-视图-控制器(MVC)...
3. **配置Spring-MVC**:在`web.xml`中配置`DispatcherServlet`,并在`applicationContext.xml`中配置Spring上下文。 4. **创建Controller**:编写一个带有`@Controller`注解的Java类,用`@RequestMapping`注解的...
在整合SSH时,通常会使用Spring来管理Struts2的Action和Hibernate的SessionFactory,通过Spring的ApplicationContext配置文件来配置这些组件。这样,当一个Action需要执行数据库操作时,可以通过Spring自动注入...
依赖注入使得开发者能够将对象的创建和管理交由Spring容器处理,减少代码间的耦合。面向切面编程则允许在不修改源代码的情况下,对程序进行功能增强,如日志、事务管理等。 2. **Spring MVC**:Spring MVC是Spring...
- 配置Spring环境,包括设置Spring的bean定义文件(如applicationContext.xml),定义数据源、事务管理器等。 - 配置Hibernate,创建hibernate.cfg.xml文件来指定数据库连接,以及实体类对应的hbm.xml映射文件。 - ...
1. 引入必要的Spring库:在JSP页面顶部,我们需要导入Spring提供的两个关键类`WebApplicationContextUtils`和`ApplicationContext`,以便能够获取Spring容器。 ```jsp <%@ page import="org.springframework.web....
5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 5.4.2.1. 注册用户自定义的PropertyEditor 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 ...
如果该Action被声明在Spring容器中,则Struts2会从Spring容器中获取Action实例。 - **Spring 插件的作用**:Spring插件作为桥梁,允许Struts2直接访问Spring容器中的Bean,从而实现对Action的依赖注入。 - **Struts2...
- `src/main/resources`: 配置文件,如Spring的`applicationContext.xml`和`spring-mvc.xml`,MyBatis的`mybatis-config.xml`以及Mapper接口的XML映射文件。 - `src/main/webapp`: Web应用的资源,如静态文件(HTML...
- 设置 Spring 容器加载配置文件路径,通常使用 `applicationContext-*.xml` 这样的通配符来匹配多个配置文件。 - 配置 Spring MVC 的核心 Servlet `DispatcherServlet`,并指定其配置文件 `/WEB-INF/dispatcher.xml...
1. **依赖注入**:Spring框架的核心特性之一,允许我们通过Spring容器来管理Mybatis的SqlSessionFactory和SqlSessionTemplate,这样可以避免手动创建和管理这些对象,提高了代码的可测试性和可维护性。 2. **Mapper...
2. 配置Spring的ApplicationContext,定义需要托管的Action类及其依赖。 3. 在Struts2的配置文件中启用Spring插件,并指定Spring配置文件的位置。 4. 在Action类上添加必要的注解,以便Spring管理和注入。 综上所述...
5. **ContextLoaderListener**:这是Spring Web应用的一个启动监听器,它会创建一个全局的ApplicationContext,用来管理所有Web应用范围内的bean。 接下来,我们关注`springs-webmvc`模块,它是Spring MVC的核心,...
1. **控制反转(IoC)**:IoC是Spring的核心特性,它将对象的创建和管理权交给了Spring容器。开发者只需要定义对象的配置,而无需关注如何实例化和依赖关系的建立。这使得代码更加灵活,易于测试和维护。 2. **依赖...
- IOC(控制反转)将对象的创建和管理从代码中分离出来,由 Spring 容器负责,使得代码更易于测试和解耦。 - Spring 作为一站式框架,提供了诸如 SpringMVC(Web 层)、Service 层的依赖注入以及 DAO 层的 ...
Spring插件(`struts2-spring-plugin-x.x.x.jar`)允许Struts2从Spring容器中获取Action实例。添加以下配置片段: ```xml <constant name="struts.objectFactory" value="org.springframework.struts2....
Spring的核心容器包括Bean工厂和ApplicationContext,负责对象的创建和管理。Spring MVC是Spring框架的一部分,提供了一个用于构建Web应用的MVC架构。Spring还包含数据访问/集成(DAO)、事务管理、JMS、电子邮件、...
这样,Struts2的Action可以通过Spring容器来创建和管理。 3. 集成Hibernate:在Spring配置文件(如`applicationContext.xml`)中,配置Hibernate的SessionFactory,包括数据源、实体扫描路径和Hibernate属性。此外...