PDA

View Full Version : Aiuto per newbye dell'HTML


Web Wolf
25-06-2003, 11:10
Ciao ragazzi, sono nuovo dell'HTML e sto provando le prime righe di un sito che sto facendo. Sto provando i pulsanti "radio", ma non capisco come mai non sono mutuamente esclusivi: il mio libro dice che uno dovrebbe escludere l'altro, ma a me si selezionano entrambi. Che cosa ho sbagliato ?



<html>

<head>
<title>Pagina 1</title>
</head>

<body background="c://programmi//jakarta-tomcat-3.3.1a//webapps//root//immagini//sfondo2.jpg" text="yellow">

<p><br></br></p>

<H2 align="center">Per favore specificate la vostra identità</h2>

<p><br></br></p><p><br></br></p><p><br></br></p><p><br></br></p>


<table border="0" cellpadding="3" cellspacing="0" align="center">

<tr><input name="root" type="radio" value="RT">Amministratore</input>
<tr><input name="guest" type="radio" value="GT" checked>Utente esterno</input>

</table>

</body>

</html>[/i]

cisc
25-06-2003, 11:16
dai lo stesso nome ai pulsanti

ciao

Web Wolf
25-06-2003, 12:35
Un'ultima cosa, come mai se clicco sul pulsante di "submit" non mi va alla pagina "homepage.jsp" ? Dovrebbe essere tutto ok, ma sembra passivo quando ci clicco non fa niente :confused: .

Ho provato anche con il classico pulsante di submit (senza immagine) ma non cambia niente: dove sbaglio secondo te ?

Grazie in anticipo
Ciao



<html>

<head>
<title>Pagina 1</title>
</head>

<body background="c://programmi//jakarta-tomcat-3.3.1a//webapps//root//immagini//sfondo2.jpg" text="yellow">

<p><br></br></p>

<H2 align="center">Per favore specificate la vostra identità</h2>

<p><br></br></p><p><br></br></p><p><br></br></p><p><br></br></p>


<form method="post" action="c://programmi//jakarta-tomcat-3.3.1a//webapps//root//homepage.jsp">

<table border="0" cellpadding="3" cellspacing="0" align="center">

<tr><input name="identity" type="radio" value="root">Amministratore</input>
<tr><input name="identity" type="radio" value="guest" checked>Utente esterno</input>

<p><br></br></p><p><br></br>

<input type="image" value="Login" align="center" src="c://programmi//jakarta-tomcat-3.3.1a//webapps//root//immagini//b12.gif">


</table>

</form>

</body>

</html>

lombardp
25-06-2003, 13:04
Se scrivi questo:

<form method="post" action="c://programmi//jakarta-tomcat-3.3.1a//webapps//root//homepage.jsp">

...è male!

Perché la pagina JSP possa essere compilata ed eseguita devi dare un URL del tipo http://localhost/homepage.jsp (nel caso in cui il web server usi la porta 80 di default e nel caso in cui homepage.jsp sia nella root, come sembra). Più semplicemente e più correttamente utilizza un URL relativo, per esempio:

<form method="post" action="homepage.jsp">

Questo per dirti che l'indirizzo di submit non deve essere un indirizzo di filesystem (C://etcetera) del tuo PC, ma un indirizzo http, che passa cioè da Tomcat. L'indirizzo di filesystem viene caricato dal browser direttamente (non viene cioè eseguito come pagina JSP) ed infatti il browser non fa niente.

Web Wolf
25-06-2003, 15:34
Avevi perfettamente ragione, però ho notato che se imposto l'indirizzo WEB anche per quello che riguarda le immagini, non viene caricato niente, mentre se dò un indirizzo locale si.

Es.

http://simonenerpiti.mine.nu//immagini//b12.gif

non mi carica l'immagine b12.gif nella pagina, mentre se mettevo l'indirizzo come prima si.

Come mai questo ?

Web Wolf
25-06-2003, 15:38
Avevi perfettamente ragione, però ho notato che se imposto l'indirizzo WEB anche per quello che riguarda le immagini, non viene caricato niente, mentre se dò un indirizzo locale si.

Es.

http://simonenerpiti.mine.nu//immagini//b12.gif

non mi carica l'immagine b12.gif nella pagina, mentre se mettevo l'indirizzo come prima si.

Come mai questo ?

cisc
25-06-2003, 17:39
per le immagini usa un indirizzo relativo alla directory corrente

Web Wolf
25-06-2003, 18:51
Volevo sperimentare una pagina di richiesta che trasmettesse il parametro "identity" avente come valore o "root" oppure "guest" a seconda della scelta fatta.

La pagina che effettua la richiesta é la seguente

-----------------------------------------------------------------------------------
<html>

<head>
<title>Identificazione utenti</title>
</head>

<body background="C://Programmi//jakarta-tomcat-3.3.1a//webapps//root////immagini//sfondo5.jpg" text="yellow">

<p><br></br></p>

<H2 align="center">Per favore specificate la vostra identità</h2>

<p><br></br></p><p><br></br></p><p><br></br></p><p><br></br></p>


<form method="post" action="homepage.jsp">

<table border="0" cellpadding="3" cellspacing="0" align="center">

<tr><td><img src="C://Programmi//jakarta-tomcat-3.3.1a//webapps//root////immagini//computerdattilografo.gif">
<td><input name="identity" type="radio" value="root">Amministratore</input>
<tr><td><td><input name="identity" type="radio" value="guest" checked>Utente esterno</input>

<p><br></br></p><p><br></br>

<input type="image" value="Login" align="center" src="C://Programmi//jakarta-tomcat-3.3.1a//webapps//root//immagini//b12.gif">


</table>

</form>

</body>

</html>


---------------------------------------------------------------------------------

Mentre la pagina che riceve la richiesta é la seguente:

---------------------------------------------------------------------------------



<html>

<head>
<title>Home Page</title>
</head>

<body background="C://Programmi//jakarta-tomcat-3.3.1a//webapps//root////immagini//sfondo3.jpg" text="yellow">

<%@ page import="java.io.*, java.util.*" %>

<%
String value=""; String[] values;
Enumeration eNames=request.getParameterNames();
while (eNames.hasMoreElements()) {


String name=(String) eNames.nextElement();
values=request.getParameterValues(name);
for (int i=0; i < values.length; i++) {
value=values[i]; %>
<p>L'utente é <%= value%> e il nome é <%= name%></p> <% } } %>


</body>

</html>


----------------------------------------------------------------------------------

Quello che non capisco é il seguente output che ricevo:

----------------------------------------------------------------------------------



L'utente é 45 e il nome é x

L'utente é guest e il nome é identity

L'utente é 14 e il nome é y


----------------------------------------------------------------------------------

quando l'output dovrebbe essere soltanto la riga centrale ed ho verificato che la variabile contatore i rimane nei tre casi sempre al valore iniziale 0.

Inoltre, ho notato che non posso direttamente visualizzare values[0] ma soltanto value. Nonostante entrambe le variabili siano state inizializzate nello stesso momento, se provo a stampare la prima mi dà un errore dicendomi che la variabile potrebbe non essere stata inizializzata.

Come mai succedono queste cose ? Soprattutto perché ricevo 3 righe di output (con i numeri che cambiano ogni volta) quando dovrei ottenere soltanto la seconda ?

lombardp
26-06-2003, 08:04
Originally posted by "Web Wolf"

Avevi perfettamente ragione, però ho notato che se imposto l'indirizzo WEB anche per quello che riguarda le immagini, non viene caricato niente, mentre se dò un indirizzo locale si.

Es.

http://simonenerpiti.mine.nu//immagini//b12.gif

non mi carica l'immagine b12.gif nella pagina, mentre se mettevo l'indirizzo come prima si.

Come mai questo ?

Due cose:

1) perché le doppie // prima di IMMAGINI e B12.GIF ? Le "slash" devono essere singole. http://simonenerpiti.mine.nu/immagini/b12.gif ma ancora meglio /immagini/b12.gif

2) Indirizzi locali non potrai mai usarli su un sito. Anche perché l'intero World Wide Web funziona con indirizzi http! :confused:


Poi riguardo al problema delle tre righe di output: a mio parere non ti serve a niente enumerare i parametri passati alla pagina, dato che sono in numero fisso.

Usa semplicemente una cosa del tipo:

String utente = request.getParameter("identity");

e poi ls usi con <%= utente>

Web Wolf
26-06-2003, 10:44
Ha funzionato :) ma ho notato che request.getParameterValues() richiede per forza una matrice String[] e non una stringa semplice, anche se si tratta di un solo elemento. In pratica, poi é possibile fare

String value=values[0] per ottenere una stringa semplice.

------------------------------------------------------------------------------------

Un'altro quesito, come si fa ad effettuare un link ad una certa pagina in maniera indipendente dall'utente ?

Cioé: se mettessi una istruzione if che mi indirizza ad una pagina se "user" = root ed a un'altra se "user"=guest per esempio.

Ho visto il tag "link", ma non é molto chiaro come funzioni, anche perché va inserito nella testata della pagina. Ma se volessi indirizzare ad una pagina senza click, come posso fare ?

Grazie

lombardp
26-06-2003, 11:19
Molto rozzamente io avevo fatto così:


if (mia_condizione_per_saltare)
{

%> <jsp:forward ....> <%

}


Il tag <jsp:forward> (di cui non ricordo i parametri), quando incontrato, salta immediatamente alla nuova pagina senza che l'utente nemmeno se ne accorga.

Magari esiste qualche metodo migliore...

Web Wolf
26-06-2003, 12:04
Grazie !!! :) vedo che sei veramente un esperto. Comunque sto vedendo che quando passi dei parametri da una pagina JSP ad un'altra (come avevamo visto prima) ho notato che il server non li tiene in memoria (es. il tipo di utente). Come si può fare per mantenere i valori delle variabili di base come "identity" in maniera tale che anche da una pagina all'altra possano conservarsi ? Oppure come passarseli da una pagina all'altra ?

Ciao

lombardp
26-06-2003, 13:00
Originally posted by "Web Wolf"

Grazie !!! :) vedo che sei veramente un esperto

Ma quale esperto!!! :p

So queste cose perché sono le prima che si impara... :D :D

Originally posted by "Web Wolf"


Comunque sto vedendo che quando passi dei parametri da una pagina JSP ad un'altra (come avevamo visto prima) ho notato che il server non li tiene in memoria (es. il tipo di utente). Come si può fare per mantenere i valori delle variabili di base come "identity" in maniera tale che anche da una pagina all'altra possano conservarsi ? Oppure come passarseli da una pagina all'altra ?


Da specifica ufficiale, l'HTTP non tiene memoria. Cioè ogni richiesta HTTP è esattamente come se fosse la prima.

Per tenere memoria di parametri esistono vari modi:

1) Cookies: si tratta però di un meccanismo client-side e quindi intrinsecamente meno sicuro.

2) Inserire nei FORM dei campi HIDDEN in cui si memorizzano le informazioni da tramandare di pagina in pagina. I campi vengono riempiti con i valori ricevuti dalla pagina precedente e poi spediti alla pagina successiva.

3) Inserire a mano nell'URL della pagina a cui si salta, i parametri da tramandare, esempio http://www.miosito.com/miapga.jsp?param1=value1&param2=value2 etc.

4) Quello che ti consiglio: usare l'oggetto SESSION, che non necessita di dichiarazione ne' inizializzazione ne' distruzione, lo usi e basta. Usando le funzioni session.setAttribute, e getAttribute (credo fossero queste le funzioni) si possono memorizzare sul server delle informazioni di sessione, che permangono per la durata della sessione (finché il browser rimane aperto su quelle pagine e comunque massimo un certo tempo, a seconda delle impostazioni). In pratica su una pagina scrivi nella sessione gli attributi che vuoi, poi salti alla nuova pagina, dove recuperi i parametri scritti prima.

Web Wolf
26-06-2003, 14:49
Innanzitutto grazie infinite per le tue risposte così celeri :p , poi volevo dirti: sto mettendo su una pagina con due frame verticali: il frame di sinistra che contiene una pulsantiera e quello di distra che contiene la pagina di volta in volta visualizzata con la pulsantiera. Dato che (per quello che ne so) questa pagina richiede una pagina container superiore su cui inserire le due istruzioni <frame> per entrambe le colonne pensavo di:

quando si preme un pulsante si dà un valore ad una certa variabile e poi si richiama di nuovo la pagina container con la variabile settata al nuovo valore. La pagina container in questo modo visualizza sempre la pulsantiera a sinistra, ma sceglie la pagina da visualizzare a destra in base alla variabile che gli é stata passata.

So che sembra puerile, ma essendo alla mia prima esperienza html/jsp per me non sono assolutamente cose scontate e non so se possono essere giuste.

Tu che ne pensi ?

Web Wolf
26-06-2003, 15:03
Certe volte non capisco come nel JSP possano dare dei problemi anche i più banali comandi JAVA. Per esempio, la seguente pagina riceve dalla pagina precedente un valore che deve essere pari a "root"

<%
String[] users=request.getParameterValues("identity");
String user=users[0];

%>


<% if (user == "root") { %> <jsp:forward page="homepage.jsp"/> <% } %>

<p>Utente:<%= user%></p>

---------------------------------------------------------------------------


Eseuendola, l'istruzione if non viene valutata (come se user fosse diverso da "root", ma poi l'istruzione seguente visualizza effettivamente

Utente:root

Sembra che questo linguaggio sia fatto apposta per far i@#*are la gente :D

lombardp
26-06-2003, 15:47
PRIMA DOMANDA

E' una domanda di HTML se non ho capito male. Con i frame, per cambiare il contenuto del frame di destra cliccando su un link del frame di sinistra, basta che nel marcatore <a> imposti l'attributo TARGET al nome del frame di destra.

<a href="pagina_da_visualizzare_a_destra.jsp" target="nome_del_frame_di_destra">

Se vuoi cambiare due frame con un solo clic, bisogna usare il datasheet.


SECONDA DOMANDA

Questa riguarda invece JAVA. Per le stringhe, non usare ==. Confronta due stringhe usando il metodo EQUALS di una delle due.

if (stringa1.equals(stringa2)) { bla-bla-bla }

Sembra che questo linguaggio sia fatto apposta per far i@#*are la gente

In effetti ci sono alcune (poche per la verità) particolarità che devono essere seguite, pur essendo apparentemente assurde. Però una volta prese le misure al linguaggio, vai liscio come l'olio.

Web Wolf
26-06-2003, 16:03
Ho capito, adesso provo (dovrei presentare il sito JSP fra due settimane :cry: ). Per quello che riguarda la spedizione dei parametri ho optato per i parametri spediti attraverso l'indirizzo WEB, soltanto che quando si tratta di spedire variabili create da JAVA no so bene come inserirle. Io le ho inserite in questa maniera: a rigor di logica dovrebbe funzionare, ma il compilatore mi dà errore :mad:

Che palline :D



<html>

<%@ page import="java.io.*, java.util.*" %>

<head>
<title>Indirizzamento Utente</title>
</head>

<body background="C://Programmi//jakarta-tomcat-3.3.1a//webapps//root//immagini//sfondo5.jpg" text="yellow">

<%
String[] users=request.getParameterValues("identity");
String user=users[0];

%>


<jsp:forward page="homepage.jsp?utente=<%= user%>"/>


</body>




</html>

lombardp
26-06-2003, 16:12
Originally posted by "Web Wolf"

Per quello che riguarda la spedizione dei parametri ho optato per i parametri spediti attraverso l'indirizzo WEB, soltanto che quando si tratta di spedire variabili create da JAVA no so bene come inserirle. Io le ho inserite in questa maniera: a rigor di logica dovrebbe funzionare, ma il compilatore mi dà errore :mad:


Il consiglio di usare SESSION era proprio per rendere le cose più semplici e rapide.

Originally posted by "Web Wolf"


String[] users=request.getParameterValues("identity");
String user=users[0];


Se vuoi qua puopi semplificare così:

String user = request.getParameter("identity");

Originally posted by "Web Wolf"


<jsp:forward page="homepage.jsp?utente=<%= user%>"/>


Sintassi molto ardita!!! :eek: Non saprei che dire...



Che ne dici invece di fare:

session.setAttribute("user",user);
%><jsp:forward page="homepage.jsp"/><%

e poi nella HOMEPAGE.JSP fare subito all'inizio

String user = session.getAttribute("user");

Web Wolf
26-06-2003, 16:26
Per quello che riguarda l'uso del tag <A>, il fatto che io ho fatto i pulsanti usando <input type="image"> cioé pulsanti submit, mentre il tag <A> é soltanto (mi sembra) per il testo.

o no ?

Web Wolf
26-06-2003, 17:07
A proposito, il setAttribute me lo prende, ma il getAttribute no come mai ?
Mi dà un errore del server del tipo:

org.apache.jasper.JasperException: Unable to compile Note: sun.tools.javac.Main has been deprecated.
C:\Programmi\jakarta-tomcat-3.3.1a\work\DEFAULT\ROOT\homepage_10.java:60: Incompatible type for declaration. Explicit cast needed to convert java.lang.Object to java.lang.String.
String user = session.getAttribute("user");

Web Wolf
26-06-2003, 17:50
Tutto a posto, ho risolto, semplicemente si trattava del fatto che getAttribute(); richiede una variabile di tipo Object e non una stringa.

Adesso voglio provare con il metodo condizionale equals di cui mi hai parlato prima, vediamo se mi funziona.

Comunque, non so se i miei dubbi sono finiti qui, ma per ora ti ringrazio veramente: non so quanti avrebbero perso tutto questo tempo dietro un rompiballe così :D :D :D

Grazie
Ciao