1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java 获取webcontent目录_java web项目获取src和WebContent目录下的配置文件

java 获取webcontent目录_java web项目获取src和WebContent目录下的配置文件

时间:2021-03-04 11:55:14

相关推荐

java 获取webcontent目录_java web项目获取src和WebContent目录下的配置文件

1.首先上目录结构:

2.部署到tomcat,在servlet中测试,测试代码:

package test;

import java.io.IOException;

import java.io.InputStream;

import java.util.Properties;

import java.util.ResourceBundle;

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 utils.ReadFile;

import utils.readFile.SysConfig;

/**

* Servlet implementation class testEvery

*/

@WebServlet("/testEvery")

public class testEveryServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet()

*/

public testEveryServlet() {

super();

// TODO Auto-generated constructor stub

}

/**

* 访问url:http://localhost:8080/demoProj/testEveryServlet

*/

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

response.getWriter().append("Served at: ").append(request.getContextPath());

String path = request.getSession().getServletContext().getRealPath("/config/sysconfig.properties");

System.out.println("doGet读取到的/WEB-INF/config/sysconfig.properties:path:"+path);

String url = request.getSession().getServletContext().getRealPath("/WEB-INF/config/config.properties");

System.out.println("doGet读取到的/WEB-INF/config/config.properties:url:"+url);

/**

* 结果:

* doGet:path:D:\tomcat7\wtpwebapps\demoProj\config\sysconfig.properties

* doGet:url:D:\tomcat7\wtpwebapps\demoProj\WEB-INF\config\config.properties

*/

//只能获取src下面的

InputStream in = this.getServletContext().getResourceAsStream("/WEB-INF/classes/config/test.properties");

Properties prop = new Properties(); //map

prop.load(in);

String url1 = prop.getProperty("url");

System.out.println("获取到的url1:"+url1);//获取到的url1:

//不可获取

InputStream in2 = this.getServletContext().getResourceAsStream("/WEB-INF/config.properties");

Properties prop2 = new Properties(); //map

prop.load(in2);

String url2 = prop2.getProperty("url");

System.out.println("获取到的url2:"+url2);//获取到的url2:null

//不可获取

InputStream in3 = this.getServletContext().getResourceAsStream("/webcontent.properties");

Properties prop3 = new Properties(); //map

prop.load(in3);

String url3 = prop3.getProperty("url");

System.out.println("获取到的url3:"+url3);//获取到的url3:null

//不可获取

InputStream in4 = this.getServletContext().getResourceAsStream("/config/wcc.properties");

Properties prop4 = new Properties(); //map

prop.load(in4);

String url4 = prop4.getProperty("url");

System.out.println("获取到的url4:"+url4);//获取到的url4:null

// 读取src下config包中的testJava.java

//InputStream in = ReadFile.class.getResourceAsStream("/config/testJava.java");//in为null

//byte[] a=new byte[100];

//in.read(a, 0, 900);

//System.out.println("读取src下config包中的testJava.java的输入流in的内容toString:"+in.toString());

//System.out.println("读取到的a:"+a);

String fileName3 = ReadFile.class.getResource("/config/test.properties").getFile();

System.out.println("读取src下config包中的test.properties:"+fileName3);

//输出:读取src下config包中的test.properties:/D:/tomcat7/wtpwebapps/demoProj/WEB-INF/classes/config/test.properties

//in.close();

// 读取src下 基名为myproperties的properties文件,获取其中name配置值

String value = ResourceBundle.getBundle("myproperties").getString("name");

System.out.println("获取到的myproperties.properties的值value:"+value);

//输出:获取到的myproperties.properties的值value:myname

// 读取src下myproperties.properties

InputStream in1 = ReadFile.class.getResourceAsStream("/myproperties.properties");

Properties properties = new Properties();

properties.load(in1);

String value2 = properties.getProperty("name"); // 获得name属性

System.out.println("获取到的myproperties.properties的值value2:"+value2);

//获取到的myproperties.properties的值value2:myname

//读取src下的

String sensitiveWordsServerPath1 = SysConfig.getSysParam("sensitiveWords_server_path1");

System.out.println("获取的sensitiveWordsServerPath1:"+sensitiveWordsServerPath1);

//获取的sensitiveWordsServerPath1:/datacms/htdocs/html/cctv/sensitiveWords/sws.xlsx

//读取src下的

String pp = prop("sensitiveWords_server_path1");

System.out.println("pp:"+pp);//pp:/datacms/htdocs/html/cctv/sensitiveWords/sws.xlsx

}

public String prop(String url){

InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("config/sysconfig.properties");

Properties p = new Properties();

try {

p.load(inputStream);

} catch (Exception e) {

e.printStackTrace();

}

System.out.println("p:"+p);

return p.getProperty(url);

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

doGet(request, response);

String path = request.getSession().getServletContext().getRealPath("/config/sysconfig.properties");

System.out.println("doPost:path:"+path);

}

}

网上大量的读取配置文件的都是从src目录下,只有以下是从WebContent目录下读取的:

String path = request.getSession().getServletContext().getRealPath("/config/sysconfig.properties");

System.out.println("doGet读取到的/WEB-INF/config/sysconfig.properties:path:"+path);

String url = request.getSession().getServletContext().getRealPath("/WEB-INF/config/config.properties");

System.out.println("doGet读取到的/WEB-INF/config/config.properties:url:"+url);

/**

* 结果:

* doGet:path:D:\tomcat7\wtpwebapps\demoProj\config\sysconfig.properties

* doGet:url:D:\tomcat7\wtpwebapps\demoProj\WEB-INF\config\config.properties

*/

另:目前还没发现可以不启动tomcat,直接从当前项目WebContent目录下读取配置文件的简便方法。(不是从硬盘目录下,有些方法很复杂),有解决方法的同学请贡献出来。

参考:

/qhwc/article/details/45824815

/wjl_mgqs/article/details/7554741

/duoting/p/4141044.html

/mar_ljh/article/details/39693979

附上SysConfig.java

package utils.readFile;

import java.io.FileOutputStream;

import java.io.OutputStream;

import java.util.Enumeration;

import java.util.HashMap;

import java.util.Map;

import java.util.Properties;

import org.apache.log4j.Logger;

import com.alibaba.fastjson.JSONArray;

import com.alibaba.fastjson.JSONObject;

public class SysConfig {

private static Logger logger = Logger.getLogger(SysConfig.class);

/**

* 将本类定义为singleton类

*/

private SysConfig(){

}

private static SysConfig mConfig= new SysConfig();

private Mapparams = null;

private static String CONFIG_FILE="/config/sysconfig.properties";

private static String CONFIG_FILE_PATH = SysConfig.class.getClassLoader().getResource("").getPath().substring(1) + CONFIG_FILE;

public static String getSysParam(String param) {

return getAllParams().get(param);

}

public static MapgetAllParams() {

synchronized(mConfig){

if(mConfig.params==null){

mConfig.readConfig();

}

}

System.out.println("mConfig.params:"+mConfig.params);

return mConfig.params;

}

/**

* 重载配置文件

*/

public static void reloadConfig(JSONArray array) {

try{

Properties props = new Properties();

for(int i=0;i();

Enumeration e = props.propertyNames();

while(e.hasMoreElements()) {

String key = (String)e.nextElement();

String value = props.getProperty(key);

params.put(key, value);

}

if(isLocal()) {

params.put("root_path", params.get("root_path_local"));

params.put("root_path_issue_temp", params.get("root_path_issue_temp_local"));

params.put("root_path_issue", params.get("root_path_issue_local"));

} else {

params.put("root_path", params.get("root_path_server"));

params.put("root_path_issue_temp", params.get("root_path_issue_temp_server"));

params.put("root_path_issue", params.get("root_path_issue_server"));

}

}

/**

* 判断系统类型

* @return:true为windows系统

*/

public static boolean isLocal() {

if (System.getProperty("os.name").contains("Windows")) {

return true;

}

logger.info("os is : " + System.getProperty("os.name"));

return false;

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。