我有一些jsp代码从web.xml文件中读取Servlet Context参数。这些参数保存数据库连接信息,因此每次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
即使我回应出String值是什么,它们应该是什么。
如果我去说:
user = "guest";
pass = "1234";
直接分配它们然后它工作正常。
我不明白。我整天都在喋喋不休。很明显,getConnection会查找3个字符串。我很茫然。任何帮助,将不胜感激。
答案 0 :(得分: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);