JSP中读取ini配置文件

来源:互联网 发布:淘宝首页文字字体 编辑:程序博客网 时间:2024/06/05 10:27

客户居然要求表头内容从配置文件中读出来,无语。。。。。。。。

在网上搜罗了一段代码,改了改,很好用,哈哈,贴上来。。


这个函数的defalutvalue,是如果在ini文件找不到value,就返回这个。

section:项名。

variable:key的名字。

file:文件名。

<%!
String getHeadString(String file,String section,String variable,String defaultValue){
String strLine, value = "";
BufferedReader bufferedReader = null;
try{
bufferedReader = new BufferedReader(new FileReader(file));
}catch(Exception e){
e.printStackTrace();
}
boolean isInSection = false;
try {
while ((strLine = bufferedReader.readLine()) != null) {

strLine = strLine.trim();
//szPlateInfo = new String(request.getParameter("PlateInfo").getBytes("ISO-8859-1"),"utf-8"); 
//strLine=new String(strLine.getBytes("ISO-8859-1"),"utf-8");
strLine = strLine.split("[;]")[0];
Pattern p;
Matcher m;
p = Pattern.compile("\\[\\s*.*\\s*\\]");
m = p.matcher((strLine));

////先判断这行数据是不是项所在行
if (m.matches()) {
p = Pattern.compile("\\[\\s*" + section + "\\s*\\]");
m = p.matcher(strLine);

////对项名进行判断
if (m.matches()) {
isInSection = true;
} else {
isInSection = false;
}
}

///如果项为真
if (isInSection == true) {
strLine = strLine.trim();
String[] strArray = strLine.split("=");

///不是key=value的形式
if (strArray.length == 1) {
value = strArray[0].trim();
if (value.equalsIgnoreCase(variable)) {
value = "";
return value;
}
} else if (strArray.length == 2) {   //////是key=value的形式
value = strArray[0].trim();
if (value.equalsIgnoreCase(variable)) {
value = strArray[1].trim();
return value;
}
} else if (strArray.length > 2) {
value = strArray[0].trim();
if (value.equalsIgnoreCase(variable)) {
value = strLine.substring(strLine.indexOf("=") + 1).trim();
return value;
}
}
}
} //while end
} catch(Exception e){
e.printStackTrace();
}finally {
}
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
return defaultValue;
}
%>



调用:

注意:如果不在MyEclipse开发,FileReader路径是tomcat的路径,所以要写webapps

head = getHeadString("webapps/Parking/WEB-INF/config.ini", "PrintTableHead","Head", "处理清单");


ini文件中:

[PrintTableHead]
#要打印的表格的表头名称
Head = 处理清单


坦白地讲,这代码逻辑设计得真棒。。。。。。。。。。。。。。。。。。。。。。。。。。


后来我在实际应用中,有时还是发生了按路径找不到配置文件的悲剧,解决办法是这样:

String szWebFilePath = application.getRealPath("/WEB-INF/config.ini");

这样就可以在WEB-INF文件下找到config.ini文件了。


在实际应用中:

在src文件夹下建立ConfigurationFile.java文件,

public final class ConfigurationFile {
 /**
  * 从ini配置文件中读取变量的值
  * @param filePath 配置文件的路径
  * @param section 要获取的变量所在段名称
  * @param variable 要获取的变量名称
  * @param defaultValue 变量名称不存在时的默认值
  * @return 变量的值
  */
public String getValue(String filePath,String section, String variable, String defaultValue) {

……}


在jsp中引入 :<jsp:useBean id="Config" class="bean.ConfigurationFile" scope="session" ></jsp:useBean> 

String szDataProcessServerIP = Config.getValue(szWebFilePath, "DataProcessServer", "DataProcessServerIP","127.0.0.1");
String szDataProcessServerPort = Config.getValue(szWebFilePath, "DataProcessServer", "DataProcessServerPort","8000");






原创粉丝点击