JSP中的读取配置文件问题

xiongxu 2009-12-21 10:19:39
我想在启动tomcat服务器后读取一个配置文件,把配置文件的内容显示在页面上。当我把配置文件改变时。我刷新页面时,页面的内容会随配置文件该变而改变。我采用的Struts框架。。我自己也试过了。。就是当我改变配置文件时。我刷新页面时。我读取的内容还是上次读取的内容。让我郁闷了好久。。请教个位大虾指点下。。
...全文
691 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
君者 2009-12-22
  • 打赏
  • 举报
回复
这个其实很容易。每次刷新时实际上是会向你的后台发送请求。你经过如下步骤即可:
1. 将你的配置文件一次读到内存里。
2. 在你每次读取该内存数据时可以检测该文件是否被修改过,如果修改则将新的内容替换原来内存数据。
3. 将内容展现。
具体的代码思路:
1. 自己写一个文件读取类,封装判断逻辑及内部的属性值。使用File类很容易做到,
2. 使用apache下的配置文件包(具体名字忘了)。
jarvis_java 2009-12-22
  • 打赏
  • 举报
回复
写一个监听类,在Servlet里启动监听器 (Timer类)
监听类比较文件最后修改时间,如果有修改 就刷新
这样可以定义检测
上树的蜗牛儿 2009-12-22
  • 打赏
  • 举报
回复
楼主的思维比较好,不过实现起来比较难。因为你想要的是一种实时监控的效果,而你在程序中读取的配置文件所在的地方是部署到tomcat的webapps目录下的项目目录,而你更改的配置文件所在的位置在eclipse的工作空间中,这就要求你更改配置文件后就要做一个重新部署的操作,这样才能实现你程序中可以实时读取配置文件更新后的内容。但是只更改tomcat安装目录conf下context.xml中<Context reloadable="true">的配置是不够的,虽然它是能监控项目中文件更改后进行重新部署的功能,但是是有一定的限度的,它只对项目中web.xml文件的更改和JSP页面及java代码的更改有效,而且更改java代码有时这个功能也不会起作用(有些BUG),但是有效的范围绝对不包括Struts的配置文件。

不过间接可以实现类楼主的功能,就是在你更改完配置文件后在简单改动一下web.xml配置文件,这样就能让<Context reloadable="true">的重新部署功能生效,以便达到楼主的实时更新的效果。

希望对楼主有帮助。
crazylaa 2009-12-21
  • 打赏
  • 举报
回复
你可以使用单例,启动的时候先load好。然后页面刷新的时候,利用ajax去调一下这个单例里面的refresh方法去重新load配置文件。
BearKin 2009-12-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xiongxu 的回复:]
  这样不会对系统的性能造成很大的影响吗?
[/Quote]

开发模式可以这么用 实际情况就不这么用了 我并不知道你那个配置文件时什么东西 也不知道你修改之后你去怎么读他 但是如果这个配置文件总变的话 你还是换种方式保存吧
xiongxu 2009-12-21
  • 打赏
  • 举报
回复
这样不会对系统的性能造成很大的影响吗?
happygao521 2009-12-21
  • 打赏
  • 举报
回复
你在conf目录下的context.xml文件中的<Context>中添加reloadable="true" 如下:
<Context reloadable="true"> 应该就可以了!!!
sean1203 2009-12-21
  • 打赏
  • 举报
回复
有点难
因为在缓存里面东西你不好这样搞的
最后不行的话
只能改设计了

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧