2014-09-19 72 views
0

我目前有一個名爲JDBC 1的程序,它連接到一個mysql數據庫。該程序返回一個字符串。我想把這個字符串插入JSP頁面。但是,當我嘗試使用netbeans創建一個servlet時,它給了我一堆html預設。我無法使用PHP,因爲我沒有安裝在我的Tomcat上。我正在使用netbeans IDE。如何將java程序連接到JSP頁面

這是Java應用程序

//STEP 1. Import required packages 
import java.sql.*; 
import java.sql.DriverManager; 
import java.sql.Connection; 
import java.sql.SQLException; 


public class JDBCExample1 { 
    // JDBC driver name and database URL 
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; 
    static final String DB_URL = "jdbc:mysql://localhost/maps"; 

    // Database credentials 
    static final String USER = "root"; 
    static final String PASS = "root"; 

    public static void main(String[] args) { 
    Connection conn = null; 
    Statement stmt = null; 
    try{ 
     //STEP 2: Register JDBC driver 
     Class.forName("com.mysql.jdbc.Driver"); 

     //STEP 3: Open a connection 
     System.out.println("Connecting to a selected database..."); 
     conn = DriverManager 
       .getConnection("jdbc:mysql://localhost:3306/maps","root", "root"); 
     System.out.println("Connected database successfully..."); 

     //STEP 4: Execute a query 
     System.out.println("Creating statement..."); 
     stmt = conn.createStatement(); 

     String sql = "SELECT locname,latitude,longitude FROM location"; 
     ResultSet rs = stmt.executeQuery(sql); 
     //STEP 5: Extract data from result set 
     while(rs.next()){ 
     //Retrieve by column name 
     double latitude = rs.getDouble("latitude"); 
     double longitude = rs.getDouble("longitude"); 
     String locname = rs.getString("locname"); 


     //Display values 
     System.out.print(latitude); 
     System.out.print(longitude); 
     System.out.print(locname); 

     } 
     rs.close(); 
    }catch(SQLException se){ 
     //Handle errors for JDBC 
     se.printStackTrace(); 
    }catch(Exception e){ 
     //Handle errors for Class.forName 
     e.printStackTrace(); 
    }finally{ 
     //finally block used to close resources 
     try{ 
     if(stmt!=null) 
      conn.close(); 
     }catch(SQLException se){ 
     }// do nothing 
     try{ 
     if(conn!=null) 
      conn.close(); 
     }catch(SQLException se){ 
     se.printStackTrace(); 
     }//end finally try 
    }//end try 
    System.out.println("Goodbye!"); 
}//end main 
}//end JDBCExample1 

它返回的數字和地點從我的數據庫字符串。現在我想把這個字符串插入到這個JSP頁面中,這樣我就可以創建一個數組來使用我從mysql數據庫中提取的座標來填充地圖。

的JSP

<%-- 
    Document : gogolemaps 
    Created on : Sep 19, 2014, 12:48:35 PM 
    Author  : bsebat 
--%> 

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
<head> 
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 

    <script type="text/javascript"> 
     var layers=[]; 

     layers[0] = new google.maps.KmlLayer('http://www.hpc.ncep.noaa.gov/kml/fop/fopbody.kml', 
       {preserveViewport: true}); 

     layers[1] = new google.maps.KmlLayer('http://www.nhc.noaa.gov/gis/forecast/archive/latest_wsp34knt120hr_tenthDeg.kmz', 
       {preserveViewport: true}); 

     layers[2] = new google.maps.KmlLayer('http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_month_depth_link.kml', 
       {preserveViewport: true}); 

     layers[3] = new google.maps.KmlLayer('http://activefiremaps.fs.fed.us/data/kml/conus_latest_lg_incidents.kml', 
       {preserveViewport: true}); 

     layers[4] = new google.maps.KmlLayer('http://w1.weather.gov/tcig/Tornado.kml?random=115233', 
       {preserveViewport: true}); 
     var map; 


     function initialize() { 
      var latlng = new google.maps.LatLng(40.744771, -73.3171305); 
      var myOptions = { 
       zoom: 10, 
       center: latlng, 
       mapTypeIds: google.maps.MapTypeId.ROADMAP 
      } 
      map = new google.maps.Map(document.getElementById("map_canvas"),myOptions); 

      for(var i=0;i < locations.length;i++) { 
       var marker = new google.maps.Marker({position: locations[i].latlng, 
        map:map, title:locations[i].name});} 
     } 

     function toggleLayers(i) 

     { 

      if(layers[i].getMap()==null) { 
       layers[i].setMap(map); 
      } 
      else { 
       layers[i].setMap(null); 
      } 
      document.getElementById('status').innerHTML += "toggleLayers("+i+") [setMap("+layers[i].getMap()+"] returns status: "+layers[i].getStatus()+"<br>"; 
     } 


    </script> 

</head> 
<body onload="initialize()"> 
Flood <input type="checkbox" id="layer_01" onclick="toggleLayers(0);"/> 
Hurricane<input type="checkbox" id="layer_02" onclick="toggleLayers(1);"/> 
Earthquake<input type="checkbox" id="layer_03" onclick="toggleLayers(2);"/> 
Fire<input type="checkbox" id="layer_04" onclick="toggleLayers(3);"/> 
Tornado<input type="checkbox" id="layer_05" onclick="toggleLayers(4);"/> 
<div id="map_canvas" style="height:800px; width:800px;"></div> 
<div id="status"></div> 
<div id="value"> 
</body> 
</html> 

感謝您的幫助,您可以提供!

+1

這段代碼的錯誤甚至不知道從哪裏開始。看起來你已經兩次粘貼了JDBCExample1,而忽略了JSP。但JDBCExample1代碼是最麻煩的。 – duffymo 2014-09-19 18:48:37

+0

代碼正常工作並返回一個字符串。我只是問如何將該字符串放入JSP頁面。我對代碼的功能沒有任何問題。 – user3856234 2014-09-19 18:50:42

+2

「正常工作」對我而言並不重要。你的代碼應該有很多問題。 – duffymo 2014-09-19 18:55:36

回答

0

此代碼不會return一個字符串,它打印一個字符串到DOS提示樣式控制檯。這是一個區別。

你可以做最簡單的事情就是變化:

public static void main(String[] args) { 

喜歡的東西:

public static String getString() { 

,然後而是採用System.out.println(,所有的輸出追加到一個字符串(叫什麼,但現在讓我們說outputString),最後return outputString;

然後你可以在你的servlet中引用這個類並調用它。 String x = JDBCExample1.getString();

當然它更有意義,只是做一個DB類,什麼也不做,但檢索連接(即有一個返回Connection功能),並呼籲這在你的servlet檢索連接,然後在servlet本身做你的查詢等。畢竟,你可能會得到許多servlet,每個servlet都需要連接到數據庫來做一些事情。所以一個db連接類將會更有用。