|
|
|
|
Strumenti |
12-05-2005, 17:32 | #1 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9945
|
[Aplz web] Installazione "webserver" x programmazione "lato server"
Lo scopo di questo prontuario [della serie for Dummies ] è quello di far diminuire l'ignoranza informatica in Italia, poco importa se qualcuno si limiterà a fare copia/incolla di queste righe od imparerà qualcosa col solo scopo di lucrarci.
Confido nelle "nuove luci" per rischiarare il "nostro" paese dalla oscurità in cui è. Forza & onore! Copyright Matrixbob 2004/2005. Varie configurazioni potrebbero essere queste: Apache (o Tomcat) + MySQL (o PostgreSQL) + PHP (o PERL per la CGI) + phpMyAdmin (o phpPgAdmin) ... in sostanza il solito minestrone con licenza GNU Copyleft immagino, giusto?! Ad esempio con la sigla LAMP si tendi indicare Linux + Apache + MySQL + PHP. SOFTWARE Anzitutto, nell'ordine, queste sono le versioni che andrò a tentare d'installare ... che dovrebbero essere le ultime stabili con Winzoz: [1] apache_2.0.53-win32-x86-no_ssl.msi (in versione 2 stabilmente già da qualche anno) [2] php-5.0.4-Win32.zip (perchè mi pare sia l'ultimo modulo stabile di php) [3] mysql-4.1.11-win32.zip (che ha già supporto a transizioni, chiave straniera sulla tabella & vincoli d'integrità referenziali: non è maxDB, ma la fusione di MySQL con MySQL max) [4] MyODBC-3.51.11-1-win.exe (in modo da evitare l'uso di funzioni native in php verso dbms) [5] phpMyAdmin-2.6.1-pl3.zip (per dargli script in pasto e creare basi di dati in fretta) [6] Un buon tools per progettare basi di dati (se ne conoscete sprate pure..) [7] Static DNS for Your Dynamic IP INSTALLAZIONE Ho installato Apache mettendo come network domain: localhost & come server name: localhost. L'email il mio. lo ho lasciato in attesa sulla porta 80. Installazione "tipica" nella cartella di default. Fine installazione di Apache per ora. Lo provo digitando localhost nel browser e se tutto è ok compare la pagina di Apache. Altra documentazione, comprese le direttive, le trovate nella sua cartella /htdocs/manual Passiamo al PHP. Scompatto il file ZIP riguardante il PHP5. La documentazione è in install.txt. Rinomino la cartella creatasi con indicata la versione in semplice cartella php. Copio php5ts.dll e php5apache2.dll nella cartella system32 di Winzoz. Rinomino php.ini-dist in php.ini e mi preparo ad aprirlo con un semplice editor di testo standard. Apro php.ini e setto stando attenti ad usare un path WINDOWS like: extension_dir "... path della cartella php\extensions" upload_tmp_dir "... path della cartella Winzoz\Temp" SMTP "URI del nostro mailer" sendmail_from "il mittente della email spedita dal nostro mailer" session.save_path "... path della cartella Winzoz\Temp" Salvo il file php.ini e lo taglio per incollarlo nella cartella di WINDOWS. Torniamo alla configurazione di Apache2. Apriamo l'httpd.conf del webserver precedentemente installato con l'installer ed aggiungiamo al fondo in append, stando attenti ad usare path in formato UNIX like stavolta: LoadModule php5_module c:/php/php5apache2.dll AddType application/x-httpd-php .php Poi cerchiamo e modifichiamo la DocumentRoot path della cartella che voglio rendere “public_html" e sempre 20 righe sotto la stesso path alla voce <Directory>. Infine a DirectoryIndex aggiungiamo index.php. Si salva l'httpd.conf e si fa ripartire Apache nel qualcaso fosse stato acceso durante tutta la modifica del suo file di configurazione. Ora il tipico test in grado di verificare la collaborazione di Apache con il linguaggio lato server php è quella di creare un file.php contenente <?php phpinfo(); ?> salvarlo e richiamarlo da browser con Apache attivo. ERRORI TIPICI in caso d’errore all’avvio di Apache controllare che il file php_mysql.dll stia nella cartella ext o extensions perchè io l'avevo chiamata così nel php.ini la cartella contenente le estensioni. Poi si decommentata (togliendo il ; innanzi) la stringa extension=php_mysql.dll nel file php.ini. Inoltre il file libmysql.dll deve stare nella cartella system32. Se tutto è andato bene si riveleranno a noi le caratteristiche del webserver appena creato. Tocca all’installazione di MySQL, faccio l’installazione approfondita e rispondo leggendo attentamente alle domande. A MySQL installato è meglio provare se tutto è ok mettendo da prompt di winzoz: > mysql -u root –p poi inserite la password da voi scelta per root durante l'installazione del DBMS e se tutto è ok, allora compare il wellcome! (oppure > mysql -help per sapere tutti i comandi) [N.B.] Sia Apache che MySQL si settano come servizi in autorun all'avvio, se volete altrimenti settateli come volete, io li setto ad avvio manuale. Installo l’ODBC che sarà utile nel caso non si interrogasse il DBMS in modo nativo. Adesso trattiamo PMA che è 1 applicazione scritta in PHP e quindi che per funzionare ha bisogno della corretta installazione di webserver + il linguaggio lato server PHP. All'interno della cartella di PhpMyAdmin#versione c'è Documentation.html che spiega approfonditamente la configurazione di quest'ultimo. Provo a riassumerla alla buona: [1] si apre il file config.inc.php con 1 semplice editor di testo [2] setto l'URI della directory di PMA: Codice PHP:
setto l'accesso a MySQL: Codice PHP:
ERRORI TIPICI "l'estensione PHP mbstring non è stata trovata e sembra che si stia utilizzando un set di caratteri multibyte. Senza l'estensione mbstring, phpMyAdmin non è in grado di dividere correttamente le stringhe di caratteri e questo può portare a risultati inaspettati". Cioè c'è scritto: manca l'estensione mbstring e quindi va decommentata (togliendo il ; innanzi) la stringa extension=php_mbstring.dll nel file php.ini ed il file php_mbstring.dll messo in extensions. Praticamente è la stessa cosa che andava fatta anche col file php_mysql.dll in precedenza. SICUREZZA Nel file httpd.conf si va a cercare questa parte di testo: Codice:
<Directory "path della mia cartella www pubblica"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs-2.0/mod/core.html#options # for more information. # Options Indexes FollowSymLinks # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride AuthConfig # # Controls who can get stuff from this server. # Order allow,deny Allow from all </Directory> Order è l'ordine di valutazione ovvero prima permetto chi e poi vieto a chi, oppure, prima vieto a chi e poi permetto a chi. Quindi una configurazione valida potrebbe essere: Order allow,deny Allow indirizzoIP indirizzoIP dominio_qualsiasi .... etc etc .... Deny indirizzoIPcattivo Quindi l'indirizzoIPcattivo ha il divieto d'accesso al nostro web server Apache. AllowOverride AutoConfig da il risultato di permettere agli utenti del web server di poter configurare loro stessi in locale alcune direttive di Apache in un file ".htaccess". Un esempio tipico dell'uso di ".htaccess" è quello di gestire le autenticazioni all'accesso. In caso di questo errore: [Wed May 11 15:14:03 2005] [alert] [client 127.0.0.1] D:/www/.htaccess: Invalid command 'AuthDigestFile', perhaps mis-spelled or defined by a module not included in the server configuration Va decommentata, in httpd.conf, questa stringa: LoadModule auth_digest_module modules/mod_auth_digest.so Ok il contenuto del mio file .htaccess è: AuthType Digest AuthName "nome_gruppo_cui_far_appartenere_l'autentificazione_dell'utente" AuthDigestFile path_assoluto_unix_like/.htpasswd Require valid-user Il file .htpasswd lo create col comando di apache (quindi nella sua cartella bin) lanciato da shell (o si dice prompt dei comandi?! o_O) in questo modo: > htdigest -c .htpasswd nome_gruppo_cui_far_appartenere_l'autentificazione_dell'utente username Dopo di che seguite cosa vi chiede il programma. Require valid-user indica che a poter essere autenticato deve essere un utente presente in .htpasswd. VIA LIBERA ALLA FANTASIA A questo punto non rimane che progettare in EER la base di dati e trasformarla in relazionale preferibilmente con qualche tool per non perdere giorni della propria vita a creare il DB manualmente. La maggior parte di quei tool permettono una creazione automatica di script in SQL puro che potete mandare in esecuzione in svariati modi (sqlconsole, phpmyadmin, etc …). Dopo di che s'interroga il DB con PHP in ODBC se si vuole indipendenza dal DBMS installato quindi MySQL piuttosto che PostgreSQL. Oppure se si vuole + efficienza con funzioni "native" verso il DBMS scelto (quindi qui ci tocca scegliere se efficienza o portabilità): my_connect(...); pg_connect(...); odbc_connect(...); e + in generale: X_connect(...); Altra piccola cosa degna di nota sono i "trigger" che in PostgreSQL sono implementati e vi permettono di agire ad eventi sulle tabelle della base di dati, cose che potrebbero essere molto utili in alcune applicazioni web. MULTIUTENZA APACHE Informazioni riguardanti la multiutenza di Apache le trovate QUI per ora. --- Link inerenti: [Tutorial] Installazione di Apache+php e IIS+PHP Perle di conoscenza: [php] Reindirizzamento [MySQL] Come implemento le transazioni in PHP?! [php] Mandare email con PHP: come setto il php.ini?! [MySQL] Voglio memorizzare 1 pathfile ma fallisco .. [MySQL-PHP] Confronto tra date: come?! [PHP-MySQL] Cercare sottostringhe nel DB, come fan le Pagine Gialle [PHP-MySQL] Rendere NON CASE SENSITIVE una ricerca nel DB è possibile?! [MySQL] Consiglio x backup dei dati. [WEB] X avere 1 URL così "miocliente.miosito.it" cosa devo fare?! [php] Posso "vendere" 1 aplz web fatta da me in PHP?! [Hack] Chi conosce la "SQL injection" e come si evita?! (parte 1) [Hack] Chi conosce la "SQL injection" e come si evita?! (parte 2) [PHP-MySQL] Miglior HW x far girare questi SW?! [Web] URL o URI?! date in php e mySQL [PHP-Apache] Più sicura l'autenticazione digest d'Apache o la PWD nel codice PHP?! [MySQL] chi usa mysql_free_result() ?! Chiarimenti: a che servono le variabili d'ambiente?! [W3C] Rendere valida 1 pagina con bottoni flash si può?! Che file devo modificare x inserire in Winzoz il path di 1 prg ... PHP: Self submission, onclick, onsubmit .. config.inc che cosa significa?! Che editor web usate?! .. il modulo Perl per Apache?! E' possibile non mostrare le pagine nel URL?! xml, xhtml, dhtml, html, .. ho 1 po di confuzione! DTD di tutti i gusti .. ma xkè in alcuni compare xml ad esempio?! accedere a mysql da altra macchina [php] VC9 x86 Thread Safe: cosa significa?
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. Ultima modifica di Matrixbob : 08-02-2010 alle 09:47. |
13-05-2005, 19:55 | #2 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9945
|
Webserver >> CGI << PERL
Autore Matrixbob-kingv 2004/2005 La coppiata webserver/PERL è resa possibile dalle Common Gateway Interface (interfaccia d'ingresso comune?!) che sono un insieme di protocolli tali che 1 client possa richiedere ed ottenere risultati da 1 server che interpreta uno script od esegue la compilazione di un qualche programma. PERL (Practical Extraction and Report Language ovvero linguaggio pratico d'estrazione e rapporto?!) è 1 famosissimo linguaggio interpretato (proprio per essere + portatile rispetto ad 1 linguaggio compilato) nato nel 1987 x la gestione delle stringhe di caratteri, inseguito riutilizzato anche per alcune semplici applicazioni web. In quest'ultimo caso invece di mandare lo standard output a video, il flusso viene rindirizzato in "qualche modo" al browser client sotto forma di risposta xhtml. INSTALLAZIONE La versione x Winzoz mi risulta essere quella della: http://www.activestate.com La si installa e poi si va a decommentare nel httpd.conf la stringa riguardante il modulo CGI: LoadModule cgi_module modules/mod_cgi.so Inoltre va specificata la posizione della cartella tipica dei cgi e vale a dire cgi-bin & lo ScriptAlias al riguardo. Quindi nel nostro caso: <Directory "D:/www/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory> e ScriptAlias /cgi-bin/ "D:/www/cgi-bin/" Questa direttiva ScriptAlias permette di settare una directory, anche esterna alla DocumentRoot, come CGI container (soluzione adottata di default). In questo caso Apache interpreterà tutte le richieste con l'url che conterrà cgi-bin come richieste per risorse all'interno della directory D:\www\cgi-bin\ A questo punto tutti le applicazioni CGI scritte in PERL andranno messe nella cartella cgi-bin per essere eseguite, mentre le parti di xhtml resteranno della cartella www, insieme ai file.php o file.htm nel qualcaso fossero presenti. Come script di prova create un file col nome printenv.cgi, in cgi-bin, contenente: Codice:
#! D:\Perl\bin\perl.exe ## ## printenv -- demo CGI program which just prints its environment ## print "Content-type: text/plain\n\n"; foreach $var (sort(keys(%ENV))) { $val = $ENV{$var}; $val =~ s|\n|\\n|g; $val =~ s|"|\\"|g; print "${var}=\"${val}\"\n"; } http://localhost/cgi-bin/printenv.cgi scordatevi di poter accedere alla cartella cgi-bin, perchè essa di default è protetta dal listing. Se tutto è ok otterrete lo stesso risultato della "phpinfo()" del PHP!! Se non sapete già programmare in questa maniera, allora ve la sconsiglio, trovo personalmente molto + facile il PHP o linguaggi proprietari come ASP.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. Ultima modifica di Matrixbob : 18-06-2005 alle 00:17. |
14-05-2005, 10:08 | #3 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9945
|
What is DBI?
The DBI is the standard database interface module for Perl. It defines a set of methods, variables and conventions that provide a consistent database interface independent of the actual database being used. Autore Matrixbob 2004/2005 Per usarlo occorre installare il modulo, e quindi seguire una delle 2 procedure. [INSTALLAZIONE 1] Scaricare: DBD-mysql-2.9006.tar.gz ed installarlo: INSTALL - How to install and configure DBD::mysql ----------------------------------------------------------------- SYNOPSIS perl Makefile.PL [options] make make test make install [INSTALLAZIONE 2] Usare il Perl Package Manager presente in ActivePerl: BINARY INSTALLATION Binary installation is possible in the most cases, depending on your system. I give some examples: Windows ActivePerl offers a PPM archive of DBD::mysql. All you need to do is typing [1] ppm [2] install DBI [3] install DBD-mysql
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. Ultima modifica di Matrixbob : 30-05-2005 alle 11:17. |
14-05-2005, 12:20 | #4 |
Senior Member
Iscritto dal: Nov 2001
Città: Trento
Messaggi: 7095
|
per eseguire un java script bisogna avere qualcosa di particolare?
ciao ciao e grazie
__________________
MyPC: A7A266 - Thoro1800+@2000+ - SK6 - 512DDR - FX5200 128MB - SBLive!1024 - MAXTOR120GB - Liteon LTR52327S LDW-451S HTPC: Case uATX QTec - GA 7VM400M - Duron1600 - ALX800 - 256DDR - Radeon7000 - LiteOn166 - Pow by GeexBox 0.98.5 Utenti con cui ho trattato |
14-05-2005, 13:14 | #5 | |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9945
|
Quote:
CMQ i JavaScript sono implementati automaticamente dal browser client in locale. Tieni presente che la domanda è così "ciclica" che bastava fare una ricerca su google e forse anche sul forum. Non far seguir risposta, tnx.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. Ultima modifica di Matrixbob : 21-05-2005 alle 17:49. |
|
21-05-2005, 16:46 | #6 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9945
|
Passiamo alle altre alternative utili allo sviluppo d'applicazioni web, ed ahi me sempre sotto Winzoz (che il Signor ci aiuti ).
Autore Matrixbob 2004/2005 INTRODUZIONE Le nomencalture Java della Sun: >1< RE o Runtime Enviroment = è l'ambiente d'esecuzione di applicazioni Java desktop/client. >2< SDK o Software Development Kit = è 1 insieme di strumenti per lo sviluppo d'applicazioni Java. E' il "core" di questo linguaggio. Tutte le altre librerie possono essere ricavate a partire dal "core". >3< SE o Standard Edition = è il gestore d'applicazioni desktop/client. Contiene sia l'edizione RE che l'SDK. >4< EE o Enterprise Edition = è tutto il mondo Java e la tecnologia che da esso scaturisce. >5< JDK o Java Development Kit = è 1 alias del'SDK. >6< Esistono altre sigle che non prenderemo in considerazione, tipo le ME o Micro Edition, etc .. SOFTWARE Nell'ordine, queste sono le versioni che andrò a tentare d'installare ... che dovrebbero essere le ultime stabili con Winzoz: [1] jdk-1_5_0_03-windows-i586-p.exe (qui i nomi SDK<-->JDK continuano ad alternarsi nel tempo, mah ...) [2] jakarta-tomcat-5.5.9.exe (il webserver Tomcat) [3] j2eesdk-1_4_01_2005Q1-windows.exe (il mondo Java, lo installiamo perchè al suo interno ci sono "cose" e librerie già sviluppate molto interessanti) NOZIONI CULTURALI <> Jakarta è il nome del gruppo di persone che lavorano col Java per l'Apache Software Foundation. <> Tomcat è 1 webserver che soddisfa le specifiche Java "server side" di Sun. <> Catalina è il "motore o engine" Java di Tomcat che fornisce l'ambiente d'esecuzione delle Servlet. <> Jasper è il gestore delle pagine JSP di Tomcat. <> Coyote è il connettore HTTP di Tomcat che fornisce l'implementazione del protocollo HTTP per permettere ai browsers di accedere a Tomcat. <> 1 server è 1 {servizi}. <> 1 servizio è 1 {connettori}. <> 1 connettore è 1 protocollo di comunicazione su 1 porta; Es: oltre a Coyote esiste 1 connettore chiamato AJP (Apache Java Protocol) su porta 8009 al quale verranno dirottate da Apache le richieste http ad Apache, che però son previste svolgere da Tomcat, nel qualcaso Tomcat fosse settato come modulo d'Apache e non in "stand alone". <> 1 connettore -- associato --|> 1 "engine" come Catalina. <> 1 "engine" -- associato --|> + host virtuali come il nostro localhost. <> 1 host virtuali -- associato --|> + contesti come quello della nostra applicazione web. Per i problemi di compilazione col Java vi rimando qui: [Tutorial Java] Guida alla compilazione e per una panoramica globale qui: [Java] Corsi e tutorial. Per le domande relativamente "banali" che vi saltano in mente questo altro: Programmazione F.A.Q.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. Ultima modifica di Matrixbob : 05-06-2005 alle 15:46. |
21-05-2005, 18:16 | #7 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9945
|
Autore Matrixbob-kingv 2004/2005
Installazione di Tomcat "stand alone", quindi non come modulo d'Apache. L'installazione avviene nel ordine prima elencato, seguendo i wizard. Ad installazione completata avrete Tomcat in attesa sulla porta 8080 e per raggiungerlo dovrete dare http://localhost:8080 invece che solo http://localhost il quale sottointende di default sia la porta 80. Sulla porta 80 ci resta Apache se lo avete installato precedentemente. A installazione completata in: C:\Programmi\Apache Software Foundation\Tomcat 5.5\conf\server.xml avrò la configurazione generale del webserver Tomcat. Deploying Servlet L'administrator si dovrà occupare di creare i file.xml di contesto nella cartella: C:\Programmi\Apache Software Foundation\Tomcat 5.5\conf\Catalina\localhost Meglio dare 1 nome intuitivo a questi file per ricordarvi che contesto vanno a settare, come sarebbe sempre opportuno fare in programmazione al fine di non complicare la vita ad altri programmatori ed a noi stessi col passare del tempo. Per contesto s'intende associare 1 alias di contesto al path assoluto alla cartella public_html dell'utente. Ad esempio, il mio file "www.xml": Codice HTML:
<!-- Context configuration file for ... la mia cartella www --> <Context path="www" docBase="D:\www\public_html"> </Context> [NB] Se avete inserito 1 "Tilda" ovvero l'ondicella ~ nel alias (come si è soliti fare tra utenti UNIX like), allora nell'URL dovrete mettere "%7E" per rimpiazzare la "Tilda" nel qualcaso non aveste quel carattere a disposizione altrove. Per non avere 1 "shared directory" (la tipica DocumetRoot di Apache per esempio) accessibile a tutti, gli utenti dovrano crearsi nella loro public_html la cartella "WEB-INF" ed al suo interno creerenno ancora: 1 cartella "src", 1 cartella "classes", 1 cartella "lib" ed 1 file "web.xml" inizialmente vuoto. [1] "src" conterrà i file.java delle Servlet, ovvero i sorgenti. [2] "classes" conterrà le Servlet compilate e quindi i file.class. [3] "lib" conterrà le classi di altri che mi servono, probabilmente in formato JAR cioè file.jar, come ad esempio il driver JDBC. [4] "web.xml" è il file di configurazione delle mie applicazioni web e quindi anche di tutte le Servlet che compongono 1 applicazione web. ESEMPIO ... il mio file "web.xml" per la Servlet "GreetingServlet": Codice HTML:
<web-app> <servlet> <servlet-name>GreetingServlet</servlet-name> <servlet-class>GreetingServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>GreetingServlet</servlet-name> <url-pattern>/GreetingServlet</url-pattern> </servlet-mapping> </web-app> Codice HTML:
<p> Run the servlet Greeting: click <a href="http://localhost:8080/www/GreetingServlet?name='Roberto'&email='matrixbob@tin.it'">here</a> </p> D:\www\public_html\WEB-INF\classes ed il file di contesto "www.xml" è fatto così: Codice HTML:
<Context path="www" docBase="D:\www\public_html"> </Context>
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. Ultima modifica di Matrixbob : 21-06-2005 alle 17:48. |
22-05-2005, 17:47 | #8 |
Senior Member
Iscritto dal: Mar 2004
Messaggi: 16052
|
bel lavoro complimenti, ho fatto una cosa simile per la mia tesi di 5a superiore con Linux + Apache + PHP + MySQL e con Windows + IIS + PHP + MySQL...
magari quando ho finito gli esami la metto anche io EDIT Ops Ultima modifica di sirus : 22-05-2005 alle 18:15. |
22-05-2005, 17:56 | #9 | |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9945
|
Quote:
Non vedi che in questo modo lo spezzi?! Tutto ben venga. Nn far seguir risposta qui plz. Tnx.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
|
23-05-2005, 20:19 | #10 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9945
|
Autore Matrixbob-kingv 2004/2005
Riepilogo delle mie prove. Alla fine mi sono creato 1 file "web.xml" così fatto per 3 Servlet differenti: Codice HTML:
<web-app> <servlet> <servlet-name>GreetingServlet</servlet-name> <servlet-class>GreetingServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>GreetingServlet</servlet-name> <url-pattern>/GreetingServlet</url-pattern> </servlet-mapping> <servlet> <servlet-name>GreetingServletPost</servlet-name> <servlet-class>GreetingServletPost</servlet-class> </servlet> <servlet-mapping> <servlet-name>GreetingServletPost</servlet-name> <url-pattern>/GreetingServletPost</url-pattern> </servlet-mapping> <servlet> <servlet-name>QueryJdbc</servlet-name> <servlet-class>QueryJdbc</servlet-class> </servlet> <servlet-mapping> <servlet-name>QueryJdbc</servlet-name> <url-pattern>/QueryJdbc</url-pattern> </servlet-mapping> </web-app> <p> Run the servlet Greeting: click <a href="http://localhost:8080/www/GreetingServlet?name='Roberto'&email='matrixbob@tin.it'">here</a> </p> ed a richiamare le Servlet scritta apposta per il metodo "doPost" attraverso 1 "POST" con: <form name="myform" method="post" action="GreetingServletPost">
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. Ultima modifica di Matrixbob : 18-06-2005 alle 00:11. |
25-05-2005, 07:53 | #11 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9945
|
Autore Matrixbob-kingv-mjordan 2004/2005
CONSIDERAZIONI * Per evitare di aggiungere il CLASSPATH a mano ogni volta che compilavo 1 Servlet da stringa di comando, (Cmd> javac -classpath c:\tuopath\file_che_contiene_le_classi.jar TuaServlet.java) è stato necessario aggiunger il CLASSPATH come "variabile d'ambiente" di Winzoz. * Ah, non dimentichiamo che anche i comandi JAVA vanno aggiunti comodamente nella "variabile d'ambiente" PATH, in modo di poter compilare in qualsiasi directory. * E' stata creata anche la "variabile d'ambiente" CATALINA_HOME che a dir di molti serve avere, anche se io per ora non ne ho sentito il bisogno. Con la sintassi %NOME_VARIABILE%, ti riferisci al valore della "variabile d'ambiente" NOME_VARIABILE, che è l'equivalente di $NOME_VARIABILE in bash. Infatti facendo: Shell> cd $CATALINA_HOME (Unix like) Cmd> cd %CATALINA_HOME% (Windows like) si ragginge la cartella d'installazione di Tomcat.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. Ultima modifica di Matrixbob : 30-05-2005 alle 11:29. |
25-05-2005, 10:54 | #12 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9945
|
Autore Matrixbob 2004/2005
JDBC Vedremo se riusciremo ad accedere al DBMS utlizzando il connettore JDBC. Non occorre altro che sistemare il file.jar relativo al JDBC nella cartella "lib" precedentemente creata. (io proverò questo: "mysql-connector-java-3.1.8-bin.jar") Sperando che implementi questa tipologia di JDBC: Perfetto, funziona! Bisogna solo stare attenti a come utilizzare il driver dentro la Servlet, tenendo presente che i file JAR sono archivi contenenti anche sottocartelle e quindi che per raggiungere 1 file org\gjt\mm\mysql\driver.jar occorre usare la sintassi JAVA "org.gjt.mm.mysql.Driver". MIEI CONSIGLI Alcune parti di codice potrebbero essere: Codice:
try{ Class.forName("org.gjt.mm.mysql.Driver"); // Class.forName("org.postgresql.Driver"); } catch (ClassNotFoundException e) {e.printStackTrace(); throw new ServletException(e.getMessage());} Codice:
private static String url="jdbc:mysql://localhost/queryjdbc?user=root&password=la_tua_password"; private Connection conn=null; try{ conn=DriverManager.getConnection(url); } catch (SQLException s) {s.printStackTrace(); throw new ServletException(s.getMessage());} Meglio, secondo me, trattare questa "parte di programmazione" nel metodo: Codice:
public void init(ServletConfig config) throws ServletException Magari, chiudere la connessione nel metodo: Codice:
public void destroy() [NB] Meglio sempre catturare le eccezioni di JAVA altrimenti si rischia di diventare pazzi nel capire come mai le cose non fuzionano. I connettori JDBC/ODBC sono scaricabili dal sito dei produttori del DBMS.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. Ultima modifica di Matrixbob : 21-06-2005 alle 17:46. |
25-05-2005, 15:53 | #13 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9945
|
Autore Matrixbob 2004/2005
JSP (Java Server Pages): San Francisco 1998. Come qualche saggio disse: "... le Servlet sono per i programmatori, mentre le JSP son per i webmaster/webdesigner"! Se PERL-CGI e Servlet sono simili allora anche PHP/ASP e JSP son simili. Noi scriviamo la pagina.jsp in stile "XHTML like" e Jasper la trasforma automaticamente in Servlet al momento del primissimo richiamo, ovviamente tutto in maniera trasparente all'utente. JSP: quali possibilità?! Sicuramente le + diffuse, se ben non le sole, sono: [1] Scriptlet. [2] Standard actions: include, forward, plugin & useBean. [NB] Java Bean: codice riusabile scritto, probabilmente da altri, secondo determinate regole. A noi interessano principalente le sue interfacce. La scrittura di questa "particolare" classe ci permette di separare la logica dalla presentazione nella nostra applicazione. Per saperne di più: http://www.mokabyte.it/1997/01/beans.htm http://java.sun.com/products/javabeans/ [3] Direttive: page & include. [4] Librerie di TAG: di tipo DBTAG, di tipo JSLT & di tipo custom (cioè scritte da noi). Trovate parte della descrizione qui: JspItalia JSP Area Oggetti impliciti Per tutte le 4 entità sopra elencate esistono degli oggetti già implicitamente istanziati, tra i + importanti: config, out, response e request. La cui visibilità (il famoso scope della variabile) può essere di tipo: [1] application: sempre visibile. [2] page: visibile nella pagina. [3] request: visibile per la singola richiesta. [4] session: visibile per tutta la sessione. [NB] ° Dato che già in molti hanno cercato di spiegarli (anche se pasticciando troppo) come, tra i + famosi: http://www.risorse.net/jsp/ http://www.html.it/jsp/ http://www.latoserver.it/eventi/plut...sp/slide1.html allora io trattero solo qualche "cosina" e magari come al solito dal punto di vista pratico e curioso, cercando di essere anche "pedantico" nella sostanza. ° Vi consiglio comunque di procurarvi un libro decente al riguardo, io solitamente uso quelli da 4 soldi della Mondadori o Apogeo anche se sarebbe consigliabile un bel testo come il Deitel. VELOCE PANORAMICA [1] Scriptlet: vanno bene quando il contenuto statico di 1 pagina "XHTML like" è per la maggior parte statico e con qualche macchia di dinamicità. Es di file "date.jsp": Codice HTML:
Inizio codice XHTML
...
<%= new java.util.Date(); %>
...
Fine codice XHTML
[2] Standard actions: le azioni sono quelle citate in precedenza, si differenziano dalle direttive per il fatto che sono estremamente dinamiche, vengono rieseguite ad ogni richiesta HTTP, mentre le direttive vengono eseguite solo alla prima richiesta HTTP. Es di file "include.jsp": Codice HTML:
Inizio codice XHTML
...
<jsp:include page = "bunner.html" flash = "true" />
...
Fine codice XHTML
Es di file "forward.jsp": Codice HTML:
Inizio codice XHTML ... <jsp:forward page = "elabora.jsp" flash = "true"> <jsp:param name = "date" value = "<%= new java.util.Date(); %>" /> </jsp:forward> ... Fine codice XHTML Es di file "useBean.jsp": Codice HTML:
<?xml version = "1.0"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <jsp:useBean id = "rotator" scope = "application" class = "Rotator" /> <html xmlns = "http://www.w3.org/1999/xhtml"> <head> <title>AdRotator Example</title> <%-- update advertisement --%> <% rotator.nextAd(); %> </head> ... altro codice XHTML id = "rotator" mi crea l'istanza del bean Rotator.java e la chiama rotator. Codice HTML:
altro codice XHTML ... <jsp:getProperty name = "rotator" property = "link" /> ... <jsp:getProperty name = "rotator" property = "image" /> ... Fine codice XHTML [3] Direttive: Utilizza la sintassi <%@ qualcosa %> sono meno dinamiche rispetto alle standard actions che vengono eseguite ad ogni refresh del browser, mentre le direttive sono eseguite solo al primo richiamo e quindi alla prima compilazione in Servlet dal JSP. [4] TAG libreries: si dividono in DBTAG (semplici ma deprecate), JSLT (complesse in stile "C like", ma standard) & custom (quelle che definiamo noi). # Delle DBTAG ho scaricato queste: jakarta-taglibs-dbtags-20050605.zip da qui: http://cvs.apache.org/builds/jakarta...ojects/dbtags/ e sembrano andare bene. # Per le JSLT ho deciso di scaricare queste: jakarta-taglibs-standard-1.1.2.zip da: http://jakarta.apache.org/site/downl...s-standard.cgi [NB] I rispettivi file.JAR andranno inseriti in D:\www\public_html\WEB-INF\lib. Per la loro documentazione invece visitate il sito ufficiale: http://jakarta.apache.org/taglibs/index.html # Quando invece lavoriamo con la custom avremo sempre a che fare con 3 file: [i] 1 file.tld che è scritto in XML. Dice quel file.class eseguire per 1 determinato TAG. [II] 1 file.java che è una Servlet implementante il nostro "effetto" TAG. Ovviamente andrà compilato in 1 file.class. [III] 1 file.jsp che utilizza i TAG custom da noi realizzati.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. Ultima modifica di Matrixbob : 21-06-2005 alle 17:44. |
05-06-2005, 15:54 | #14 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9945
|
JSP: ESEMPI DI CHIARIMENTO
esempio di bean esempio di custom tags esempio di DBTAGS esempio di JSTL tags JSP: problemi con PostgreSQL! Inoltre con PostgreSQL pare NON esistere 1 driver di Type 4 e questo potrebbe essere la spiegazione al fatto che le query invece di essere eseguite, vengono stampate a video in formato SQL: Mente l'output corretto sarebbe stato qualcosa di simile:
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. Ultima modifica di Matrixbob : 28-06-2005 alle 19:05. |
12-08-2005, 14:29 | #15 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9945
|
Link interessanti:
[JSP] Problema di conversione dei tipi usando DBTAGS [JSP] File upload: qualcuno lo sa fare?! [JAVA] 4 domande: package, WAR, JAR, ... [Java] Jakarta e Tomcat: perchè sti nomi?!
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. Ultima modifica di Matrixbob : 03-09-2005 alle 14:15. |
09-09-2005, 22:14 | #16 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9945
|
Ultime cose imparate:
[1] Si possono rendere insiemi d'attributi UNIQUE in modo da non utilizzare una chiave composta su questi attributi, ma solo un semplice attributo ID. Dillemma che avevo affrontato qui, non comprendendolo completamente: [DBMS] Secondo voi 1 evento da cosa è identificato?! [2] Prestare + attenzione a come si utilizzano i link GET. Altre cose utili: Differenze tra prompt e shell?!
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. Ultima modifica di Matrixbob : 14-09-2005 alle 10:09. |
22-10-2005, 14:07 | #17 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9945
|
[UPDATE]
Tutto funziona anche con: apache_2.0.55-win32-x86-no_ssl.msi php-5.0.5-Win32 mysql-4.1.15-win32.exe
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. |
04-11-2005, 18:46 | #18 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2766
|
azzzzz mi serviva proprio!!!
complimenti! mi toccherebbe fare un server per il mio sito ma vedendo tutta sta robba mi passa la voglia ! |
02-04-2006, 10:09 | #19 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 9945
|
Problemi con l'installazione di:
apache_2.2.2-win32-x86-no_ssl.msi http://archive.apache.org/dist/httpd/binaries/win32/ php-5.1.4-Win32 http://www.php.net/downloads.php MySQL 5.0.22 http://dev.mysql.com/get/Downloads/...2.zip/from/pick phpMyAdmin-2.8.1 http://prdownloads.sourceforge.net/....1.zip?download Vedere: [Apache 2.2.2] Sorgono problemi configurazione x PHP e vedere: [LAMP] MySQL - Apache: nelle ultime versioni vanno in conflitto?!
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<< Più largo è il sorriso, più affilato è il coltello. Ultima modifica di Matrixbob : 03-06-2006 alle 15:37. |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:59.