wyświetlenie danych z bazy w servlecie

0

Witam

Utworzyłem sobie zwykłą klasę i napisałem tam kod do łączenia się z bazą. Przetestowałem pod eclipse i wszystko ok. Następnie zrobiłem coś takiego:

protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		//start
		
		 res.setContentType("text/html");
			PrintWriter out = res.getWriter();
		      out.println("<html>");
		      out.println("<head><title>Hello World</title></head>");
		      out.println("<body>");
		      out.println("<h1>Hello World</h1>");
		     
		  
		  Connection conn = null;
	        Statement st = null;
	        ResultSet rs = null;
			         
	          String atrybut = req.getParameter("atrybut");        
	                                                                                   

		        try
		        {
		        	 String userName = "root";
		        	   String password = "a123456";
		        	   String url = "jdbc:mysql://localhost/users?user="
		        	                   + userName
		        	                   + "&password="
		        	                   + password;
		        	   Class.forName ("com.mysql.jdbc.Driver").newInstance ();
		        	   conn = DriverManager.getConnection (url);
		        	
		        	   st=conn.createStatement();
		               rs=st.executeQuery("select * from users1 WHERE id=2");
		               
		                      
		               while(rs.next())
		               {
		               out.println("<p>" + rs.getString(1)+" "+rs.getString("user") +" "+rs.getString(3)  +" "+rs.getString(4)+"</p>");
		               }
		      
		            out.println ("<p>Database connection established</p>");
		            out.println("</body></html>"); 
		        }
		        catch (Exception e)
		        {
		            out.println ("Cannot connect to database server");
		        }
		        finally
		        {
		            if (conn != null)
		            {
		                try
		                {
		                    conn.close ();
		                    out.println ("Database connection terminated");
		                }
		                catch (Exception e) { /* ignore close errors */ }
		            }
		        }
		  

i tu mi wyskakuje tylko oczywiście "Hello World" i "Cannot connect to database server" co robie źle. Może ma ktos jakiś prosty przykład jak wyciągnąć dane z bazy i wyswietlić w servlecie.

PS metoda POST jeszcze nic nie robi :)

0

dodaj:

 catch (Exception e)
{
    out.println ("Cannot connect to database server");
    e.printStackTrace(); 
}

I zobacz co wyskoczy w konsoli.

Czy nie lepszym pomysłem, byłoby inicjowanie połaczenia z bazą danych w metodzie init servletu, a zamykanie w metodzie destroy ?

0

Pytanie czy nie łatwiej użyć JPA i wybrać sobie tablicę obiektów. Jeżeli coś będzie nie tak z połączeniem to dowiesz się o tym już na starcie serwera.

0

to mi wyskoczyło "com.mysql.jdbc.Driver"

przejrzałem plik .war hmmm... jestem początkujący w servletach ale wydaje mi się że powinny być tu jakieś biblioteki do mysql a tu nie ma zadnej tylko pliki z moimi servletami powinienem je tam jakoś dodać?

Pozdrawiam i dziękuję za odpowiedz :)

0

Rzuć okiem na http://programmers.net/Java jest artykuł o JDBC (niedokńczony, może dzisiaj się uda), ale wstęp jest i opisane co i jak żeby pobierać dane, co jest potrzebne itp. Z plikami war jest bardzo podobnie wystarczy odpowiedniego jara ze sterownikiem wrzucić do katalogu WEB-INF/lib

0

Próbuje to robić w eclipse czy te biblioteki które są potrzebne nie powinny się automatycznie dodawać? W końcu to głupie by było: exportuję wszystko do .war a potem musze go rozpakować dodać ręcznie biblioteki...

Może powinienem coś zaznaczyć aby biblioteki się dodały? W ostateczności zrobie to ręcznie tylko proszę mi powiedzieć co wrzucić do tego folderu lib.

Pozdrawiam

0

możę po prostu wrzuć biblioteki do $CATALINA_HOME/common/lib

1 użytkowników online, w tym zalogowanych: 0, gości: 1