在JAVA应用程序中,连接在RUN TIME更改

时间:2013-01-23 11:19:33

标签: java jsp jdbc connection connection-pooling

我必须创建一个JSP,其中有一个屏幕可以连接数据库 运行时,意味着我必须在运行时提供数据库详细信息(瘦客户端/驱动程序信息等),然后连接并通过下一页进行处理,这是一个小规模应用程序(最多20个用户)所以我想知道如何管理连接

- 在Session中存储连接? - 在HashTable中,键为会话ID,值为连接? - 或运行时的一些连接池(我认为它不好).. - 或创建属性文件并在运行时进行更改并重新加载..

让我知道这种性能和设计的最佳方法。

此致 阿米特

3 个答案:

答案 0 :(得分:4)

您可以在.properties文件中设置连接信息(数据库名称,密码,服务器地址等)。如下所示。

1)静态方式 config.properties (通常在classPath-src \ config.properties中创建)文件包含

driver=com.mysql.jdbc.Driver
database=jdbc:mysql://localhost:3306/dbName
dbuser=root
dbpassword=root

您还可以创建或重置值

1)创建或设置动态属性文件。

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

public class App 
{
    public static void main( String[] args )
    {
        Properties prop = new Properties();

        try {
            //set the properties value
            prop.setProperty("database", "localhost");
            prop.setProperty("dbuser", "patel");
            prop.setProperty("dbpassword", "password");

            //save properties to project root folder
            prop.store(new FileOutputStream("config.properties"), null);

        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

输出(config.properties)

 dbpassword=password
 database=localhost
 dbuser=patel

2)现在是时候在运行时阅读它了。

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

public class App 
{
    public static void main( String[] args )
    {
        Properties prop = new Properties();

        try {
               //load a properties file
            prop.load(new FileInputStream("config.properties"));

               //get the property value and print it out
                System.out.println(prop.getProperty("database"));
            System.out.println(prop.getProperty("dbuser"));
            System.out.println(prop.getProperty("dbpassword"));

        } catch (IOException ex) {
            ex.printStackTrace();
        }

    }
}

输出

localhost
patel
password

请在< %%>中的jsp中编写此代码 这样你可以在运行时加载任何东西。 需要任何帮助ping我..................:)

答案 1 :(得分:0)

您可以使用连接池

check this

答案 2 :(得分:0)

将登录凭据存储在使用会话ID作为密钥的服务器内存映射中可能更简单,在每次呼叫时重新打开连接并在服务呼叫结束时关闭它。虽然打开连接会受到惩罚,但每个网络互动应该足够有效。这可以防止连接泄漏。

要防止出现安全问题的伪造会话ID,您的Web服务器必须确保为每个呼叫验证用户身份。