zoukankan      html  css  js  c++  java
  • 读取properties文件------servletcontext及dao层读取

    用servletcontext读取properties文件-------1)

    重点在于:InputStream in=this.getServletContext().getResourceAsStream("/WEB-INF/classes/kms.properties");//获取properties内容。      这个地址是编译后的地址src文件夹就会消失,变成在WEB-INF文件夹中的classes里!

     properties位置的几种可能:

    /WEB-INF/classes/kms.properties--------       》

    /WEB-INF/classes/cn/itcaste/kms.properties------>

    /kms.properties------------------------------------------>

    用servletcontext读取properties文件-------2)

    传统的io流属于相对路径,是相对于java虚拟机,目前也就是tomcat里的bin文件夹,所以在用之前要取绝对路径(这个方法的好处在于可以取到资源名字)

    在dao层读取properties文件

    如果读取配置文件不是servlet的话,就只能通过类装载器去读取了(不能传递serletcontext,因为降低层和层的耦合度)

    demo:ServletDemo12

    package cn.itcaste.web.servlet;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import cn.itcaste.web.dao.UserDao;
    
    /**
     * Servlet implementation class ServletDemo12
     */
    @WebServlet("/ServletDemo12")
    public class ServletDemo12 extends HttpServlet {
    	
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		UserDao userdao=new UserDao();
    		userdao.updata();
    	}
    
    	
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		doGet(request, response);
    	}
    
    }
    

     UserDao.java

    /**
     * 
     */
    package cn.itcaste.web.dao;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Properties;
    
    /**
     * @author: snowing
     * @date  : 2017年3月28日
     * 
     */
    //如果读取配置文件不是servlet的话,就只能通过类装载器去读取了(不能传递serletcontext,因为降低层和层的耦合度)
    public class UserDao {
    	public void updata() throws IOException{
    		
    		InputStream in=UserDao.class.getClassLoader().getResourceAsStream("kms.properties");
    		Properties props=new Properties();
    		props.load(in);
    		System.out.println(props.getProperty("url"));
    	}
    
    }
    

     kms.properties

    结果输出:访问:http://localhost:8082/day04/ServletDemo12

    控制台:jdbc:myaql://locahost:3306/test

     因为dao层多个方法都需要读取properties,所以可以用静态代码块(注意配置文件不要太大!)

    读取properties文件细节:如果配置文件properties修改了,要得到实时的数据就不能用类装载器来读取了,

    因为类只加载一次!!!!

    所以用普通的io流来读取,当然一定要得到绝对路径         代码如下:

    既往不恋,未来不迎,当下不杂
  • 相关阅读:
    redis之通信开销限制redis cluster规模的关键因素
    redis解决秒杀问题与数据倾斜
    codis与redis
    脑裂中的数据丢失
    redis主从同步与故障切换的配置项可能出现的问题
    redi事务机制
    redis并发访问的问题之实现分布式锁
    redis的小功能 bitmaps 发布订阅,HyperLogLog GEO LUA
    redis之api学习
    Ubuntu17.04安装WineQQ7.8及微信
  • 原文地址:https://www.cnblogs.com/SnowingYXY/p/6633074.html
Copyright © 2011-2022 走看看