webApplicationContext 与servletContext详解

1.WebApplicationContext的研究

     ApplicationContext是spring的核心,Context通常解释为上下文环境,用“容器”来表述更容易理解一些,ApplicationContext则是“应用的容器了”了。

    spring把bean放在这个容器中,在需要的时候,用getBean()方法取出,在web应用中,会用到webApplicationContext,继承自ApplicationContext

   在web.xml初始化WebApplicationContext:

  <context-param>

          <param-name>contextConfigLocation</param-name>

          <param-value>/WEB-INF/applicationContext.xml</param-value>

 </context-param>

<listener>

    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

或者用ContextLoaderServlert亦可(加<load-on-startup>1</load-on-startup>)

 

2.ServletContext详解

   ServletContext是Servlet与Servlet容器之间直接通信的接口,Servlet容器在启动一个web应用时,会为它创建一个ServletContext对象,每个web应用有唯一的ServletContext对象,同一个web应用的所有Servlet对象共享一个ServletContext,Servlet对象可以通过它来访问容器中的各种资源

存取共享数据方法:

 setAttribute(Stringname,Object obj)

getAttribute(Stringname)


    WebApplicationContext ctx=WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext());
      
       DataSourceds=   ctx.getBean(DataSource.class);
       jRExportService.setDataSource(ds)

这里得到了spring 的webApplicationContext,spring的bean都放在里面,然后直接getBean就可以得到了


通过WebApplicationContextUtils工具类获取ApplicationContext对象.

 

只需要传入application对象即可.

如果是struts2中通过如下方式获取application对象:

Java代码 复制代码  收藏代码
  1. ServletContext application ServletActionContext.getRequest().getSession().getServletContext();  
  2.           

 

 

以下是获取applicationContext对象;

Java代码 复制代码  收藏代码
  1. ApplicationContext context WebApplicationContextUtils.getWebApplicationContext(application);  
  2. UserDao bd (UserDao)context.getBean(spring中配置bean ID的名称);  
public class SiteContextLoaderServlet extends DispatcherServlet {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    private Log log = LogFactory.getLog(SiteContextLoaderServlet.class);
    public static EmailService emailService;

    @Override
    public void init(ServletConfig config) throws ServletException {
        ServletContext servletContext = config.getServletContext();
        WebApplicationContext context = WebApplicationContextUtils
                .getWebApplicationContext(servletContext);
        ApplicationContextUtil.setApplicationContext(context);
        SiteContext.getInstance().contextRealPath = config.getServletContext()
                .getRealPath("/");
        log.info("SiteContext.getInstance().contextRealPath: "+SiteContext.getInstance().contextRealPath);
        // set constants value to app context



        servletContext.setAttribute("appConstant", new AppConstant());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值