package cm.jdbc.dao;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
import cm.beans.Manager;
import cm.util.Path;
public class ManagerDao {
	private Properties p;
	
	//初始化,加载属性文件
	public ManagerDao() {
		reload();
	}
	
	private void reload() {
		try {
			p = new Properties();
			p.load(getClass().getResourceAsStream("/cfg/admin.properties"));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	//更新属性文件
	public boolean updateManager(Manager man) {
		p.setProperty("name", man.getName());
		p.setProperty("pass", man.getPass());
		try {
			String path = Path.getClassesPath() + "cfg/admin.properties";
			p.store(new FileOutputStream(path), null);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			return false;
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}
	//获取属性文件
	public Manager getManager() {
		reload();
		Manager man = new Manager();
		man.setName(p.getProperty("name"));
		man.setPass(p.getProperty("pass"));
		return man;
	}

}

web页面的登陆验证时出了点问题.

我的测试步骤:

1:登陆;

2:更新属性文件.

3:登陆;

问题出现在第三步上,前面均没有错误.属性文件正常修改,再次登陆的时候.新的属性无效.(属性文件确实改变了),必须重起服务器..

有什么解决了办法没?

小弟感激不尽!

 

评论
nusan 2008-04-05
谢谢.我用XML做配置试下.
ecsoftcn 2008-04-05
虽然上面的做法可以达到你的目标,但不是最好的做法.你可以做一个文件监听器,当admin.properties文件发送变动的时候自动通知ManagerDao来重新加载属性文件.推荐使用开源的Jpoll
ecsoftcn 2008-04-05
确保ManagerDao 不是一个单实例的对象,每次都new一个新的ManagerDao供WEB层使用.
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

nusan
搜索本博客
博客分类
最近加入圈子
最新评论