java.lang.ClassNotFoundException: 连接oracle数据库时Servlet中的驱动
java.lang.ClassNotFoundException: driver in Servlet while connecting oracle database
我正在研究 servlet。通过 web.xml
文件连接 Oracle 数据库时抛出以下异常。
java.lang.ClassNotFoundException: driver at
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1365)
at
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188)
at java.lang.Class.forName0(Native Method) at
java.lang.Class.forName(Unknown Source) at
com.harshidhee.servlet.DBCont.doGet(DBCont.java:55) at
com.harshidhee.servlet.DBCont.doPost(DBCont.java:128) at
这是我的代码
public class DBCont extends HttpServlet{
@Override
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
PrintWriter pw=null;
Connection con=null;
Statement st=null;
ResultSet rs=null;
ServletConfig cg=null;
String driver=null,url=null,user=null,pwd=null;
int no=0;
pw=res.getWriter();
res.setContentType("text/html");
no=Integer.parseInt(req.getParameter("eno"));
cg=getServletConfig();
driver=cg.getInitParameter("dbdriver");
url=cg.getInitParameter("dburl");
user=cg.getInitParameter("dbuser");
pwd=cg.getInitParameter("dbpwd");
Class.forName("driver");
//establish the connection
con=DriverManager.getConnection("url","user","pwd");
//create the statement
if(con!=null)
st=con.createStatement();
//set the resulttset
if(st!=null)
rs=st.executeQuery("SELECT EMPNO,EMPNAME,EMPJOB,EMPSAL,EMPDEP FROM EMPLOYEE WHERE EMPNO="+no);
if(rs.next()) {
pw.println(" Employee Id::"+rs.getInt(1));
pw.println("<br> Employee Name::"+rs.getString(2));
pw.println("<br> Employee Job::"+rs.getString(3));
pw.println("<br> Employee Salary::"+rs.getDouble(4));
pw.println("<br> Employee Dep::"+rs.getString(5));
}
else {
pw.println("Employee Id not found");
throw new IllegalArgumentException("Employee Id not found");
}
}
这是我的web.xml
文件代码
<servlet>
<servlet-name>db</servlet-name>
<servlet-class>com.harshidhee.servlet.DBCont</servlet-class>
<init-param>
<param-name>dbdriver</param-name>
<param-value>oracle.jdbc.driver.OracleDriver</param-value>
</init-param>
<init-param>
<param-name>dburl</param-name>
<param-value>jdbc:oracle:thin:@localhost:1521:xe</param-value>
</init-param>
<init-param>
<param-name>dbuser</param-name>
<param-value>System</param-value>
</init-param>
<init-param>
<param-name>dbpwd</param-name>
<param-value>System</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>db</servlet-name>
<url-pattern>/dburl</url-pattern>
</servlet-mapping>
当我对 db 的属性值进行硬编码时,它工作正常。我该如何解决这个问题?
你能改变下面这行吗
con=DriverManager.getConnection("url","user","pwd");
至,
con=DriverManager.getConnection(url,user,pwd);
我正在研究 servlet。通过 web.xml
文件连接 Oracle 数据库时抛出以下异常。
java.lang.ClassNotFoundException: driver at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1365) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at com.harshidhee.servlet.DBCont.doGet(DBCont.java:55) at com.harshidhee.servlet.DBCont.doPost(DBCont.java:128) at
这是我的代码
public class DBCont extends HttpServlet{
@Override
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
PrintWriter pw=null;
Connection con=null;
Statement st=null;
ResultSet rs=null;
ServletConfig cg=null;
String driver=null,url=null,user=null,pwd=null;
int no=0;
pw=res.getWriter();
res.setContentType("text/html");
no=Integer.parseInt(req.getParameter("eno"));
cg=getServletConfig();
driver=cg.getInitParameter("dbdriver");
url=cg.getInitParameter("dburl");
user=cg.getInitParameter("dbuser");
pwd=cg.getInitParameter("dbpwd");
Class.forName("driver");
//establish the connection
con=DriverManager.getConnection("url","user","pwd");
//create the statement
if(con!=null)
st=con.createStatement();
//set the resulttset
if(st!=null)
rs=st.executeQuery("SELECT EMPNO,EMPNAME,EMPJOB,EMPSAL,EMPDEP FROM EMPLOYEE WHERE EMPNO="+no);
if(rs.next()) {
pw.println(" Employee Id::"+rs.getInt(1));
pw.println("<br> Employee Name::"+rs.getString(2));
pw.println("<br> Employee Job::"+rs.getString(3));
pw.println("<br> Employee Salary::"+rs.getDouble(4));
pw.println("<br> Employee Dep::"+rs.getString(5));
}
else {
pw.println("Employee Id not found");
throw new IllegalArgumentException("Employee Id not found");
}
}
这是我的web.xml
文件代码
<servlet>
<servlet-name>db</servlet-name>
<servlet-class>com.harshidhee.servlet.DBCont</servlet-class>
<init-param>
<param-name>dbdriver</param-name>
<param-value>oracle.jdbc.driver.OracleDriver</param-value>
</init-param>
<init-param>
<param-name>dburl</param-name>
<param-value>jdbc:oracle:thin:@localhost:1521:xe</param-value>
</init-param>
<init-param>
<param-name>dbuser</param-name>
<param-value>System</param-value>
</init-param>
<init-param>
<param-name>dbpwd</param-name>
<param-value>System</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>db</servlet-name>
<url-pattern>/dburl</url-pattern>
</servlet-mapping>
当我对 db 的属性值进行硬编码时,它工作正常。我该如何解决这个问题?
你能改变下面这行吗
con=DriverManager.getConnection("url","user","pwd");
至,
con=DriverManager.getConnection(url,user,pwd);