0

I am working on servlet. While connecting Oracle db through web.xml file its throwing below exception.

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

This is my code

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");
    }                   
}

This is my web.xml file code

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

When I hard code the values of properties of db, its working fine. How can I solve this issue?

1
  • Class.forName("driver"), that is not a valid class name, maybe you meant Class.forName(driver) instead. Be aware that using DriverManager directly from a web application is not a good idea. You should use a javax.sql.DataSource implementation (preferably backed by a connection pool) instead. Commented Mar 28, 2020 at 7:56

1 Answer 1

1

Can you change the below line

con=DriverManager.getConnection("url","user","pwd");

To,

con=DriverManager.getConnection(url,user,pwd);
Sign up to request clarification or add additional context in comments.

2 Comments

In addition I recommend to use the DB-pooling of the container to access the DB. And use PreparedStatement for the SQL statements.
@Anil Nivargi can you help and suggest how to handle this stackoverflow.com/questions/62036791/…

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.