【问题标题】:How to connect a java program to a JSP page如何将 Java 程序连接到 JSP 页面
【发布时间】:2014-09-19 18:46:29
【问题描述】:

我目前有一个名为 JDBC 1 的程序,它连接到一个 mysql 数据库。该程序返回一个字符串。我希望将此字符串插入到 JSP 页面中。然而,当我尝试使用 netbeans 创建一个 servlet 时,它给了我一堆 html 预设。我无法使用 PHP,因为我的 tomcat 上没有安装它。我正在使用 netbeans IDE。

这是 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>

感谢您提供的任何帮助!

【问题讨论】:

  • 这段代码错误太多,甚至不知道从哪里开始。看起来您两次粘贴了 JDBCExample1 并忽略了 JSP。但是 JDBCExample1 的代码最麻烦。
  • 代码正常工作并返回一个字符串。我只是在问如何将该字符串放入 JSP 页面。我对代码的作用没有任何问题。
  • “正常工作”对我来说无关紧要。你的代码应该有很多问题。
  • 你可能走得太快了。您应该熟悉 servlet 并确保您对 MVC 有很强的掌握。
  • netbeans.org/kb/docs/web/mysql-webapp.html 尝试按照教程并插入您需要的内容。

标签: java javascript xml jsp servlets


【解决方案1】:

这段代码return 不是字符串,它将字符串打印到DOS 提示样式控制台。这是一个很大 的区别。

你能做的最简单的事情就是改变:

public static void main(String[] args) {

类似于:

public static String getString() {

然后不使用System.out.println(,而是将所有输出附加到一个字符串(随便叫什么,但现在让我们说outputString),最后是return outputString;

然后您可以在您的 servlet 中引用该类并调用它。 String x = JDBCExample1.getString();

当然创建一个除了检索连接之外什么都不做的数据库类更有意义(即有一个返回Connection的函数),并在你的servlet中调用它来检索连接,然后在 servlet 本身中执行查询等。毕竟,您最终可能会得到许多 servlet,每个 servlet 都需要连接到数据库来做某事。所以一个 db 连接类会更有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 2013-05-21
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多