Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 40
  1. #1
    Utente di HTML.it L'avatar di Mon91
    Registrato dal
    Jul 2013
    Messaggi
    52

    [JSP] Problema database-google maps

    Ciao a tutti! Ho esperienza con l'html e il css ma ho problemi a fare funzionare correttamente la jsp del sito che sto creando, probabilmente per un errore nel codice che ho scritto dentro questa pagina. Dovrebbe caricare una mappa di google con dei markers, le info dei quali si trovano su un database, ma non lo fa.
    Quando faccio partire Tomcat e scrivo l'indirizzo del mio sito localhost:8080... carica la pagina code.html senza problemi:essa è poi legata alla pagina.js e alla .jsp.

    main.js
    codice:
    function addMarker(posizione, titolo,contenuto){
    		var marker = new google.maps.Marker({
             position: posizione,
             map: map,
             title:titolo  }); 
    		 
    		 var infowindow = new google.maps.InfoWindow({content: contenuto});
    		 google.maps.event.addListener(marker, 'click', function() {infowindow.open(map, marker);});		 
    		 return marker;
    	  }
    	  
    	      function geocode(indirizzo,desc,content){
    		geocoder.geocode( { 'address': indirizzo}, function(results, status) {
    																				//alert(status+" -- "+google.maps.GeocoderStatus.OK);
    																				if (status == google.maps.GeocoderStatus.OK) {
    																						addMarker(results[0].geometry.location,desc,content);
    																				}
    																			 }
    		);
    	  }
    
    	  
    	  var map;
    	  var geocoder = new google.maps.Geocoder();
    
    	  
    	  function initialize() {
            var mapOptions = {
              center: new google.maps.LatLng(44.6885,10.6649),
              zoom: 12,
              mapTypeId: google.maps.MapTypeId.ROADMAP
    		  
    		  /*
    		  ROADMAP displays the normal, default 2D tiles of Google Maps.
    		  SATELLITE displays photographic tiles.
    		  HYBRID displays a mix of photographic tiles and a tile layer for prominent features (roads, city names).
    		  TERRAIN displays physical relief tiles for displaying elevation and water features (mountains, rivers, etc.).
    		  */
    		 
            };
            map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
    		fx();
          }
    	  
           google.maps.event.addDomListener(window, 'load', initialize);
    Non credo sia questa pagina a dare problemi perchè come 'prova del 9' ho messo nella jsp dentro i tag <% %> dei valori di prova riempendo un array con terne di valori (nome localita telefono) che passati alla jsp creavano dei Markers sulla mappa che stavano a indicare punti di interesse. E il tutto funzionava.

    Non contento, ci chiede di abbandonare la soluzione con l'array allo scopo di scrivere una minore quantità di codice dentro i tag <% %> e creare con java un database da riempire con tutti i valori e una volta creato connettersi ad esso ed interrogarlo con una select.
    Lo stesso identico discorso, però con un database. Ho creato il file.db non mi resta che collegarmi ad esso dentro la jsp ed è qui che trovo delle difficoltà e dove potrei aver fatto degli errori

    posto il codice della jsp:
    codice:
    <html>
      <head>
    	 
    	 <meta name="viewport" content="initial-scale=1.0, 
    user-scalable=no" />
        <style type="text/css">
          #map-canvas { height: 300px; 
    					width: 300px;
    				  }
    				
        </style>
        <script type="text/javascript" src="
    https://maps.googleapis.com/maps/api/js?sensor=false"></script>
        <script type="text/javascript" src="main.js"></script>
    	<script type="text/javascript">
    	function fx() {
    		<%@ page language="java" import="java.sql.*" %> 
    		
    		<%
                     Class.forName("org.sqlite.JDBC");
    		 Connection c = DriverManager.getConnection("jdbc:sqlite:db1.db"); 
    		 Statement s = c.createStatement();                               
    		 
                     String nome=request.getParameter("nome");
    		 String localita=request.getParameter("localita");
    		 String telefono=request.getParameter("telefono");
    		 
                     String querySQL = "";
    		 querySQL= "select * from db1";
    		 ResultSet rs=s.executeQuery(querySQL);
    		 
    		 while((rs.next())!=null){
                 	System.out.println(rs.getString("nome"));
                    System.out.println(rs.getString("localita"));
                    System.out.println(res.getString("telefono"));
    		}
    		
    		 s.executeUpdate(querySQL);
                     rs.close();
    		 s.close();
                     c.close();		 
    		 %>
    		}
    	</script>
     </head>
      <body>
    	<h1 onclick="addP()">Example</h1>
        <div id="map-canvas"/>
      </body>
    </html>
    posto anche, per completezza il codice della pagina.html:
    codice:
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <meta name="keywords" content="" />
    <meta name="description" content="" />
    <link href="http://fonts.googleapis.com/css?family=Open+Sans:400,300,600,700|Archivo+Narrow:400,700" rel="stylesheet" type="text/css">
    <link href="default.css" rel="stylesheet" type="text/css" media="all" />
    
    
     <script type="text/javascript" src="https://www.google.com/jsapi"></script>
     <script type="text/javascript" src="main.js"></script>
    
    </head>
    <body>
    <div id="fb-root"></div>
    <script>(function(d, s, id) {
      var js, fjs = d.getElementsByTagName(s)[0];
      if (d.getElementById(id)) return;
      js = d.createElement(s); js.id = id;
      js.src = "//connect.facebook.net/it_IT/all.js#xfbml=1";
      fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));</script>
    
    <div id="banner-wrapper"></div>
    <div id="header-wrapper">
    	<div id="header" class="container">
    		<div id="logo">
    			<h1>MAPS</h1>
    		</div>
    		<div id="menu">
    			
    		</div>
    	</div>
    </div>
    <div id="page" class="container">
    	<div id="content">
    		<div class="post">
    			<h2 class="title">Looking for...</h2>
    			<form action="ngeocoder.jsp">
    			
    			<select name="localita">
    			<option value="restaurant">Restaurant</option>
    			<option value="disco">Disco</option>
    			<option value="pub">Pub</option>
    			<option value="fast food">Fast food</option>
    			<option value="shopping mall">Shopping Mall</option>
    			</select>
    			
    
    			
    			
    
    			<input type="submit" value="Search!">
    			
    			
    			</form>
    				<div class="fb-like" data-href="http://localhost:8080/prova13/prova/code.html" data-send="true" data-width="450" data-show-faces="true"></div>
    		</div>
    				
    		
    		<div style="clear: both;"></div>
    	</div>
    	
    </div>
    
    </html>
    ma purtroppo :
    HTTP Status 404 - /tesina/mappa/ngeocoder.jsp

    type Status report

    message /tesina/mappa/ngeocoder.jsp

    description The requested resource is not available.
    Apache Tomcat/7.0.37

    Ringrazio anticipatamente per l'attenzione.

  2. #2
    Utente di HTML.it L'avatar di Mon91
    Registrato dal
    Jul 2013
    Messaggi
    52
    Ho ritrovato una vecchia guida che cercavo da tempo e credo che il codice corretto da inserire nella jsp sia:
    codice:
    			<%@ page language="java" import="java.sql.*" %> 
    		
    		<%
                     Class.forName("org.sqlite.JDBC");
    		 Connection c = DriverManager.getConnection("jdbc:sqlite:db1.db"); 
    		 Statement s = c.createStatement();                               
    		 		 
                     String querySQL = "";
    		 querySQL= "select * from db1";
    		 ResultSet rs=s.executeQuery(querySQL);
    		 
    		 while((rs.next()){
                 	 //ottiene il dato
                dat = rs.getString("indirizzo");
                //stampa a video
                out.println(dat);
    				
    		}
    		
    		
                     rs.close();
    		        s.close();
                     c.close();		 
    		 %>
    MA OTTENGO:
    HTTP Status 500 - Unable to compile class for JSP:

    type Exception report

    message Unable to compile class for JSP:

    description The server encountered an internal error that prevented it from fulfilling this request.

    exception

    org.apache.jasper.JasperException: Unable to compile class for JSP:

    An error occurred at line: 28 in the jsp file: /mappa/ngeocoder.jsp
    Syntax error, insert ") Statement" to complete WhileStatement
    25: querySQL= "select * from db1";
    26: ResultSet rs=s.executeQuery(querySQL);
    27:
    28: while((rs.next()){
    29: //ottiene il dato
    30: dat = rs.getString("indirizzo");
    31: //stampa a video


    An error occurred at line: 30 in the jsp file: /mappa/ngeocoder.jsp
    dat cannot be resolved to a variable
    27:
    28: while((rs.next()){
    29: //ottiene il dato
    30: dat = rs.getString("indirizzo");
    31: //stampa a video
    32: out.println(dat);
    33:


    An error occurred at line: 32 in the jsp file: /mappa/ngeocoder.jsp
    dat cannot be resolved to a variable
    29: //ottiene il dato
    30: dat = rs.getString("indirizzo");
    31: //stampa a video
    32: out.println(dat);
    33:
    34: }
    35:


    Stacktrace:
    org.apache.jasper.compiler.DefaultErrorHandler.jav acError(DefaultErrorHandler.java:103)
    org.apache.jasper.compiler.ErrorDispatcher.javacEr ror(ErrorDispatcher.java:331)
    org.apache.jasper.compiler.JDTCompiler.generateCla ss(JDTCompiler.java:468)
    org.apache.jasper.compiler.Compiler.compile(Compil er.java:378)
    org.apache.jasper.compiler.Compiler.compile(Compil er.java:353)
    org.apache.jasper.compiler.Compiler.compile(Compil er.java:340)
    org.apache.jasper.JspCompilationContext.compile(Js pCompilationContext.java:646)
    org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:357)
    org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:728)

    note The full stack trace of the root cause is available in the Apache Tomcat/7.0.37 logs.
    Apache Tomcat/7.0.37

    E AGIORNANDO:
    type Exception report

    message java.lang.ClassNotFoundException: org.apache.jsp.mappa.ngeocoder_jsp

    description The server encountered an internal error that prevented it from fulfilling this request.

    exception

    org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.mappa.ngeocoder_jsp
    org.apache.jasper.servlet.JspServletWrapper.getSer vlet(JspServletWrapper.java:177)
    org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:369)
    org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:728)

    root cause

    java.lang.ClassNotFoundException: org.apache.jsp.mappa.ngeocoder_jsp
    java.net.URLClassLoader$1.run(Unknown Source)
    java.net.URLClassLoader$1.run(Unknown Source)
    java.security.AccessController.doPrivileged(Native Method)
    java.net.URLClassLoader.findClass(Unknown Source)
    org.apache.jasper.servlet.JasperLoader.loadClass(J asperLoader.java:132)
    org.apache.jasper.servlet.JasperLoader.loadClass(J asperLoader.java:63)
    org.apache.jasper.servlet.JspServletWrapper.getSer vlet(JspServletWrapper.java:172)
    org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:369)
    org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:728)

    note The full stack trace of the root cause is available in the Apache Tomcat/7.0.37 logs

    AIUTO come mai non riesce a trovare la classe? che cosa vuole dire?
    (mi sono anche ricordato di copiare dentro /lib di tomcat la jar di sql ma non funziona...)

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    che cos'è db1? Non sono pratico di SQLite, ma in generale c'è una certa differenza tra database e tabella contenuta in un database. Inoltre, ma questo è un parere mio personale che potrebbe benissimo non essere condiviso e/o condivisibile, non mi pare molto bello dare ad una tabella lo stesso nome del database in cui è contenuto... scelta un po' confusionaria, a mio modesto avviso.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  4. #4
    Utente di HTML.it L'avatar di Mon91
    Registrato dal
    Jul 2013
    Messaggi
    52
    Originariamente inviato da Andrea1979
    che cos'è db1? Non sono pratico di SQLite, ma in generale c'è una certa differenza tra database e tabella contenuta in un database. Inoltre, ma questo è un parere mio personale che potrebbe benissimo non essere condiviso e/o condivisibile, non mi pare molto bello dare ad una tabella lo stesso nome del database in cui è contenuto... scelta un po' confusionaria, a mio modesto avviso.
    Hai ragione, ho fatto un errore: dovevo infatti fare riferimento alla tabella places del database db1.db, ma mi restituisce il seguente errore nella query perchè non trova la tabella (ne il database).Devo passare il file.db alla mia jsp... lo devo mettere in una cartella WEB-INF di Tomcat?

    HTTP Status 500 - An exception occurred processing JSP page /mappa/ngeocoder.jsp at line 26

    type Exception report

    message An exception occurred processing JSP page /mappa/ngeocoder.jsp at line 26

    description The server encountered an internal error that prevented it from fulfilling this request.

    exception

    org.apache.jasper.JasperException: An exception occurred processing JSP page /mappa/ngeocoder.jsp at line 26

    23:
    24: String querySQL = "";
    25: querySQL= "SELECT * from places";
    26: ResultSet rs=s.executeQuery(querySQL);
    27: String dat= "";
    28: while((rs.next())){
    29:


    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handle JspException(JspServletWrapper.java:568)
    org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:455)
    org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:728)

    root cause

    javax.servlet.ServletException: java.sql.SQLException: no such table: places
    org.apache.jasper.runtime.PageContextImpl.doHandle PageException(PageContextImpl.java:912)
    org.apache.jasper.runtime.PageContextImpl.handlePa geException(PageContextImpl.java:841)
    org.apache.jsp.mappa.ngeocoder_jsp._jspService(nge ocoder_jsp.java:114)
    org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:728)
    org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:728)

    root cause

    java.sql.SQLException: no such table: places
    org.sqlite.DB.throwex(DB.java:288)
    org.sqlite.NativeDB.prepare(Native Method)
    org.sqlite.DB.prepare(DB.java:114)
    org.sqlite.Stmt.executeQuery(Stmt.java:89)
    org.apache.jsp.mappa.ngeocoder_jsp._jspService(nge ocoder_jsp.java:89)
    org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:728)
    org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:728)

    note The full stack trace of the root cause is available in the Apache Tomcat/7.0.37 logs.
    Apache Tomcat/7.0.37

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    devi imparare a leggere gli errori però...
    codice:
    java.sql.SQLException: no such table: places
    altrimenti non se ne viene fuori.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Utente di HTML.it L'avatar di Mon91
    Registrato dal
    Jul 2013
    Messaggi
    52
    Originariamente inviato da Andrea1979
    devi imparare a leggere gli errori però...
    codice:
    java.sql.SQLException: no such table: places
    altrimenti non se ne viene fuori.
    Grazie dell'aiuto!
    Mi spiego meglio:
    l'errore l'avevo capito leggendo la root cause: non riesce ad individuare la tabella places.
    Mi da errore perchè non ho inserito il file.db da nessuna parte e quindi non lo trova.
    Ho postato il tutto chiedendomi come potessi fare a creare (dentro tomcat immagino) un collegamento tra la jsp e il database. Volevo sapere un modo o un posto dove mettere il mio database in modo che quando viene eseguita la connessione al driver jdbc esso venga trovato e con lui la tabella places! Ho letto qualcosa su .xml e datasource, ma mi sembra tutto molto complicato.. E' questo il modo corretto? Esistono altri modi? Potreste dirmi che operazioni devo affrontare?

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    aspetta, sono stato frettoloso allora. Puoi piazzare il file .db dove ti pare, anche se per motivi di sicurezza, il dove ti pare dovrebbe corrispondere a: qualsiasi posto accessibile al web-server o servlet-container ma non accessibile ad un client. WEB-INF andrà bene. Potrebbe essere anche C:/tuoDatabase.db per quello che importa, basta che poi il percorso che fornisci alla connessione sia consistente.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  8. #8
    Utente di HTML.it L'avatar di Mon91
    Registrato dal
    Jul 2013
    Messaggi
    52
    Originariamente inviato da Andrea1979
    aspetta, sono stato frettoloso allora. Puoi piazzare il file .db dove ti pare, anche se per motivi di sicurezza, il dove ti pare dovrebbe corrispondere a: qualsiasi posto accessibile al web-server o servlet-container ma non accessibile ad un client. WEB-INF andrà bene. Potrebbe essere anche C:/tuoDatabase.db per quello che importa, basta che poi il percorso che fornisci alla connessione sia consistente.
    Mi basta quindi inserire il file.db in una WEB-INF (senza sottocartelle classes o beans perchè non è una classe, vero?) e quando carico dovrebbe trovare la tabella places, ho capito bene?

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    in WEB-INF ci puoi infilare file di configurazione, librerie etc etc specifiche per quella web-app.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  10. #10
    Utente di HTML.it L'avatar di Mon91
    Registrato dal
    Jul 2013
    Messaggi
    52
    Originariamente inviato da Andrea1979
    in WEB-INF ci puoi infilare file di configurazione, librerie etc etc specifiche per quella web-app.

    org.apache.jasper.JasperException: An exception occurred processing JSP page /ngeocoder.jsp at line 26

    23:
    24: String querySQL = "";
    25: querySQL= "SELECT * from places";
    26: ResultSet rs=s.executeQuery(querySQL);
    27: String dat= "";
    28: while((rs.next())){
    29:


    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handle JspException(JspServletWrapper.java:568)
    org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:455)
    org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:728)

    root cause

    javax.servlet.ServletException: java.sql.SQLException: no such table: places


    Ecco un estratto di una guida che fa al caso mio credo...
    Now set up your app. If you don't have a META-INF/context.xml file, then create one. This is a minimal file:

    <?xml version="1.0" encoding="UTF-8"?>
    <Context>
    <Resource name="jdbc/db1.db"
    auth="Container"
    type="javax.sql.DataSource"
    driverClassName="org.sqlite.JDBC"
    url="jdbc:sqlite:/${catalina.home}/db1.db"
    factory="org.apache.tomcat.dbcp.dbcp.BasicDataSour ceFactory">
    </Resource>
    </Context>

    Then add the following to WEB-INF/web.xml:

    <resource-ref>
    <description>Reviews Database</description>
    <res-ref-name>jdbc/db1.db</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>

    Qualcuno ha qualche indicazione da darmi?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.