0

web.xml ファイルからサーブレット コンテキスト パラメータを読み込む jsp コードがあります。これらのパラメーターはデータベース接続情報を保持するため、SID、ユーザー/パスワード、またはサーバー名が変更されるたびに、プログラマーは再コーディングする必要がありません。ユーザーは web.xml ファイルを変更するだけです。

<context-param>
    <description>database user name</description>
    <param-name>user</param-name>
    <param-value>guest</param-value>
</context-param>

<context-param>
    <description>database password</description>
    <param-name>password</param-name>
    <param-value>1234</param-value>
</context-param> 

私はBeanクラスコードのこのセクションを使用してこれらを読みました:

String user = servletContext.getInitParameter("user");
String pass = servletContext.getInitParameter("password");

問題:

次に、データベース接続を行ってデータを取得します。

Class.forName("oracle.jdbc.driver.OracleDriver");
dbConnection = DriverManager.getConnection(conn_url, user, pass);

ここで、conn_url は、ホスト名 (または IP アドレス) とポート番号で構成される文字列です。

いずれにせよ、dbConnection は失敗します。

java.sql.SQLException: ORA-01017: invalid username/password; logon denied

文字列値が何であるかをエコーアウトしても、それらは本来あるべきものです。

私が行って言うと:

user = "guest";
pass = "1234";

それらを直接割り当てると、正常に機能します。

理解できません。私は一日中私の脳をガタガタさせました。明らかに、getConnection は 3 つの文字列を探します。私は途方に暮れています。どんな助けでも大歓迎です。

4

1 に答える 1

0

私はやったし、それは私のために働いています。私は自分のコードを共有します: web.xml で次のように書きました:

 <context-param>
    <description>user name</description>
    <param-name>user</param-name>
    <param-value>postgres</param-value>
</context-param>
<context-param>
    <description>password</description>
    <param-name>password</param-name>
    <param-value>samdx</param-value>
</context-param>

サーブレット ファイル内:

ServletContext context = getServletContext();
            String name = context.getInitParameter("user");
            String password = context.getInitParameter("password");

con = DriverManager.getConnection(url,name, password);

このようにしてみてください。web.xml から値を取得しないでください。

String name="guest"
String password="1234"
dbConnection = DriverManager.getConnection(conn_url,name, password);
于 2014-09-25T15:04:29.747 に答える