Java 读取配置文件Properties

 Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集。不过Properties有特殊的地方,就是它的键和值都是字符串类型。
 
代码如下:

package cn.zhangheng.filter;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Properties;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;

/**
 * 我的过滤器
 * 
 * @author zhangheng
 * @date 2016年8月16日上午10:14:40
 *
 */
public class MyFilter implements Filter {
    public static Logger LOG = Logger.getLogger(MyFilter.class);
    public static Properties p = new Properties();

    public void destroy() {
        // 只有在web服务器销毁的时候才会执行
        LOG.info("结束过滤。。。");
        System.out.println("-----只执行一次---");
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
            throws IOException, ServletException {
        LOG.info("执行过滤。。。");
        String servletContextPath = request.getServletContext().getContextPath();
        System.out.println(servletContextPath);
        HttpServletRequest request1 = (HttpServletRequest) request;
        String url = request1.getRequestURI();
        if (!url.contains("login.do")) {
            filterChain.doFilter(request, response);
        }
    }

    /*
     * 初始化时执行 可以获取web.xml中的参数 (non-Javadoc)
     * 
     * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
     */
    public void init(FilterConfig filterConfig) throws ServletException {
        LOG.info("初始化过滤。。。");
        String filterName = filterConfig.getFilterName();
        String param1 = filterConfig.getInitParameter("firstParamName");
        String param2 = filterConfig.getInitParameter("secondParamName");
        System.out.println("filterName = " + filterName + ";param1 = " + param1 + ";param2 = " + param2);
        Enumeration<String> s = filterConfig.getInitParameterNames();
        while (s.hasMoreElements()) {
            String string = (String) s.nextElement();
            System.out.println(string);
        }
        // 获取xml
        InputStream in = MyFilter.class.getResourceAsStream("/para.properties");
        try {
            p.load(in);//这个方法可以从.properties属性文件对应的文件输入流中,加载属性列表到Properties类对象
            LOG.info(p.getProperty("name") + p.getProperty("age"));//这两个方法是分别是获取和设置属性信息。

            // 追加
            FileOutputStream out = new FileOutputStream("/b.properties", true);
            p.setProperty("phone1", "1232451");
            p.store(out, "追加信息");//这个方法将Properties类对象的属性列表保存到输出流中。如果comments不为空,保存后的属性文件第一行会是#comments,表示注释信息;如果为空则没有注释信息。注释信息后面是属性文件的当前保存时间信息。
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            p.clone();
        }
    }

}

猜你喜欢

转载自blog.csdn.net/forever_insist/article/details/52217901