需要做一个参数初始化类,当web应用被加载时从数据库里取出相关的参数设置

,并把这些参数放置到application里,jsp页面可以从中取出。

1.在web.xml中配置:

<servlet>
        <servlet-name>Dispatcher</servlet-name>
        <servlet-

class>org.springframework.web.servlet.DispatcherServlet</servlet-

class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/Dispatcher-

servlet.xml,/WEB-INF/applicationContext.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

<servlet>
        <servlet-name>context</servlet-name>
        <servlet-

class>org.springframework.web.context.ContextLoaderServlet</servlet-

class>
        <load-on-startup>2</load-on-startup>
    </servlet>

<servlet>
        <servlet-name>InitialServlet</servlet-name>
        <servlet-

class>com.anylinks.billreturn.Web.InitialServlet</servlet-class>
        <load-on-startup>3</load-on-startup>
    </servlet>

2.servlet代码

package com.anylinks.billreturn.Web;

import java.util.Collection;
import java.util.Iterator;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.anylinks.billreturn.BO.SysParameter;
import com.anylinks.billreturn.Service.ISysParameterService;

/*
 * 初始化Servlet,从数据库中读取参数表,保存在application里
 */
public class InitialServlet extends HttpServlet {

private Log log = LogFactory.getLog(this.getClass());

private ISysParameterService sysParameterService;

/**
     * 从数据库中读取参数表,保存在application里
     *
     * @throwsServletException
     *             if an error occure
     */
    public void init() throws ServletException {

log.debug("start to intitail ");
        //获取WebApplicationContext
        ServletContext application = getServletContext();
        WebApplicationContext wac = WebApplicationContextUtils
                .getWebApplicationContext

(application);

//调用sysParameterService取出所有的系统参数
        sysParameterService = (ISysParameterService) wac
                .getBean("sysParameterService");

Collection paras =

sysParameterService.findAllParameters();
        log.debug("sys parameters size:" + paras.size());

//把参数加到application里去
        for (Iterator iter = paras.iterator(); iter.hasNext

();) {
            SysParameter para = (SysParameter) iter.next

();

application.setAttribute(para.getParaName(),

para.getParaValue());

log.debug("initial parameter: key=" +

para.getParaName()
                    + ", value=" +

para.getParaValue());

}
    }

}

需要注意的地方:
1.仅仅配置一个DispatcherServlet是不够的,我开始就是这样,然后再servlet

里面怎么取都取不到WebApplicationContext 。配置上

org.springframework.web.context.ContextLoaderServlet之后才能取的到

WebApplicationContext 。
2.注意一下<load-on-startup>3</load-on-startup>,因为用到spring的

hibernateDaoSupport,所以必须在spring加载完之后再加载InitialServlet.

从servlet中获取spring的WebApplicationContext相关推荐

  1. 在Servlet中获取Spring注解的bean

    最近由于项目中出现了Servlet调用Spring的bean,由于整个项目中所有的bean均是注解方式完成,如@Service,@Repository,@Resource等,但是Spring的容器管理 ...

  2. 在servlet中或者在filter中获取spring容器中的bean

    1 配置spring文件 <bean id="hibernateTemplate" class="org.springframework.orm.hibernate ...

  3. 【spring】在servlet中注入spring的bean,servlet容器和spring容器

    一.Servlet容器 Servlet的整个生命周期好象都是由Servlet容器来处理的. 如果把它硬放到Spring容器中去创建,Servlet对象是可被Spring容器建出来,但Servlet容器 ...

  4. 【SpringBoot】在普通类中获取spring容器中的bean

    这段时间公司搞封闭开发,做一个联通总部的客服系统项目,是基于springboot的.在开发工程中遇到一个页面datagrid数据排序的功能,因为有多个表的数据都要用到排序功能,于是我就写了一个排序功能 ...

  5. 在普通类中获取spring容器中的bean

    在普通类中获取spring容器中的bean 1.工具类 package com.itheima.hchat.util;import org.springframework.beans.BeansExc ...

  6. Spring 中获取servletContext及WebApplicationContext以及applicationContext三者之间的关系

    spring中获取servletcontext 代码如下,关键是要知道 contextLoader的强大!其它很简单 WebApplicationContext webApplicationConte ...

  7. 在ServletContextListener实现类中获取spring注入对象

    由于项目需要,需在ServletContextListener监听接口实现类中调用spring注入的对象,以获取系统初始化参数.代码如下: [java] view plain copy import  ...

  8. spring初始化在ServletContextListener实现类中获取spring注入对象

    查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧! 由于项目须要,需在ServletContextListener监听接口实现类中调用sprin ...

  9. java-在应用中获取spring定义的bean

    因为写了些bean作为quartz的任务用spring配置了,但有些时候需要在别的类中使用这些bean,没有太仔细去研究spring,依稀记得有个getBean,到网上g了一把,发现方法不止一种,选了 ...

最新文章

  1. PLSQL:[1]plsql中文乱码,显示问号
  2. 图解HTTP学习记录(一)
  3. 【原创】分布式之大话CAP
  4. Java中常见的日志框架
  5. Effective Java之返回零长度的数组或者集合,而不是null(四十三)
  6. mysql免安装5.7.17_mysql免安装5.7.17数据库配置
  7. 计算机用户被锁定如何解除,win10账户被锁定了怎么解除
  8. java manager 如何使用_java - Android:如何使用AlarmManager
  9. 恶意软件利用Windows故障诊断平台传播
  10. PHP面向对象知识点
  11. YY频道美化,模板修改工具【免费】可以闪动
  12. Uva 1151 Buy or Build 二进制枚举+最小生成树
  13. 使用f031的SPI单引脚(MOSI)+DMA实现WS2812B三色灯的级联控制
  14. MySQL数据库编程--函数
  15. 如何自制一款tlc颗粒的固态硬盘
  16. word2016如何加载endnote x7,如何连接word和endnote
  17. PEST分析模型(转载)
  18. 【UE4源代码观察】尝试调试UBT
  19. R树:处理空间存储问题
  20. 【JVM17】垃圾回收器

热门文章

  1. Python 常用系统模块整理
  2. 用java编程实现集合的交、并、差和补运算
  3. MySQL备份与恢复-mysqldump备份与恢复
  4. CentOS6.8 安装node.js npm
  5. android listview和simpleadapter 给itme 中的控件添加事件
  6. Jenkins 安装与使用--实例
  7. 《CLR via C#》之线程处理——线程基础
  8. HOJ 1640 Mobile Phone
  9. 掌握ES6/ES2015核心内容
  10. iOS开发常用的RGB色值和宏