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();
}
}
}
还没有评论,来说两句吧...