1. 程式人生 > >jsp 獲取properties中常量值

jsp 獲取properties中常量值

因為公司專案有可能部署到不同伺服器賣給不同公司,為了以後修改方便要將靜態資原始檔分離出來
因為不同公司需要樣式可能不一樣,所以就想辦法部署是隻修改配置檔案就能訪問不同資源

現資源目錄
這裡寫圖片描述
首先是我的配置檔案project.properties:

projectName = /zhengxie

以下是我的讀取配置檔案工具類PropertyUtil:

    package com.gene.modules.readConfiguration;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.*;
import
java.util.Properties; /** * jsp讀取配置檔案常量工具類 */ public class PropertyUtil { private static final Logger logger = LoggerFactory.getLogger(PropertyUtil.class); private static Properties props; static{ loadProps(); } synchronized static private void loadProps(){ logger.info("開始載入properties檔案內容......."
); props = new Properties(); InputStream in = null; try { // <!--第一種,通過類載入器進行獲取properties檔案流--> in = PropertyUtil.class.getClassLoader().getResourceAsStream("project.properties"); //<!--第二種,通過類進行獲取properties檔案流--> //in = PropertyUtil.class.getResourceAsStream("/jdbc.properties");
props.load(in); } catch (FileNotFoundException e) { logger.error("jdbc.properties檔案未找到"); } catch (IOException e) { logger.error("出現IOException"); } finally { try { if(null != in) { in.close(); } } catch (IOException e) { logger.error("jdbc.properties檔案流關閉出現異常"); } } logger.info("載入properties檔案內容完成..........."); logger.info("properties檔案內容:" + props); } public static String getProperty(){ String key="projectName"; if(null == props) { loadProps(); } return props.getProperty(key); } public static String getProperty(String key, String defaultValue) { if(null == props) { loadProps(); } return props.getProperty(key, defaultValue); } }

接來就是在訪問樣式前將常量值讀取到前臺,我使用的是jstl自定義標籤:

<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
  version="2.0">

  <description>JSTL 1.1 functions library</description>
  <display-name>JSTL functions sys</display-name>
  <tlib-version>1.1</tlib-version>
  <short-name>fns</short-name>
  <uri>http://java.sun.com/jsp/jstl/functionss</uri>

  <function>
    <description>獲取部署專案名稱</description>
    <name>getProperty</name>
    <function-class>com.gene.modules.readConfiguration.PropertyUtil</function-class>  //獲取配置檔案的工具類
    <function-signature>java.lang.String getProperty()</function-signature>  
    <example>${fns:getProperty()}</example>  
  </function>

</taglib>

這裡是我的引用


<c:set var="ctx" value="${pageContext.request.contextPath}${fns:getAdminPath()}"/>
<c:set var="mctx" value="${pageContext.request.contextPath}/m"/>
<c:set var="ctxStatic" value="${pageContext.request.contextPath}${fns:getProperty()}"/>

${fns:getProperty()引用方法

這裡寫圖片描述

這裡是靜態檔案的引用路徑,這裡就獲得了配置檔案裡的常量