2014-09-19 3 views
0

현재 JDBC 1이라는 프로그램이 mysql 데이터베이스에 연결되어 있습니다. 이 프로그램은 문자열을 반환합니다. 이 문자열을 JSP 페이지에 삽입하고 싶습니다. 그러나 netbeans를 사용하여 서블릿을 만들려고하면 나에게 html 사전 세트가 제공됩니다. 내 바람둥이에 PHP를 설치하지 않아서 PHP를 사용할 수 없습니다. netbeans IDE를 사용하고 있습니다. 자바 프로그램을 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

+0

코드가 올바르게 작동하고 문자열을 반환합니다. 나는 그 문자열을 JSP 페이지로 가져 오는 방법을 묻는 것이다. 코드가하는 일에 아무런 문제가 없습니다. – user3856234

+2

"올바르게 작동합니다"는 중요하지 않습니다. 코드에 많은 문제가 있어야합니다. – duffymo

답변

0

이 코드는 return 문자열이 아니며, 은 DOS 프롬프트 스타일 콘솔에 문자열을 인쇄합니다. 그게 큰 차이입니다.

public static void main(String[] args) { 

같은 뭔가 : 당신이 할 수있는

가장 간단한 것은 변화 대신 System.out.println(를 사용하여 다음

public static String getString() { 

하고, (하나의 문자열로 모든 출력을 추가 붙인하지만, 지금은 outputString이라고 말하십시오.) 마지막에 return outputString;

서블릿에서 클래스를 참조하고 호출 할 수 있습니다. 물론 String x = JDBCExample1.getString();

는 그냥 DB 클래스 아무것도하지 않습니다하지만 연결을 검색을하는 것이 더 의미가 있습니다 (즉 Connection를 반환하는 기능을 가지고있다)하고, 연결을 검색하는 서블릿이 전화를 서블릿 자체에서 쿼리 등을 수행하십시오. 결국, 당신은 아마도 많은 서블릿들로 끝날 것이고, 각각 서블릿은 db에 연결하여 뭔가를해야 할 필요가있을 것이다. 따라서 db 연결 클래스가 더 유용 할 것입니다.

관련 문제