Web层关于获取applicationContext的项目测试

Spring整合Web项目:

步骤一:创建web项目,引入jar包:
引入基本6个开发包:
步骤二:创建包结构:
* com.itheima
           * web层
                           * UserServlet
           * service层
                            * UserService
          * dao层
                          * UserDao
步骤三:创建Spring的配置文件:
配置Service和DAO到Spring的配置文件中:
1
2
3
4
< bean id = "userService" class = "com.itheima.service.UserService" >
         < property name = "userDao" ref = "userDao" />
</ bean >  
< bean id = "userDao" class = "com.itheima.dao.UserDao" ></ bean >
步骤四:在Servlet中获得Service对象:
1
2
3
4
5
6
7
// 创建工厂:(方法不好,因为每次在刷新页面时,都会去创建工厂,效率低)
         ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
                 "applicationContext.xml" );
         UserService userService = (UserService) applicationContext
                 .getBean( "userService" );
         System.out.println( "UserServlet的方法执行了..." );
         userService.save();
步骤五:发现问题: 
访问Servlet:创建Spring工厂,不停刷新,不停创建工厂.(效率太低)
* 解决问题:
          * 一种:将工厂的创建放入到Servlet的init方法中.(这种方式不好:多个Servlet的情况,创建一个Servlet创建一个Spring的工厂.)
  ***** 二种:将工厂创建好了以后放入到ServletContext域中.使用工厂的时候,从ServletContext中获得.
          * ServletContextListener:用来监听ServletContext对象的创建和销毁的监听器.
        * 当ServletContext对象创建的时候:创建工厂 , 将工厂存入到ServletContext.
               ServletContext域只会创建一次,所以就把工程存方到ServletContext中去,这样的话,工厂也就只创建一次
               工厂创建存入到ServletContext中的过程其实是由监听器完成的,所以我们要是不配置监听器的话,就是无效的

* Spring整合Web项目:(已经把applicationContext初始化工厂放入监听器初始化方法中,所以我们只需开启这个监听器)
               * 引入spring-web-3.2.0.RELEASE.jar包.---->目的:Spring整合Web项目,监听器在里面
 

* 配置监听器:

1
2
3
4
<!-- 配置Spring的核心监听器: -->
  < listener >
     < listener-class >org.springframework.web.context.ContextLoaderListener</ listener-class >
  </ listener >
  因为tomcat设置Spring配置文件默认是在WEB-INF下的

所以要修改applicationContext.xml文件的路径的全局初始化参数设置。

1
2
3
4
<context-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
步骤六:在Servlet中获得工厂
* 从ServletContext中获得工厂:
* 两种方式获得:
          * 获得ServletContext.getAttribute(“...”);
          * WebApplicationContextUtils.getWebApplicationContext(ServletContext context);
                   返回一个applicationContext对象,可以直接调用getBean()方法




转载于:https://my.oschina.net/mickeymouse/blog/519122

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值