JSP中读取ini配置文件
客户居然要求表头内容从配置文件中读出来,无语。。。。。。。。
在网上搜罗了一段代码,改了改,很好用,哈哈,贴上来。。
这个函数的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");
posted on 2011-10-27 14:19 java课程设计例子 阅读(272) 评论(0) 编辑 收藏 举报