2014-09-19 70 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连接类将会更有用。