0

我有一些从 web.xml 文件中读取 Servlet 上下文参数的 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>

在 Servlet 文件中:

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 回答