这个listner的作用就是监听web.xml中的配置para-name为webAppRootKey的值,比如我的web应用为tsts,那么我配置

这样一个

  1. <context-param>
  2. <param-name>webAppRootKey</param-name>
  3. <param-value>tsts.root</param-value>
  4. </context-param>

,然后再配置这样一个监听器:

  1. <listener>
  2. <listener-class>
  3. org.springframework.web.util.WebAppRootListener
  4. </listener-class>
  5. </listener>

。这个监听器就会在web上下文初始化的时候,调用webUtil的对应方法,首先获取到param-name对应的param-value ,然后,根据传递进去的ServletContext对象得到web的物理路径:String root = servletContext.getRealPath("/");

接着把这个param-value作为key,root作为value放到system中System.setProperty(key, root);

然后再web中可以用 System.get.....就可以得到web的跟目录的物理路径了。

之前我的做法是用一个filter,在filter的init中调用String root = servletContext.getRealPath("/");,然后再去设置对应一个常量类文件的属性。做法差不多,但是spring的做法更可以借鉴!

Spring中的WebAppRootListener相关推荐

  1. Spring中配置DataSource数据源的几种选择

    Spring中配置DataSource数据源的几种选择 在Spring框架中有如下3种获得DataSource对象的方法: 从JNDI获得DataSource. 从第三方的连接池获得DataSourc ...

  2. 详解设计模式在Spring中的应用

    设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆. 今天,螃蟹在IT学习者网站就设计模式的内在价值做一番探讨,并以spring为例进行讲解,只有领略了 ...

  3. Spring中利用applicationContext.xml文件实例化对象和调用方法

    Spring中实例化对象和调用方法入门 1.jar包和xml的准备 已上传至百度云盘,链接: https://pan.baidu.com/s/1CY0xQq3GLK06iX7tVLnp3Q 提取码: ...

  4. 【spring 5】AOP:spring中对于AOP的的实现

    在前两篇博客中,介绍了AOP实现的基础:静态代理和动态代理,这篇博客介绍spring中AOP的实现. 一.采用Annotation方式 首先引入jar包:aspectjrt.jar && ...

  5. Spring中WebApplicationContext

    ApplicationContext是Spring的核心,Context我们通常解释为上下文环境,我想用"容器"来表述它更容易理解一 些,ApplicationContext则是& ...

  6. Spring中使用Schedule调度

    在spring中两种办法使用调度,以下使用是在spring4.0中. 一.基于application配置文件,配置入下: 1 <bean id="jobDetail" cla ...

  7. Spring中SmartLifecycle和Lifecycle的作用和区别

    欢迎关注方志朋的博客,回复"666"获面试宝典 本文基于SpringBoot 2.5.0-M2讲解Spring中Lifecycle和SmartLifecycle的作用和区别,以及如 ...

  8. 惊呆了,Spring中竟然有12种定义bean的方法

    前言 在庞大的 Java 技术体系中,Spring 有着举足轻重的地位,它给每位开发者带来了极大的便利和惊喜. 我们都知道 Spring 是创建和管理bean的工厂,它提供了多种方式定义 bean,能 ...

  9. MyBatis 和 Spring 中的 23 种设计模式,真香,拿去用吧!

    学习源码框架,为什么要从Mybatis框架入手?在 MyBatis 3.5.1 这个版中有 968 个类. 2770 个字段. 8422个方法. 42504 行代码. 186428个指令码.其源码体量 ...

  10. Spring 中的bean 是线程安全的吗?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:myseries cnblogs.com/myser ...

最新文章

  1. python教程:使用生成器重构提取数据方法来优化爬虫代码
  2. Elasticsearch聚合深入详解——对比Mysql实现
  3. python去重且顺序不变_Python实现嵌套列表去重方法示例
  4. vue 修改模板{{}}标签_vue-admin-template模板添加tagsview
  5. python3打印不换行
  6. tplinkl路由器跨vlan访问_路由器与三层交换机的区别:谁才是最好的选择?
  7. NOIP2018普及T2暨洛谷P5016 龙虎斗
  8. 树莓派 HC-SRO4超声波测距模块的使用
  9. .NET Framework 版本选择参考
  10. qq微信连不上服务器6,手机wifi连接上了只有QQ微信能联网其他软件都上不了网是什么原因...
  11. 74ls20设计半加器_数字电子技术实验练习内容
  12. 打印服务器后台程序没有运行,打印后台程序服务没有运行
  13. idea的设置,导致list长度只有1000
  14. chrome主页被篡改为360导航
  15. 计算机无法找到输出设备,电脑没声音找不到输出设备怎么办
  16. 用计算机rap歌词,Rap歌词
  17. 不看绝对血亏!mysql下载安装教程win10
  18. yahoo,hotmail邮箱无法收到邮件
  19. “人生搜索引擎” # Rewind
  20. 关于MOS管栅极和栅介质(氧化物)的材料选择

热门文章

  1. 远程机器上无法用Assembly.Load(path).CreateInstance(ClassName)?
  2. springboot 集成 freemarker
  3. 记一次RAID阵列的迁移经历
  4. 关于filter用户授权的例子
  5. Python的一些单行代码(摘抄)
  6. easyui源码翻译1.32--Droppable(放置)
  7. 提速30倍!这个加速包让Python代码飞起来
  8. 那些月入5000的人,凭什么比你更早买房买车?
  9. 聊聊 print 的前世今生
  10. OpenCV 学习笔记 04 深度估计与分割——GrabCut算法与分水岭算法