<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Heck's  Blog]]></title> 
<link>https://www.heckjj.com/index.php</link> 
<description><![CDATA[一瞬间的决定，往往可以改变很多，事实上，让自己成功的往往不是知识，是精神！ 如果你总是为自己找借口，那只好让成功推迟。执行力，今天！]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Heck's  Blog]]></copyright>
<item>
<link>https://www.heckjj.com/post//</link>
<title><![CDATA[ Java Web系统初始化时从数据库中加载系统参数（Mybatis，spring）]]></title> 
<author>Heck &lt;@hecks.tk&gt;</author>
<category><![CDATA[Web开发]]></category>
<pubDate>Wed, 22 Mar 2017 01:32:19 +0000</pubDate> 
<guid>https://www.heckjj.com/post//</guid> 
<description>
<![CDATA[ 
	有一些特殊情况，需要在系统初始化时加载一些配置属性做为系统参数到本地文本中<br/>web.xml<br/><textarea name="code" class="xml" rows="15" cols="100">
&nbsp;&nbsp;<listener>
&nbsp;&nbsp;&nbsp;&nbsp;<listener-class>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.springframework.web.context.ContextLoaderListener
&nbsp;&nbsp;&nbsp;&nbsp;</listener-class>
&nbsp;&nbsp;</listener>
&nbsp;&nbsp;
&nbsp;&nbsp;<!-- 系统初始化从数据库中配置表加载数据到配置文件中，必须写在spring的监听器下方，否则bean对象未初始化 -->
&nbsp;&nbsp;<listener>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<listener-class>com.actions.common.listener.InitConfig</listener-class>&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;</listener>
</textarea><br/><br/><br/>InitConfig.java<br/><br/><textarea name="code" class="java" rows="15" cols="100">
package com.actions.common.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.dao.impl.ConfigDaoImpl;
import com.sun.org.apache.commons.logging.Log;
import com.sun.org.apache.commons.logging.LogFactory;

/**
 * 功能：初始化配置文件，从数据库中将配置文件中的数据写到本地
 * @author Adam
 *
 */
public class InitConfig implements ServletContextListener&#123;
&nbsp;&nbsp;private final Log log = LogFactory.getLog(getClass());
&nbsp;&nbsp;
&nbsp;&nbsp;public void contextDestroyed(ServletContextEvent sce) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;log.info("系统停止...");
&nbsp;&nbsp;&#125;

&nbsp;&nbsp;public void contextInitialized(ServletContextEvent sce) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;log.info("System initialization Start...");
&nbsp;&nbsp;&nbsp;&nbsp;WebApplicationContext rwp = WebApplicationContextUtils.getRequiredWebApplicationContext(sce.getServletContext());
&nbsp;&nbsp;&nbsp;&nbsp;ConfigDaoImpl configDaoImpl= (ConfigDaoImpl)rwp.getBean("configDaoImpl");
&nbsp;&nbsp;&nbsp;&nbsp;configDaoImpl.initConfig();
&nbsp;&nbsp;&nbsp;&nbsp;log.info("System initialization End...");&nbsp;&nbsp;
&nbsp;&nbsp;&#125;

&#125;

</textarea><br/><br/>spring.xml<br/><textarea name="code" class="xml" rows="15" cols="100">
&nbsp;&nbsp;<bean id="configDaoImpl" class="com.dao.impl.ConfigDaoImpl">
&nbsp;&nbsp;&nbsp;&nbsp;<property name="sqlMapClient" ref="sqlMapClient"/>
&nbsp;&nbsp;</bean>
</textarea><br/><br/>ConfigDaoImpl.java<br/><br/><textarea name="code" class="java" rows="15" cols="100">
package com.dao.impl;

import java.io.File;
import java.util.List;
import java.util.Properties;

import org.springframework.transaction.annotation.Transactional;

import com.pojos.MyConfig;
import com.util.FileUtils;

/**
 * 功能：从数据库中将配置文件信息写入本地。
 * @author Adam
 *
 */
@Transactional
public class ConfigDaoImpl extends BaseDaoImpl&#123;
&nbsp;&nbsp;String profilepath = ConfigDaoImpl.class.getClassLoader().
&nbsp;&nbsp;getResource("").getPath() + "config.txt";
&nbsp;&nbsp;
&nbsp;&nbsp;Properties props = new Properties();
&nbsp;&nbsp;
&nbsp;&nbsp;/**
&nbsp;&nbsp; * 功能：初始化配置文件
&nbsp;&nbsp; */
&nbsp;&nbsp;public void initConfig()&#123;
&nbsp;&nbsp;&nbsp;&nbsp;try &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;profilepath = profilepath.replaceAll("%20", " ");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File outputFile = new File(profilepath);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;outputFile.createNewFile();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//把所有可用值都写入文本
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List list = this.getAllKeyAndValue();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(list != null && list.size()>0)&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String content = "";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int i =0 ; i < list.size(); i++ )&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyConfig con = (MyConfig) list.get(i);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(content.equals(""))&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content = con.getCon_key()+"="+con.getCon_value();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;else&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content = content + "&#92;r" + con.getCon_key()+"="+con.getCon_value();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileUtils.writeFileUTF8(content,profilepath);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&#125; catch (Exception e) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&#125;
&nbsp;&nbsp;
&nbsp;&nbsp;public String getValueByKey(String con_key) throws Exception &#123;
&nbsp;&nbsp;&nbsp;&nbsp;return (String) super.findByObj("MyConfig.getValueByKey", con_key);
&nbsp;&nbsp;&#125;
&nbsp;&nbsp;
&nbsp;&nbsp;public List getAllKeyAndValue() throws Exception&#123;
&nbsp;&nbsp;&nbsp;&nbsp;return super.findAll("MyConfig.getAllKeyAndValue");
&nbsp;&nbsp;&#125;
&#125;
</textarea><br/><br/>FileUtils.java<br/><br/><br/><textarea name="code" class="java" rows="15" cols="100">
package com.util;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

/**
 * 文件工具类
 * FileUtils
 * @version 1.0
 */
public class FileUtils &#123;
&nbsp;&nbsp;static String root_path = FileUtils.class.getClassLoader().
&nbsp;&nbsp;getResource("").getPath() + "config.txt";
&nbsp;&nbsp;
&nbsp;&nbsp;public static String getValueByKey(String con_key)&#123;
&nbsp;&nbsp;&nbsp;&nbsp;try &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root_path = root_path.replaceAll("%20", " ");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File file = new File(root_path);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileInputStream fis = new FileInputStream(file);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedReader br = new BufferedReader(new InputStreamReader(fis,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"UTF-8"));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String line = br.readLine();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (line!= null) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(line.indexOf(con_key)>=0)&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String [] arr = line.split("=");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(arr[0].equals(con_key))&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return arr[1];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;else&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line = br.readLine();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;br.close();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fis.close();
&nbsp;&nbsp;&nbsp;&nbsp;&#125; catch (Exception e) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;return "";
&nbsp;&nbsp;&#125;
&#125;
</textarea><br/><br/>Constant.java<br/><br/><textarea name="code" class="java" rows="15" cols="100">
public interface Constant &#123;
&nbsp;&nbsp;public static final String SYSTEM_ROOT = FileUtils.getValueByKey("SYSTEM_ROOT");
&#125;
</textarea>
]]>
</description>
</item><item>
<link>https://www.heckjj.com/post//#blogcomment</link>
<title><![CDATA[[评论]  Java Web系统初始化时从数据库中加载系统参数（Mybatis，spring）]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://www.heckjj.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>