﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Bob-文章分类-IO</title><link>http://www.blogjava.net/keweibo/category/44236.html</link><description>As long as you are there to lead me ,I won't lose my way </description><language>zh-cn</language><lastBuildDate>Tue, 09 Mar 2010 19:14:12 GMT</lastBuildDate><pubDate>Tue, 09 Mar 2010 19:14:12 GMT</pubDate><ttl>60</ttl><item><title>ServletContext Properties 操作文件</title><link>http://www.blogjava.net/keweibo/articles/314996.html</link><dc:creator>KE</dc:creator><author>KE</author><pubDate>Tue, 09 Mar 2010 14:19:00 GMT</pubDate><guid>http://www.blogjava.net/keweibo/articles/314996.html</guid><wfw:comment>http://www.blogjava.net/keweibo/comments/314996.html</wfw:comment><comments>http://www.blogjava.net/keweibo/articles/314996.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/keweibo/comments/commentRss/314996.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/keweibo/services/trackbacks/314996.html</trackback:ping><description><![CDATA[<p>package com.apress.dwrprojects.instamail;</p>
<p><br />
import java.io.File;<br />
import java.io.FileOutputStream;<br />
import java.io.InputStream;<br />
import java.io.IOException;<br />
import java.util.Properties;<br />
import javax.servlet.ServletContext;<br />
import org.apache.commons.logging.Log;<br />
import org.apache.commons.logging.LogFactory;</p>
<p><br />
/**<br />
&nbsp;* This class deals with maintaining options, including the e-mail account.<br />
&nbsp;*<br />
&nbsp;* @author &lt;a href="mailto:fzammetti@omnytex.com"&gt;Frank W. Zammetti&lt;/a&gt;.<br />
&nbsp;*/<br />
public class OptionsManager {</p>
<p><br />
&nbsp; /**<br />
&nbsp;&nbsp; * Log instance.<br />
&nbsp;&nbsp; */<br />
&nbsp; private static Log log = LogFactory.getLog(OptionsManager.class);</p>
<p><br />
&nbsp; /**<br />
&nbsp;&nbsp; * File name of the options file.<br />
&nbsp;&nbsp; */<br />
&nbsp; private static final String optionsFilename = "options.properties";</p>
<p><br />
&nbsp; /**<br />
&nbsp;&nbsp; * This method retrieves the options and returns them.&nbsp; If no<br />
&nbsp;&nbsp; * optionsFilename file is found, a 'blank' DTO is returned.<br />
&nbsp;&nbsp; *<br />
&nbsp;&nbsp; * @param&nbsp; sc ServletContext associates with the request.<br />
&nbsp;&nbsp; * @return&nbsp;&nbsp;&nbsp; An OptionsDTO containing all the stored options.<br />
&nbsp;&nbsp; */<br />
&nbsp; public OptionsDTO retrieveOptions(ServletContext sc) {</p>
<p>&nbsp;&nbsp;&nbsp; // Instantiate an OptionsDTO, and by default assume it will be configured.<br />
&nbsp;&nbsp;&nbsp; // This means the application has already been configured for use.&nbsp; This<br />
&nbsp;&nbsp;&nbsp; // affects what the user can do when the app is accessed initially.<br />
&nbsp;&nbsp;&nbsp; OptionsDTO options = new OptionsDTO();<br />
&nbsp;&nbsp;&nbsp; options.setConfigured(true);</p>
<p>&nbsp;&nbsp;&nbsp; // Read in the options.<br />
&nbsp;&nbsp;&nbsp;<span style="color: red">&nbsp;InputStream isFeedFile =<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sc.getResourceAsStream("/WEB-INF/" + optionsFilename);</span><br />
&nbsp;&nbsp;&nbsp; <span style="color: red">Properties props = new Properties();<br />
</span>&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (isFeedFile == null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new IOException(optionsFilename + " not found");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<span style="color: red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.load(isFeedFile);</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; isFeedFile.close();<br />
&nbsp;&nbsp;&nbsp; } catch (IOException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log.info("No " + optionsFilename + " file, a blank DTO will " +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "be returned.");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Make sure the OptionsDTO is set as unconfigured so that when the<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // index.jsp page is loaded, all the user will be allowed to do is go to<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // the Options views.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; options.setConfigured(false);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("pop3Server", "");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("pop3ServerRequiresLogin", "false");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("pop3Username", "");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("pop3Password", "");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("smtpServer", "");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("smtpServerRequiresLogin", "false");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("smtpUsername", "");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("smtpPassword", "");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("fromAddress", "");<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; // Populate OptionsDTO from options Properties.<br />
&nbsp;&nbsp;&nbsp; options.setPop3Server(props.getProperty("pop3Server"));<br />
&nbsp;&nbsp;&nbsp; options.setPop3ServerRequiresLogin(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.getProperty("pop3ServerRequiresLogin"));<br />
&nbsp;&nbsp;&nbsp; options.setPop3Username(props.getProperty("pop3Username"));<br />
&nbsp;&nbsp;&nbsp; options.setPop3Password(props.getProperty("pop3Password"));<br />
&nbsp;&nbsp;&nbsp; options.setSmtpServer(props.getProperty("smtpServer"));<br />
&nbsp;&nbsp;&nbsp; options.setSmtpServerRequiresLogin(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.getProperty("smtpServerRequiresLogin"));<br />
&nbsp;&nbsp;&nbsp; options.setSmtpUsername(props.getProperty("smtpUsername"));<br />
&nbsp;&nbsp;&nbsp; options.setSmtpPassword(props.getProperty("smtpPassword"));<br />
&nbsp;&nbsp;&nbsp; options.setFromAddress(props.getProperty("fromAddress"));</p>
<p>&nbsp;&nbsp;&nbsp; return options;</p>
<p>&nbsp; } // End retrieveOptions().</p>
<p><br />
&nbsp; /**<br />
&nbsp;&nbsp; * This method saves the options.<br />
&nbsp;&nbsp; *<br />
&nbsp;&nbsp; * @param&nbsp; pop3Server&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The POP3 server address.<br />
&nbsp;&nbsp; * @param&nbsp; pop3ServerRequiresLogin Does the POP3 server require login?<br />
&nbsp;&nbsp; * @param&nbsp; pop3Username&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The POP3 username.<br />
&nbsp;&nbsp; * @param&nbsp; pop3Password&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The POP3 password.<br />
&nbsp;&nbsp; * @param&nbsp; smtpServer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The SMTP server address.<br />
&nbsp;&nbsp; * @param&nbsp; smtpServerRequiresLogin Does the SMTP server require login?<br />
&nbsp;&nbsp; * @param&nbsp; smtpUsername&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The SMTP username.<br />
&nbsp;&nbsp; * @param&nbsp; smtpPassword&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The SMTP password.<br />
&nbsp;&nbsp; * @param&nbsp; fromAddress&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; From address for outgoing messages.<br />
&nbsp;&nbsp; * @param&nbsp; sc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServletContext associated with the request.<br />
&nbsp;&nbsp; * @return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A message saying the save was OK.<br />
&nbsp;&nbsp; */<br />
&nbsp; public String saveOptions(String pop3Server, String pop3ServerRequiresLogin,<br />
&nbsp;&nbsp;&nbsp; String pop3Username, String pop3Password, String smtpServer,<br />
&nbsp;&nbsp;&nbsp; String smtpServerRequiresLogin, String smtpUsername,<br />
&nbsp;&nbsp;&nbsp; String smtpPassword, String fromAddress, ServletContext sc) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Log what we received.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log.info("\nSaving options:\n" +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "pop3Server = " + pop3Server + "\n" +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "pop3ServerRequiresLogin = " + pop3ServerRequiresLogin + "\n" +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "pop3Username = " + pop3Username + "\n" +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "pop3Password = " + pop3Password + "\n" +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "smtpServer = " + smtpServer + "\n" +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "smtpServerRequiresLogin = " + smtpServerRequiresLogin + "\n" +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "smtpUsername = " + smtpUsername + "\n" +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "smtpPassword = " + smtpPassword + "\n" +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "fromAddress = " + fromAddress + "\n");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String result = "";</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Populate Properties structure.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Properties props = new Properties();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("pop3Server", pop3Server);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("pop3ServerRequiresLogin",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pop3ServerRequiresLogin);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("pop3Username", pop3Username);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("pop3Password", pop3Password);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("smtpServer", smtpServer);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("smtpServerRequiresLogin",<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smtpServerRequiresLogin);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("smtpUsername", smtpUsername);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("smtpPassword", smtpPassword);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.setProperty("fromAddress",&nbsp; fromAddress);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Lastly, delete any existing optionsFilename file in WEB-INF and<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // write out a new version from the Properties object we just populated.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Return a message saying the operation was complete, or if any problems<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // occur, a message saying what went wrong.<br />
<span style="color: red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileOutputStream fos = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new File(sc.getRealPath("WEB-INF") + "/" + optionsFilename).delete();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fos = new FileOutputStream(sc.getRealPath("WEB-INF") +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "/" + optionsFilename);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.store(fos, null);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fos.flush();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = "Options have been saved.";</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (IOException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log.error("Error saving contact:");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = "Options could not be saved.&nbsp; " +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "Please review logs for details.";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } finally {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (fos != null) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fos.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (IOException e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log.error("Error closing fos: " + e);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return result;</p>
<p>&nbsp; } // End saveOptions().</p>
<p><br />
} // End class.<br />
</p>
 <img src ="http://www.blogjava.net/keweibo/aggbug/314996.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/keweibo/" target="_blank">KE</a> 2010-03-09 22:19 <a href="http://www.blogjava.net/keweibo/articles/314996.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>