954,574 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Please help me in connecting JSP to MySql

<%
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:8009/login? user=root&password=asma");
Statement statement = con.createStatement();
ResultSet rs = statement.executeQuery("SELECT message FROM users");

while (rs.next()) {
out.println(rs.getString("message")+"
");
}

rs.close();statement.close();con.close();
%>

A Yasir
Newbie Poster
7 posts since Mar 2007
Reputation Points: 10
Solved Threads: 1
 

Make shure your MySQL database is runnig ( I sometimes forget I switch it off)
I'm using Windows XP and my JDBC connector is in "C:\Program Files\Java\jdk1.6.0\jre\lib\ext" plus you should place there servlet-api.jar and jsp-api.jar which you can find in your Tomcat directory (in my case C:\Tomcat 5.5\common\lib)
This should take care of the problem, if no you still can chceck if you installed everything correctly on this site

One thing, you SHOULD NOT use JSP for connection to your database but you should use servlets. JSP is still capable of connecting to DB but this is left there for back compactibility with some old components. If you use book you should get newer edition, if is it teacher tell him/her to update his/her notes

peter_budo
Code tags enforcer
Moderator
15,436 posts since Dec 2004
Reputation Points: 2,806
Solved Threads: 902
 

Do NOT put ANYTHING in the lib/ext directory of your JRE or JDK.
VERY VERY VERY bad!

Instead set up your classpath properly, as indicated in the documentation of the JDK. JRE, appservers, etc. etc. etc.

jwenting
duckman
Team Colleague
8,392 posts since Nov 2004
Reputation Points: 1,662
Solved Threads: 337
 
Do NOT put ANYTHING in the lib/ext directory of your JRE or JDK. VERY VERY VERY bad!


jwenting this is not hopefull ! Please can you explain...
It is the case that teacher at school tell you set up Java this way and that is. We do not question them. So you as the programmer with years of experience should explain or point to the place where appropriate resources avaible(and no just go to sun website and find it). Not to just drop a shell bomb saing "that is bad, bad..."

peter_budo
Code tags enforcer
Moderator
15,436 posts since Dec 2004
Reputation Points: 2,806
Solved Threads: 902
 

Hello !!
Thankx for all ur reply's. Actually i m very new to this jsp programming , i dont really know much abt all this, just followng a few books and tutorials to make it work, but i think u r right on all that they used the older versions that is not even available online, and may be i m having version incompatibility or version conflict problem.

Anyways can anyone tell me that if i am using apache-tomcat-5.5.23, so do i still need to install apache server separately and make connection with tomcat later on??

As I m using different working codes from some books and websites, they usually give me error on my connection string and some root errors like:

org.apache.jasper.JasperException: Unable to compile class for JSP:

org.apache.jasper.JasperException: Communication link failure: java.io.EOFException, underlying cause: null

My connection string is

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:8009/login? user=root&password=asma");

Root would be the default username as i haven't set it and "asma" would be the password that i set wile installing MySQL server.

My all other jsp pages working fine , only having problem in connecting with database.

I have tried ur suggestion of putting the files as well as seting CLASSPATH but neither of it worked.

I'll be thankful if anyone can help in this regard

A Yasir
Newbie Poster
7 posts since Mar 2007
Reputation Points: 10
Solved Threads: 1
 

In mysql you not only have to create a user and set a password, you also have to designate from where (and how) that user is allowed to connect the DB. Per default, root can only connect from localhost using the sock file, but, in Java, you will be attempting to connect over TCP. So, read the MySQL documentation (namely the GRANT statement) and add a root@localhost entry.

masijade
Industrious Poster
Moderator
4,253 posts since Feb 2006
Reputation Points: 1,471
Solved Threads: 494
 
jwenting this is not hopefull ! Please can you explain... It is the case that teacher at school tell you set up Java this way and that is. We do not question them. So you as the programmer with years of experience should explain or point to the place where appropriate resources avaible(and no just go to sun website and find it). Not to just drop a shell bomb saing "that is bad, bad..."

placing anything there will mask the real issues, which is that you have no clue about configuring your runtime properly (including classpath settings especially).
It's also guaranteed to lead to the Java equivalent of DLL Hell in short order, as many applications require different versions of the same libraries and those often conflict.

By placing one version there you're shoving it down the throat of every Java application you run on your system as the one and only true version, leading to all kinds of problems.

If you need a library, get it from where you can get it (which differs for each library) and add it to your classpath as required for the lifetime of the JVM when running the application.
So NO placing anything in lib/ext, NO global classpath settings.

jwenting
duckman
Team Colleague
8,392 posts since Nov 2004
Reputation Points: 1,662
Solved Threads: 337
 
In mysql you not only have to create a user and set a password, you also have to designate from where (and how) that user is allowed to connect the DB. Per default, root can only connect from localhost using the sock file, but, in Java, you will be attempting to connect over TCP. So, read the MySQL documentation (namely the GRANT statement) and add a root@localhost entry.



Hello

I have tried that option as well with command
GRANT ALL PRIVILEGES ON 'login'.* TO [EMAIL="'root'@'localhost:8009'"]'[EMAIL="'root'@'localhost:8009"]root'@'localhost:8009[/EMAIL]' [/EMAIL]
IDENTIFIED BY 'mdas' WITH GRANT OPTION;

but it still giving the error on connection string with the same communication link root cause:exception org.apache.jasper.JasperException: Exception in JSP: /connect1.jsp:63: 4: <%5: Class.forName("com.mysql.jdbc.Driver").newInstance();6: Connection con = DriverManager.getConnection("jdbc:mysql://localhost:8009/login? user='root'&password='mdas'");7: Statement statement = con.createStatement();8: ResultSet rs = statement.executeQuery("SELECT message FROM users");9: Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:467) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause javax.servlet.ServletException: Communication link failure: java.io.EOFException, underlying cause: null** BEGIN NESTED EXCEPTION ** java.io.EOFExceptionSTACKTRACE:java.io.EOFException at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1395) at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:1414) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:625) at com.mysql.jdbc.Connection.createNewIO(Connection.java:1808) at com.mysql.jdbc.Connection.(Connection.java:452) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:411) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at org.apache.jsp.connect1_jsp._jspService(connect1_jsp.java:48) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685) at java.lang.Thread.run(Unknown Source)** END NESTED EXCEPTION **
whta can i do please HELP ME.

A Yasir
Newbie Poster
7 posts since Mar 2007
Reputation Points: 10
Solved Threads: 1
 

What DB version are you using, and what version of the driver are you using.

masijade
Industrious Poster
Moderator
4,253 posts since Feb 2006
Reputation Points: 1,471
Solved Threads: 494
 
What DB version are you using, and what version of the driver are you using.

For database -- MySQL 5.0.37
For JDBC -- mysql-connector-java-3.0.17

A Yasir
Newbie Poster
7 posts since Mar 2007
Reputation Points: 10
Solved Threads: 1
 

Try downloading a newer version of the Driver.

masijade
Industrious Poster
Moderator
4,253 posts since Feb 2006
Reputation Points: 1,471
Solved Threads: 494
 

I have tried using it with the newer version but its giving error again at the connection string and having root cause:
javax.servlet.ServletException: Communications link failure due to underlying exception:

A few ambiguities more to ask

1-- Can any one tell me that if i am using apache-tomcat-5.5.23, so do i still need to install apache server separately and make connection with tomcat later on

2-- If WEB-INF subdirectory of tomcat is to be targeted to create a WEB-INF\web.xml file and if i search this subdirectory i can find it in many flders like
webapps\ROOT, tomcat-docs, jsp-examples, servlets-examples, balance, webdav, tomcat-docs\appdev\sample\web,
server\webapps\manager, host-manager ,
so which one exactly has to be target. what i think is ROOT but need a confirmation.

3-- Do i need to add anything like modifying server.xml in tomcat directory , and i got 2 different resourse declaration in MySQL documentation and one in tomcat documentation, so which one to use and i cant get this

what would be MySQLDB in my case???
4-- I have my Jre folder both in C:\Program Files and within jdk folder as i installed java at some other folder rather than c:\ , so which one would my tomcat should use?

A Yasir
Newbie Poster
7 posts since Mar 2007
Reputation Points: 10
Solved Threads: 1
 

Now that you have a decent driver, I would say to change ("jdbc:mysql://localhost:8009/login? user='root'&password='mdas'"); to ("jdbc:mysql://localhost:8009/login", "root", "mdas");

Also, that space between the ? and the word user in the original url will cause problems anyway, even if the DriverManager does accept the url with user and password as parameters on the url, as there should not be a space there.

The web.xml is placed directly under WEB-INF, not any of its subdirectories.

And, no you do not need to install apache, but it is advised to use a real browser as the front end (in this case apache) and connect to the tomcat locally through the webserver (in this case using mod_jk).

masijade
Industrious Poster
Moderator
4,253 posts since Feb 2006
Reputation Points: 1,471
Solved Threads: 494
 
Now that you have a decent driver, I would say to change ("jdbc:mysql://localhost:8009/login? user='root'&password='mdas'"); to ("jdbc:mysql://localhost:8009/login", "root", "mdas"); Also, that space between the ? and the word user in the original url will cause problems anyway, even if the DriverManager does accept the url with user and password as parameters on the url, as there should not be a space there. The web.xml is placed directly under WEB-INF, not any of its subdirectories. And, no you do not need to install apache, but it is advised to use a real browser as the front end (in this case apache) and connect to the tomcat locally through the webserver (in this case using mod_jk).




Tried that as well :sad: , i think the problem might not be with the code , it might be with the configuration, as i was looking at tomcat-apache documentation it says to create a WEB-INF/web.xml file even given teh code is given

MySQL Test AppDB Connectionjdbc/TestDBjavax.sql.DataSourceContainer

just need to ask a few questions before starting any new thing

1. the tomcat directory already has many WEB-INF/web.xml files at different locations , as i have mentioned before so do i need to modify any of it or do i have to create a new folder name WEB-INF and create the web.xml in it. and if this is teh case where should i create that WEB-INF folder with in $CATALINA_HOME/.

2. teh second question is what is jdbc/TestDB as it is also used in $CATALINA_HOME/conf/server.xml resourse tag as well and what would be it in my case??



3. I have my Jre folder both in C:\Program Files and within jdk folder as i installed java at some other folder rather than c:\ , so which one would my tomcat should use while directing for installaion?

if u can answer my ambiguities i'll be really thankful

A Yasir
Newbie Poster
7 posts since Mar 2007
Reputation Points: 10
Solved Threads: 1
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You