2013-02-22 5 views
1
  • У меня есть код Java, добавляемых значения в моих свойствах файла
  • Мои свойства файла будет иметь такую ​​запись.
  • key1 = хост, порт, ORCL, имя пользователя, пароль
  • key2 = хост, порт, ORCL, имя пользователя, пароль
  • ключ3 = хост, порт, ORCL, имя пользователя, пароль и так далее ...

Эти ключи1, key2 и key3 являются именами соединений.Получение значения из файла свойств

  • Перед тем как сделать запись в файл свойств, сначала мне нужно проверить, дал ли файл указание имени подключения. я имею в виду, если пользователь снова вводит значение с использованием имени ключа key1 или key2 или key3, он должен дать предупреждение о том, что это имя соединения доступно, поэтому попробуйте с другим именем.

Вот мой Java-код, чтобы сделать запись в файл:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{ 
     try 
     { 
      Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 
      con = DriverManager.getConnection("jdbc:oracle:thin:@"+host+":"+port+"/"+service,username,password); 
      con.setAutoCommit(false); 
      if (con!=null) 
      { 
       session.setAttribute(username, con); 
       out.println("Connected Successfully");   
       PrintWriter out1 = new PrintWriter(new BufferedWriter(new FileWriter("my properties file", true))); 
       out1.println(cname+" = "+host+","+port+","+service+","+username+","+password); 
       out1.close(); 
      } 
      else 
      { 
       out.println("Error in getting connection"); 
      } 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
} 
+0

Быстрый вопрос, почему вы устанавливаете соединение с базой данных в сеансе? Не вижу, что это хорошая идея. – Qwerky

+0

это для некоторых других целей. эта линия не связана с вопросом, который я задал сейчас. могу я знать, почему я получил голос за этот вопрос? – Rachel

+0

downvoted, потому что вопрос неясен и показывает небольшую исследовательскую работу. – Qwerky

ответ

4
Properties prop = new Properties(); 
prop.load("pathToPropertiesFile"); 


String key; //This is the key which user will enter 
String propKey = prop.getProperty(key); 
if(propKey == null) 
{ 
    // Key is not present so enter the key into the properties file 
     prop.setProperty("keyName", key); 
} 
else 
{ 
    // Throw error saying key already exists 
     out.println("Key "+key+" already exists."); 
} 

См Here для получения более подробной информации и примеров на свойства в Java

Обновлено: Okay, если вы хотите проверить, присутствует ли такое значение (независимо от) любого ключа, используйте этот код

// Ignoring the loading of the properties file 
    // Assuming properties file is loaded in "prop" 
    Enumeration keySet = prop.keys(); 
    String key; // This is the key which user will enter 
    boolean keyExists = false; 
    while(keySet.hasMoreElements()) 
    { 
     String keyName = (String) keySet.nextElement(); 
     String keyValue = prop.getProperty(keyName); 
     if(key.equals(keyValue)) //Check against all the keys' value present 
     { 
      keyExists = true; 
      break; 
     } 
    } 

    if(keyExists) 
    { 
     //throw error 
    } 
    else 
    { 
     //insert key 
    } 

Подходом является получение всех присутствующих ключей и проверка их значений. Если значение в файле свойств такой же, как пользователь вошел или иначе, то вы знаете, что должно быть сделано

Если вы хотите сделать чек против ИМЯКЛАВИШИ то просто изменить , если условие в цикле

if(key.equals(keyName)) //Check against all the key Name present in the properties file 
{ 
keyExists = true; 
break; 
} 

Надеюсь, это поможет!

+0

утра не сохраняя значение с постоянным ключом. каждый раз, когда значение ключа изменяется. это может быть key1, key2 или key3. – Rachel

+1

Итак, введите «ключ» (вручную или программно), если необходимо. Я не вижу проблемы. –

+0

Да, во время ввода ключа убедитесь, что вы не повторяете ключевое слово (введите программный код как указано @AndrewThompson) – asifsid88

0

Посмотрите на класс Properties. Он имеет некоторые подходящие методы, которые могут быть полезны;

load() 
save() 
setProperty() 
containsKey() 
Смежные вопросы