Computer finestre Internet

Costruzioni condizionali. Ambiente di lavoro Eclipse. Identificatori Java

La sintassi del linguaggio Java si basa sulla sintassi del linguaggio C, ma ci sono le seguenti differenze:

identificatori:

  • quando si scrive l'identificatore, è possibile utilizzare sia lettere latine che lettere di alfabeti nazionali.
  • l'identificatore può contenere il simbolo del dollaro.

Ecco le regole di sintassi di base

  • Le lettere maiuscole e minuscole sono considerate caratteri diversi, quindi J e j sono variabili completamente diverse.
  • Quando si scrive l'identificatore, vengono utilizzate lettere latine e lettere degli alfabeti nazionali, numeri, trattini bassi e simboli del dollaro. L'identificatore non può iniziare con un numero o contenere spazi. La lunghezza dell'identificatore non è limitata, ma per motivi di leggibilità del programma, dovresti cercare di utilizzare nomi brevi e significativi.
  • Ci sono due tipi di commenti.
    • Commento su più righe. I commenti nel testo sono racchiusi tra parentesi come
      / * questo è il testo del commento * /
      e può essere inserito ovunque, in particolare all'interno degli operatori.
    • Commento di una riga. Visualizza commento:
      // questo è il testo del commento - valido solo fino alla fine della riga
  • Ogni frase termina con "; ".
  • È possibile inserire più istruzioni su una riga.
  • Le parentesi graffe () indicano un'istruzione composta. Tutti gli operatori inseriti tra di loro vengono trattati come un operatore.
  • Tutti i tipi utilizzati devono essere descritti prima del loro primo utilizzo. Gli annunci possono essere posizionati ovunque nel programma.
  • Un carattere è racchiuso tra virgolette singole, una stringa tra virgolette doppie.

Parole chiave

Le parole chiave hanno un significato speciale per il compilatore e queste parole possono essere usate solo nel senso in cui sono definite. Le parole riservate non possono essere utilizzate come identificatori personalizzati.

Qualsiasi cambiamento nelle variabili di uno cambia le variabili dell'altro. Quando viene dichiarato un oggetto, viene recuperato l'indirizzo della locazione di memoria, che solitamente è l'indirizzo della prima locazione di memoria nell'area riservata contenente tutti i dati relativi all'oggetto. Qualsiasi manipolazione di questo oggetto fa riferimento a questo indirizzo. Il confronto di due istanze di un oggetto viene eseguito facendo riferimento a queste istanze.

Esempio di codice enum Java

È un processo che aggiunge funzionalità a una classe senza dover riscrivere tutto il codice in quella classe. La nuova classe eredita tutti i dati ei metodi della classe da cui deriva. Quindi è necessario che nella classe genitore esista un costruttore senza parametro. Ad esempio, è possibile utilizzare un approccio diverso per disegnare rettangoli solidi rispetto a quello già discusso, ad esempio creando una nuova classe rettangolare che erediti la classe padre rettangolare. ai dati del rettangolo, deve essere pubblico, il che è contrario al principio di incapsulamento.

V linguaggio Java le seguenti parole sono riservate parole chiave

Parole riservate vero, falso e nullo non sono chiavi, ma non possono essere utilizzate come identificatori in un programma.

Le parole chiave possono essere suddivise in gruppi:

La soluzione è definire le variabili di classe con un modificatore protetto. I membri di una classe protetta da protected sono accessibili dalle classi derivate, ma non da altre classi. Fare clic nel contesto di un'applet per attivarla. Molte lingue consentono di passare gli argomenti per valore o per indirizzo. Poiché gli indirizzi effettivi degli argomenti sono sconosciuti al metodo, il metodo non può modificarli.

Che cos'è una struttura condizionale?

Se l'argomento viene passato all'indirizzo del metodo, la variabile argomento viene passata al metodo: le modifiche apportate al valore della variabile dal metodo sono immediate e definitive. Le strutture condizionali sono chiamate istruzioni per verificare se una condizione è vera o meno. Queste strutture condizionali possono essere associate a strutture che si ripetono in base all'implementazione della condizione, queste strutture sono chiamate strutture ad anello.

Tipi di dati primitivi

byte, short, int, long, char, float, double, boolean

Loop e rami

if, else, switch, case, default, while, do, break, continue, for

Eccezioni

prova, prendi, finalmente, lancia, lancia

ambiti privato, protetto, pubblico
Dichiarazione, importazione

importazione, pacchetto, classe, interfaccia, estensione, implementazione, statico, finale, vuoto, astratto, nativo

Modo più breve di fare il test

La sintassi per questa espressione. È possibile condurre un test con una struttura molto meno severa grazie alla seguente struttura, chiamata operatore ternario.

  • La condizione deve essere tra parentesi.
  • Quando la condizione è vera, viene eseguita l'istruzione di sinistra.
  • Quando la condizione è falsa, viene eseguita l'istruzione corretta.
Quando l'espressione di test è uguale a uno dei valori che seguono il campo, viene eseguito il seguente elenco di comandi.

Operazioni linguistiche di base

La parola chiave predefinita precede un elenco di operatori che verranno eseguiti se l'espressione non è mai uguale a uno dei valori. Queste strutture sono talvolta chiamate istruzioni ripetitive o iterazioni. Il modo più comune per eseguire un ciclo è creare un contatore e arrestare il ciclo quando il contatore supera un determinato valore.

Crea, ritorna, chiama

nuovo, ritorno, questo, super

Multithreading

sincronizzato, volatile

Parole chiave riservate
Appuntamento speciale

instanceof, enum, assert, transient, strictfp

Segnali operativi

I segni di operazione hanno lo scopo di indicare operazioni aritmetiche, logiche e di altro tipo. Nella tabella sono riportati i segnali operativi più comunemente utilizzati.

Questa istruzione esegue un elenco di comandi finché la condizione è soddisfatta. Potrebbero essere necessari uno o più valori per eseguire il ciclo senza terminare il ciclo. La sintassi per questa espressione è "continua", di solito è associata a una struttura condizionale, altrimenti le linee tra questa istruzione e la fine del ciclo saranno obsolete.

Discussioni rilevanti trovate sul forum

Fortunatamente, grazie all'istruzione continua, puoi considerare questo valore separatamente e quindi continuare il ciclo! Al contrario, potrebbe essere necessario arrestare il ciclo prematuramente per una condizione diversa da quella specificata nell'intestazione del ciclo. Avremo tre aspetti degli identificatori che devi comprendere. Identificatori validi: le regole utilizzate dal compilatore per determinare se un nome è valido. Dovresti conoscerli e usarli nelle tue applicazioni future. ... Un identificatore è un nome che identifica una classe, una variabile o un metodo in un programma.

operazione Breve descrizione
+ aggiunta
- Sottrazione
* Moltiplicazione
/ Divisione
= Incarico
++

Incremento (aumento di 1); x++; equivalente a x = x + 1;

--

Decremento (diminuzione di 1); X--; equivalente a x = x-1;

+= y + = x; equivalente a y = y + x;
-= y- = x; equivalente a y = y-x;
*= y * = x; equivalente a y = y * x;
/= y / = x; equivalente a y = y / x;
%= y% = x; equivalente a y = y% x;
== È uguale a
!= non uguale
> Di più
< Più piccoli
>= più o uguale
<= minore o uguale a
% resto della divisione intera
&& AND . logico
|| OR logico
! negazione logica NOT

Nota.

Ecco le regole che devi conoscere. In pratica, non c'è limite al numero di caratteri che un identificatore può contenere. Non puoi utilizzare una parola chiave come identificatore nei tuoi programmi.

  • Non deve iniziare con un numero.
  • Di seguito è riportato un elenco completo delle parole chiave disponibili.
Ecco alcuni esempi di ID validi.

Ecco alcuni esempi di identificatori non validi, dovresti sapere perché. Se accetti queste convenzioni e inizi a programmare, possono ridurre i tuoi sforzi di test, manutenzione e miglioramento. E pensa anche alle parentesi graffe, a volte sono scritte sulla stessa riga, il che rende il codice illeggibile.

          1. Divisione
            • Se due interi sono divisi, allora abbiamo il risultato della divisione intera:
              5/3 = 1. Ma il resto della divisione intera è 5% 3 = 2.
            • se uno degli argomenti è un numero reale, allora abbiamo la solita divisione:
              5 / 2.0 = 2.5
          2. Incrementando e decrementando

Esistono due forme di incremento: forma prefissa, forma postfissa.

Inoltre, i nomi dovrebbero di solito essere una combinazione del nome del verbo. ... Sono solo variabili di istanza private. L'unico modo in cui possono accedere dall'esterno della loro classe è attraverso i metodi della classe. I metodi che modificano il valore di una proprietà sono chiamati setter e i metodi che ottengono il valore di una proprietà sono chiamati getter. Tieni presente che non è necessario avere una variabile denominata label nella tua classe. Il nome della proprietà è dedotto da getter e setter, non dalle variabili nella tua classe. Il modello di evento viene spesso utilizzato nelle applicazioni grafiche, quando viene attivato un evento come un clic, altri oggetti che possono avere cure, quando si verifica questo evento, ottengono informazioni.

Modulo prefisso

Innanzitutto, la variabile verrà aumentata (o diminuita) di uno, quindi verranno eseguiti ulteriori calcoli con il nuovo valore.

int a = 5; intero b = 5; int y = 10 + --a; intz = 10 + ++ b; System.out.println ("a =" + a); System.out.println ("b =" + b); System.out.println ("y =" + y); System.out.println ("z =" + z);

L'output sarà:

a = 4
b = 6
y = 14
z = 16

In questo esempio, la variabile a viene prima decrementata di 1, b viene aumentata di uno e quindi viene calcolata l'espressione per yez.

Questi oggetti sono chiamati ascoltatori. I nomi dei metodi utilizzati per aggiungere un listener con un'origine evento devono utilizzare il prefisso add seguito dal tipo di listener. I nomi dei metodi utilizzati per rimuovere un listener devono utilizzare il prefisso remove seguito dal tipo di listener, utilizzando le stesse regole del metodo add record. Il tipo di listener da aggiungere o rimuovere deve essere passato come argomento al metodo. Ricorda che un identificatore valido per una variabile è anche un identificatore valido per un metodo o una classe.

Modulo suffisso

Per la forma postfissa, l'espressione viene prima valutata con il vecchio valore della variabile e il valore della variabile viene aumentato (o diminuito) di uno dopo che l'espressione è stata valutata.

int a = 5; intero b = 5; int y = 10 + a--; intz = 10 + b++; System.out.println ("a =" + a); System.out.println ("b =" + b); System.out.println ("y =" + y); System.out.println ("z =" + z);

L'output sarà:
a = 4
b = 6
y = 15
z = 15

In altre parole, devi accettare che l'identificatore sia legale anche se non segue gli standard di denominazione. Qui ci occupiamo di uno dei capitoli più importanti: le condizioni sono un altro concetto fondamentale della programmazione. In una classe, la lettura e l'esecuzione vengono eseguite in sequenza, ovvero riga per riga. Con le condizioni, possiamo gestire diversi scenari senza leggere tutto il codice. Ti renderai presto conto che tutti i tuoi progetti sono solo sequenze e relazioni di condizioni e cicli.

Andiamo dritti al nocciolo della questione. Prima di poter creare e valutare le condizioni, devi sapere che utilizzeremo i cosiddetti "operatori logici" per questo. Sono principalmente utilizzati nell'ambiente per valutare vari casi possibili. sapere.

L'espressione verrà valutata con il vecchio valore delle variabili. Dopo aver valutato le espressioni per e z variabile un diminuisce di 1, variabile B aumenterà di uno.

Operazioni logiche

Se il primo valore nell'operazione "&&" è falso, il secondo valore non viene verificato, nell'operazione "or", viceversa, se il primo valore è vero, il secondo non viene verificato.

Per quest'ultimo, capirete meglio l'esempio che verrà dato alla fine di questo capitolo. Ciò consente di specificare la condizione "Lo stesso combattimento del precedente". ... Immagina un programma che chieda all'utente di inserire un numero intero relativo. Le strutture condizionali ci permetteranno di gestire questi tre scenari. La struttura di queste condizioni è la seguente.

Usiamo il nostro piccolo esempio. In questo caso, la nostra classe visualizza "numero positivo". Spieghiamo cosa sta succedendo. Quando ci hai presentato la struttura condizionale, hai messo le parentesi graffe e non le hai messe lì. Infatti, le parentesi graffe sono presenti nella struttura condizionale "normale", ma quando il codice all'interno di una di esse è costituito da una sola riga, le parentesi graffe diventano facoltative.

Tabella di verità delle operazioni "&&", "||"

UN B A && B A || B
falso falso falso falso
falso Vero falso Vero
Vero falso falso Vero
Vero Vero Vero Vero

Ecco un esempio.

Questo si chiama rientro! Sarà molto utile trovarti nei tuoi programmi futuri. Immagina per due secondi di avere un programma di 700 righe con 150 condizioni e tutto è scritto lungo il bordo sinistro. Sarà difficile distinguere i test dal codice. Prima di andare avanti, dovresti sapere che non puoi controllare l'uguaglianza delle stringhe! Discuteremo questo punto in seguito. Utilizzeremo ora gli operatori booleani visti all'inizio, verificando se un dato numero si trova in un intervallo noto.

Ad esempio, controllerà se un numero intero è compreso tra 50 e. Questo operatore introduce il concetto di intersezione di insiemi. Qui abbiamo due condizioni, ognuna delle quali definisce un insieme. Pertanto, la condizione raggrupperà i numeri appartenenti a questi due insiemi, ovvero i numeri da 51 a 99 inclusi. Considera l'intervallo che vuoi definire.

booleano a = vero; booleano b = vero; booleano c = falso; booleano d = falso; System.out.println ("true && true =" + (a && b)); // true true risultato true System.out.println ("true && false =" + (a && c)); // true false il risultato è false System.out.println ("false && true =" + (c && a)); // false ture risultato false System.out.println ("false && frue =" + (c && d)); // false false risultato false System.out.println ("true || true =" + (a || b)); // true true risultato true System.out.println ("true || false =" + (a || c)); // true false risultato true System.out.println ("false || true =" + (c || a)); // false ture risultato true System.out.println ("false || false =" + (c || d)); // falso falso il risultato è falso

L'interruttore viene utilizzato principalmente quando si vogliono le condizioni "a la carte". Prendiamo l'esempio di un sondaggio con due domande: per ognuna di esse possiamo ottenere solo 0 o 10 punti, il che ci dà tre note e quindi tre possibili valutazioni, ad esempio.

Venite a rileggere questo capitolo di tanto in tanto. ... In questo caso utilizziamo un interruttore per evitare inutili se ripetute, e per alleggerire un po' il codice. Ecco le operazioni eseguite da questa espressione. La classe valuta l'espressione dopo lo switch, altrimenti passa alla scheda successiva e così via. Per apprezzare meglio l'utilità di questa istruzione, rimuovere tutte le interruzioni; e compila il tuo programma. Le condizioni ternarie sono piuttosto complesse e relativamente poco utilizzate. La particolarità di queste condizioni è che sono coinvolti tre operandi, ma anche che queste condizioni vengono utilizzate per assegnare dati a una variabile.

L'output sarà:

vero && vero = vero
vero && falso = falso
falso && vero = falso
falso && falso = falso
vero || vero = vero
vero || falso = vero
falso || vero = vero
falso || falso = falso

Le pagine JSP hanno una sintassi combinata: una combinazione della sintassi standard conforme alla specifica HTML e della sintassi JSP definita dalla specifica Java Server Pages. La sintassi JSP definisce le regole per la scrittura di pagine JSP, che sono composte da tag HTML standard e tag JSP.

Ecco come appare questo tipo di struttura. Decora quello che sta succedendo. L'assegnazione è valida: puoi usare la tua variabile massima. È inoltre possibile eseguire calcoli prima di influenzare i valori. Non dimenticare che il valore che assegnerai a una variabile deve essere dello stesso tipo della tua variabile. Nota anche che non c'è nulla che ti impedisca di inserire una condizione 3D in un'altra condizione ternaria.

Le condizioni consentono l'esecuzione solo di determinate parti di codice. ... Se il blocco di comandi contiene più di una riga, devi racchiuderlo tra parentesi graffe per identificare chiaramente l'inizio e la fine del blocco di comandi. Per poter mettere in atto una condizione, è necessario confrontare le variabili utilizzando gli operatori booleani.

Le pagine JSP, oltre ai tag HTML, contengono tag JSP delle seguenti categorie:

Direttive JSP

Direttive JSP fornire informazioni globali su richieste specifiche inviate al server e fornire informazioni necessarie durante la fase di traduzione. Le direttive sono sempre poste all'inizio della pagina JSP prima di tutti gli altri tag, in modo che analizzatore(parser) JSP, durante l'analisi del testo, all'inizio, ha evidenziato le istruzioni globali. Pertanto, il motore JSP (runtime JSP) analizza il codice e crea un servlet dal JSP. Direttive sono messaggi a un contenitore JSP.

Puoi inserire tutti i confronti booleani che desideri nello stato. Il ruolo dei loop è di ripetere più volte le stesse operazioni. Tutti i programmi, o quasi, necessitano di tale funzione. Utilizzeremo i loop per consentire al programma di ricominciare dall'inizio, attendere un'azione specifica dell'utente, visualizzare una serie di dati, ecc.

Il ciclo viene eseguito finché la condizione è soddisfatta. Pertanto, utilizzeremo i concetti del capitolo precedente! Questo significa quasi "finché". Quindi abbiamo una condizione: ti permette di fermare il ciclo. Un ciclo è utile solo quando possiamo controllarlo, e quindi fargli ripetere l'istruzione un certo numero di volte.

Sintassi Direttive JSP come segue:

<%@ директива имяАтрибута="значение" %>

Sintassi dell'attività direttive nell'XML:

Direttiva JSP può avere più attributi. In questo caso, la direttiva può essere ripetuta per ciascuno degli attributi. Allo stesso tempo, le coppie "NomeAttributo = valore" può essere posizionato sotto una direttiva con uno spazio come separatore.

Esistono tre tipi di direttive:

  • pagina (pagina)
  • taglib (libreria di tag)
  • includere (includere)

Direttiva sulla pagina JSP

Direttiva sulla pagina JSP definisce le proprietà della pagina JSP che interessano il traduttore. Ordine degli attributi in una direttiva pagina non importa. La violazione della sintassi o la presenza di attributi non riconosciuti provoca un errore di traduzione. Un esempio di direttiva pagina il seguente codice può servire:

<%@ page buffer="none" isThreadSafe="yes" errorPage="/error.jsp" %>

La direttiva page dichiara che questa pagina JSP non utilizza il buffering, che è possibile che più utenti accedano a questa pagina JSP contemporaneamente e che una pagina di errore denominata errore.jsp.

Direttiva sulla pagina JSP può contenere informazioni sulla pagina:

<%@ page info = "JSP Sample 1" %>

Elenco dei possibili attributi di direttiva pagina presentato in tabella.

Nome attributoSignificato Descrizione
linguaggio Linea Determina la lingua utilizzata negli scriptlet dei file JSP, nelle espressioni o in qualsiasi file di inclusione, incluso il corpo del codice tradotto. L'impostazione predefinita è "java"
si estende Linea Specifica la superclasse per il servlet generato. Questo attributo dovrebbe essere usato con molta attenzione in quanto è possibile che il server stia già utilizzando una superclasse.
importare Linea Definizione dei pacchetti da importare, ad esempio:
<%@ page import="java.util.* %>
Sessione vero o falso Significato vero(predefinito) indica che una variabile predefinita sessione(tipo HttpSession) deve essere associato a una sessione esistente, se presente, altrimenti viene creata e associata una nuova sessione. Significato falso determina che le sessioni non verranno utilizzate e tenta di accedere a una variabile sessione risulterà in un errore durante la traduzione della pagina JSP nel servlet
Respingente nessuno o la dimensione del buffer in kB. Imposta la dimensione del buffer per l'uscita JspWriter. Il valore predefinito dipende dalle impostazioni del server e non deve superare gli 8 kB. Se il valore è nessuno l'output va direttamente all'oggetto ServletResponse
lavaggio automatico vero o falso Determina se il buffer deve essere svuotato automaticamente quando si verifica un overflow o si verifica un errore. L'impostazione predefinita è vero
isThreadSafe vero o falso Significato vero(impostazione predefinita) specifica la modalità di esecuzione normale del servlet, in cui più richieste vengono elaborate contemporaneamente utilizzando una singola istanza servlet, supponendo che l'autore abbia sincronizzato l'accesso alle variabili di quell'istanza. Un valore falso segnala che la servlet dovrebbe ereditare SingleThreadModel(modello a thread singolo) in cui le richieste sequenziali o simultanee sono gestite da istanze separate del servlet
Informazioni Linea Definisce una stringa di informazioni su una pagina JSP a cui si accederà utilizzando il metodo Servlet.getServletInfo ()
errorPage Linea Il valore dell'attributo è l'URL della pagina che dovrebbe essere visualizzata in caso di possibili errori che causano eccezioni
isErrorPage vero o falso Segnala se questa pagina può essere utilizzata per gestire gli errori per altre pagine JSP. L'impostazione predefinita è falso
tipo di contenuto Linea Specifica la codifica per la pagina e la risposta JSP e il tipo MIME della risposta JSP. Il valore predefinito del tipo di contenuto è testo/html, codifiche - ISO-8859-1. Per esempio:
contentType = "testo/html; set di caratteri = ISO-8859-1"
pageEncoding Linea Determina la codifica dei caratteri della pagina JSP. L'impostazione predefinita è set di caratteri da attributo tipo di contenuto se è definito lì. Se il valore set di caratteri in attributo tipo di contenuto indefinito, valore pageEncodingè uguale ISO-8859-1

Direttiva taglib JSP

Direttiva JSP taglib dichiara che la data pagina JSP utilizza una libreria di tag, la identifica in modo univoco con un URI e mappa il prefisso del tag con cui si può agire sulla libreria. Se il contenitore non riesce a trovare la libreria di tag, si verifica un errore irreversibile di traduzione.

Direttiva taglib ha la seguente sintassi:

<%@ taglib uri="URI della libreria di tag inclusa"prefisso =" nome del prefisso" %>

Prefisso " nome del prefisso"viene utilizzato quando si fa riferimento alla libreria. Un esempio di utilizzo della libreria di tag mytags:

<%@ taglib uri="http://www.taglib/mytags" prefix="customs" %> . . .

In questo esempio, la libreria di tag ha un URI "http: //www.taglib/mytags", la stringa viene assegnata come prefisso Dogana che viene utilizzato nella pagina JSP quando si accede agli elementi della libreria di tag.

JSP include direttiva

Direttiva JSP includere consente di inserire testo o codice durante la traduzione di una pagina JSP in un servlet. Sintassi della direttiva includere Somiglia a questo:

<%@ include file="L'URI relativo della pagina da includere" %>

Direttiva includere ha un attributo - file... Include il testo della risorsa specificata nel file JSP. Questa direttiva può essere utilizzata per inserire un'intestazione di copyright standard su ogni pagina JSP:

<%@ include file="copyright.html" %>

Il contenitore JSP accede al file di inclusione. Se il file di inclusione è stato modificato, il contenitore può ricompilare la pagina JSP. Direttiva includere tratta una risorsa, come una pagina JSP, come un oggetto statico.

L'URI dato è solitamente interpretato rispetto al JSP della pagina su cui si trova il collegamento, ma come per ogni URI relativo, puoi dire al sistema la posizione della risorsa di interesse rispetto alla home directory del server WEB anteponendo l'URI con un carattere "/". Il contenuto del file include viene trattato come semplice testo JSP e pertanto può includere elementi come HTML statico, elementi di script, direttive e azioni.

Molti siti utilizzano una piccola barra di navigazione in ogni pagina. A causa dei problemi di utilizzo dei frame HTML, questo compito viene spesso risolto posizionando una piccola tabella in alto o nella metà sinistra della pagina, il cui codice HTML viene ripetuto più volte per ogni pagina del sito. Direttiva includere- questo è il modo più naturale per risolvere questo problema, salvando lo sviluppatore dall'incubo della routine di copiare HTML in ogni singolo file.

Poiché la direttiva includere collega i file durante la traduzione della pagina, quindi dopo aver apportato modifiche alla barra di navigazione, è necessaria la ritraduzione di tutte le pagine JSP che la utilizzano. Se i file allegati cambiano abbastanza spesso, puoi usare l'azione jsp: include che connette il file quando si accede alla pagina JSP.

Dichiarazioni JSP direttiva

Direttiva JSP dichiarazioni hanno lo scopo di definire variabili e metodi nel linguaggio di scripting, che vengono successivamente utilizzati nella pagina JSP. Sintassi dichiarazioni Somiglia a questo:

<%! код Java %>

dichiarazioni si trovano nel blocco di dichiarazione e sono richiamati nel blocco di espressioni della pagina JSP. Il codice nel blocco di dichiarazione è solitamente scritto in Java, ma i server delle applicazioni possono utilizzare la sintassi di altri script. Annunci sono talvolta utilizzati per aggiungere funzionalità aggiuntive quando si lavora con dati dinamici ottenuti dalle proprietà dei componenti JavaBeans. Esempi di Annunci sono presentati in tabella.

Dichiarazioni può contenere più righe, come nel codice sottostante per calcolare il valore di una funzione fatto (int n), che dovrebbe essere uguale a 1 quando n è minore di 2 e n! con un valore positivo di n;

<%! public static int fact (int n) { if (n <= 1) return 1; else return n * fact (n - 1); } %>

dichiarazioni non produrre alcun output sullo standard output fuori... Le variabili e i metodi dichiarati nelle dichiarazioni sono inizializzati e resi disponibili per scriptlet e altri Annunci al momento dell'inizializzazione della pagina JSP.

Scriptlet scriptlet

scriptlet includere vari pezzi di codice scritti nel linguaggio di scripting definito nella direttiva linguaggio... I frammenti di codice devono rispettare i costrutti sintattici del linguaggio scriptlet, cioè di solito la sintassi del linguaggio Java. scriptlet hanno la seguente sintassi:

<% текст скриптлета %>

Sintassi equivalente scriptlet per XML è:

testo del copione

Se nel testo scriptletè necessario utilizzare la sequenza di caratteri%> esattamente come una combinazione di caratteri e non come un tag - un segno di fine scriptlet, invece della sequenza%>, usa la seguente combinazione di caratteri% \>.

La specifica JSP fornisce un esempio semplice e diretto scriptlet che cambia dinamicamente il contenuto della pagina JSP durante il giorno.

<% if (Calendar.getInstance ().get (Calendar.AM_PM) == Calendar.AM) {%>Buon giorno<% } else { %>Buon pomeriggio<% } %>

Va notato che il codice all'interno scriptlet inserito come scritto e tutto il testo HTML statico (testo modello) prima o dopo scriptlet convertito utilizzando l'operatore Stampa... Ciò significa che gli scriptlet non devono contenere blocchi Java completati e che i blocchi lasciati aperti possono influenzare l'HTML statico al di fuori di scriptlet.

script hanno accesso alle stesse variabili autodefinite delle espressioni. Pertanto, ad esempio, se c'è la necessità di visualizzare delle informazioni sulla pagina, è necessario utilizzare la variabile fuori.

<% String queryData = request.getQueryString (); out.println ("Дополнительные данные запроса: " + queryData); %>

Espressioni espressioni

espressioni espressioni in una pagina JSP, un'espressione eseguibile scritta nel linguaggio di scripting specificato nella dichiarazione del linguaggio (tipicamente Java). Risultato espressioni JSP, che è del tipo richiesto String, viene inviato al flusso di output standard fuori usando l'oggetto corrente JspWriter... Se il risultato è espressioni non può essere lanciato Corda, si verifica un errore di traduzione se il problema è stato rilevato nella fase di traduzione o viene generata un'eccezione ClassCastException se l'incongruenza è stata rilevata durante l'esecuzione della richiesta. Espressione ha la seguente sintassi:

<%= текст выражения %>

sintassi alternativa per JSP espressioni quando si usa XML:

testo dell'espressione

Ordine di esecuzione espressioni nella pagina JSP da sinistra a destra. Se espressione appare in più di un attributo di runtime, quindi viene eseguito da sinistra a destra in quel tag. Espressione deve essere un'espressione completa in uno script specifico (tipicamente Java).

espressioni vengono eseguiti mentre il protocollo HTTP è in esecuzione. Il valore dell'espressione viene convertito in una stringa e incluso nella posizione appropriata nel file JSP.

espressioni sono comunemente usati per calcolare e visualizzare la rappresentazione di stringa di variabili e metodi definiti in un blocco di dichiarazione di pagina JSP o derivati ​​da JavaBeans accessibili da un JSP. Il seguente codice espressioni serve per visualizzare la data e l'ora della richiesta della pagina:

Ora attuale:<%= new java.util.Date () %>

Per semplificare espressioni ci sono diverse variabili predefinite che puoi usare. Le variabili più utilizzate sono:

  • richiesta, HttpServletRequest;
  • risposta, HttpServletResponse;
  • sessione, HttpSession - associati alla richiesta, se del caso;
  • fuori, PrintWriter - una versione bufferizzata del tipo JspWriter per l'invio di dati al client.