JSP Syntaxe
Cette section présente brièvement la syntaxe de base dans le développement JSP.
Scriptlet
Un scriptlet peut contenir un nombre quelconque d'instructions Java, de variables, de méthodes ou d'expressions, tant qu'elles sont valides dans le langage de script.
Le format syntaxique d'un scriptlet :
<% code snippet %>
Alternativement, vous pouvez également écrire l'instruction XML équivalente, comme ceci :
<jsp:scriptlet> 代码片段 </jsp:scriptlet>
Tout texte, balise HTML ou élément JSP doit être écrit en dehors du scriptlet.
Ci-dessous se trouve un exemple, qui est aussi le premier exemple JSP de ce tutoriel :
<html>
<head><title>Hello World</title></head>
<body>
Hello World!<br/>
<%
out.println("Your IP address is " + request.getRemoteAddr());
%>
</body>
</html>
Remarque :Veuillez vous assurer qu'Apache Tomcat est installé dans le répertoire C:\apache-tomcat-7.0.2 et que l'environnement d'exécution est correctement configuré.
Enregistrez le code ci-dessus sous le nom hello.jsp, puis placez-le dans le répertoire C:\apache-tomcat-7.0.2\webapps\ROOT, ouvrez un navigateur et saisissez http://localhost:8080/hello.jsp dans la barre d'adresse. Après exécution, vous obtiendrez le résultat suivant :
Problème d'encodage du chinois
Si nous voulons afficher correctement le chinois sur la page, nous devons ajouter le code suivant en haut du fichier JSP :
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Ensuite, nous modifions le programme ci-dessus comme suit :
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example(example.com)</title>
</head>
<body>
Hello World!<br/>
<%
out.println("你的 IP 地址 " + request.getRemoteAddr());
%>
</body>
</html>
De cette façon, le chinois peut être affiché correctement.
Déclaration JSP
Une instruction de déclaration peut déclarer une ou plusieurs variables ou méthodes à utiliser par le code Java suivant. Dans un fichier JSP, vous devez déclarer ces variables et méthodes avant de pouvoir les utiliser.
Le format syntaxique d'une déclaration JSP :
<%! declaration; [ declaration; ]+ ... %>
Alternativement, vous pouvez également écrire l'instruction XML équivalente, comme ceci :
<jsp:declaration> 代码片段 </jsp:declaration>
Exemple de programme :
<%! int i = 0; %> <%! int a, b, c; %> <%! Circle a = new Circle(2.0); %>
Expression JSP
L'expression du langage de script contenue dans une expression JSP est d'abord convertie en String, puis insérée à l'endroit où l'expression apparaît.
Comme la valeur de l'expression est convertie en String, vous pouvez utiliser l'expression dans une ligne de texte sans vous soucier de savoir s'il s'agit d'une balise HTML.
L'élément expression peut contenir n'importe quelle expression conforme aux spécifications du langage Java, mais vous ne pouvez pas utiliser de point-virgule pour terminer l'expression.
Le format syntaxique d'une expression JSP :
<%= expression %>
De même, vous pouvez également écrire l'instruction XML équivalente :
<jsp:expression> 表达式 </jsp:expression>
Exemple de programme :
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example(example.com)</title>
</head>
<body>
<p>
今天的日期是: <%= (new java.util.Date()).toLocaleString()%>
</p>
</body>
</html>
Après l'exécution, vous obtiendrez le résultat suivant :
今天的日期是: 2016-6-25 13:40:07
Commentaires JSP
Les commentaires JSP ont principalement deux objectifs : commenter le code et mettre un bloc de code en commentaire.
Le format syntaxique des commentaires JSP :
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example(example.com)</title>
</head>
<body>
<%-- 该部分注释在网页中不会被显示--%>
<p>
今天的日期是: <%= (new java.util.Date()).toLocaleString()%>
</p>
</body>
</html>
Après l'exécution, vous obtiendrez le résultat suivant :
今天的日期是: 2016-6-25 13:41:26
⟦⟧Règles de syntaxe pour l'utilisation des commentaires dans différentes situations :
| Syntaxe | Description |
|---|---|
| <%-- comment --%> | Commentaire JSP ; le contenu du commentaire n'est pas envoyé au navigateur et n'est même pas compilé. |
| <!-- comment --> | Commentaire HTML ; le contenu du commentaire peut être vu lors de l'affichage du code source de la page dans le navigateur. |
| <\% | Représente static |
| %\> | Représente la constante static %> |
| \' | Guillemets simples utilisés dans les attributs |
| \" | Guillemets doubles utilisés dans les attributs |
Directives JSP
Les directives JSP sont utilisées pour définir des propriétés liées à la page JSP.
Le format de syntaxe des directives JSP :
<%@ directive attribute="value" %>
Il existe trois types de balises de directive :
| Directive | Description |
|---|---|
| <%@ page ... %> | Définit des attributs dépendants de la page, tels que le langage de script, la page d'erreur, les exigences de cache, etc. |
| <%@ include ... %> | Inclut d'autres fichiers |
| <%@ taglib ... %> | Introduit les définitions de bibliothèques de balises, qui peuvent être des balises personnalisées. |
Actions JSP
Les balises d'action JSP utilisent une structure de syntaxe XML pour contrôler le moteur de servlet. Elles peuvent insérer dynamiquement un fichier, réutiliser des composants JavaBean, rediriger les utilisateurs vers une autre page, générer le HTML correspondant pour les plugins Java, etc.
Les balises d'action n'ont qu'un seul format de syntaxe, qui suit strictement le standard XML :
<jsp:action_name attribute="value" />
Les balises d'action sont essentiellement des fonctions prédéfinies. Le tableau suivant répertorie quelques balises d'action JSP disponibles :
| Syntaxe | Description |
|---|---|
| jsp:include | Utilisé pour inclure des ressources statiques ou dynamiques dans la page courante |
| jsp:useBean | Trouve et initialise un composant JavaBean |
| jsp:setProperty | Définit la valeur d'un composant JavaBean |
| jsp:getProperty | Insère la valeur d'un composant JavaBean dans la sortie |
| jsp:forward | Transmet un objet de requête contenant la requête de l'utilisateur d'un fichier JSP à un autre |
| jsp:plugin | Utilisé pour inclure des objets Applet et JavaBean dans la page HTML générée |
| jsp:element | Crée dynamiquement un élément XML |
| jsp:attribute | Définit les attributs d'un élément XML créé dynamiquement |
| jsp:body | Définit le corps d'un élément XML créé dynamiquement |
| jsp:text | Utilisé pour encapsuler des données de modèle |
Objets implicites JSP
JSP prend en charge neuf variables définies automatiquement, communément appelées objets implicites. Ce sont des objets automatiquement disponibles dans les pages JSP sans nécessiter de déclaration ni d'initialisation supplémentaire.
Le tableau suivant donne une brève introduction à ces neuf objets implicites :
| Object | Description |
|---|---|
| request | HttpServletRequestInstance de la classe, un objet représentant la requête HTTP, contenant les informations envoyées du client au serveur, telles que les données de formulaire, les paramètres d'URL, etc. |
| response | HttpServletResponseInstance de la classe, un objet représentant la réponse HTTP, utilisé pour envoyer des données et des réponses au client. |
| out | JspWriterInstance de la classe, un objet utilisé pour produire du contenu textuel à destination du client, généralement utilisé pour générer du HTML. |
| session | HttpSessionInstance de la classe, un objet représentant la session utilisateur, peut être utilisé pour stocker et récupérer des données spécifiques à l'utilisateur sur plusieurs pages. |
| application | ServletContextInstance de la classe, représente le contexte de l'application web, peut être utilisée pour stocker et récupérer des données globales de l'application. |
| config | ServletConfigInstance de la classe, contient des informations de configuration sur la page JSP actuelle, telles que les paramètres d'initialisation. |
| pageContext | PageContextInstance de la classe, donne accès à tous les objets et espaces de noms de la page JSP. |
| page | Semblable au mot-clé `this` des classes Java, il représente l'instance de page JSP actuelle et peut être utilisé pour appeler des méthodes de la page. |
| exception | exceptionUn objet de la classe, représentant l'objet exception correspondant dans la page JSP où l'erreur s'est produite. Il est utilisé pour gérer les exceptions dans les pages JSP, et peut être utilisé pour intercepter et gérer les exceptions qui se produisent sur la page. |
Instructions de contrôle de flux
JSP offre une prise en charge complète du langage Java. Vous pouvez utiliser les API Java dans les programmes JSP et même créer des blocs de code Java, y compris des instructions conditionnelles et des instructions de boucle, etc.
Instructions conditionnelles
if…elseBloc, voir l'exemple suivant :
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%! int day = 3; %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example(example.com)</title>
</head>
<body>
<h3>IF...ELSE 实例</h3>
<% if (day == 1 || day == 7) { %>
<p>今天是周末</p>
<% } else { %>
<p>今天不是周末</p>
<% } %>
</body>
</html>
Après l'exécution, vous obtiendrez le résultat suivant :
IF...ELSE 实例 今天不是周末
Examinons maintenant le bloc switch...case, qui est assez différent du bloc if...else. Il utilise out.println(), et le tout est contenu dans des balises scriptlet, comme indiqué ci-dessous :
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%! int day = 3; %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example(example.com)</title>
</head>
<body>
<h3>SWITCH...CASE 实例</h3>
<%
switch(day) {
case 0:
out.println("星期天");
break;
case 1:
out.println("星期一");
break;
case 2:
out.println("星期二");
break;
case 3:
out.println("星期三");
break;
case 4:
out.println("星期四");
break;
case 5:
out.println("星期五");
break;
default:
out.println("星期六");
}
%>
</body>
</html>
Accès via navigateur, après exécution vous obtenez le résultat suivant :
SWITCH...CASE 实例 星期三
Instructions de boucle
Dans les programmes JSP, vous pouvez utiliser les trois types de boucles de base de Java : for, while et do...while.
Jetons un coup d'œil à l'exemple de boucle for. Ce qui suit affiche "Example Tutorial" dans différentes tailles de police :
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%! int fontSize; %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example(example.com)</title>
</head>
<body>
<h3>For 循环实例</h3>
<%for ( fontSize = 1; fontSize <= 3; fontSize++){ %>
<font color="green" size="<%= fontSize %>">
Example
</font><br />
<%}%>
</body>
</html>
Après l'exécution, vous obtiendrez le résultat suivant :

Réécrivez l'exemple ci-dessus en utilisant une boucle while :
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%! int fontSize=0; %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example(example.com)</title>
</head>
<body>
<h3>While 循环实例</h3>
<%while ( fontSize <= 3){ %>
<font color="green" size="<%= fontSize %>">
Example
</font><br />
<%fontSize++;%>
<%}%>
</body>
</html>
Accès via un navigateur, le résultat de sortie est (fontSize est initialisé à 0, donc une ligne supplémentaire est affichée) :
JSP prend en charge tous les opérateurs logiques et arithmétiques de Java.
Le tableau suivant répertorie les opérateurs JSP courants, par ordre décroissant de priorité :
| Catégorie | Operator | Associativité |
|---|---|---|
| Postfixe | () [] . (opérateur point) | De gauche à droite |
| Unaire | ++ - - ! ~ | De droite à gauche |
| Multiplicatif | * / % | De gauche à droite |
| Additif | + - | De gauche à droite |
| Décalage | >> >>> << | De gauche à droite |
| Relationnel | > >= < <= | De gauche à droite |
| Égalité / Inégalité | == != | De gauche à droite |
| ET bit à bit | & | De gauche à droite |
| OU exclusif bit à bit | ^ | De gauche à droite |
| OU bit à bit | | | De gauche à droite |
| ET logique | && | De gauche à droite |
| OU logique | || | De gauche à droite |
| Conditional | ?: | De droite à gauche |
| Affectation | = += -= *= /= %= >>= <<= &= ^= |= | De droite à gauche |
| Virgule | , | de gauche à droite |
Littéraux JSP
Le langage JSP définit les littéraux suivants :
- Booléen (boolean) : true et false ;
- Entier (int) : identique à Java ;
- Flottant (float) : identique à Java ;
- Chaîne (string) : commence et se termine par des guillemets simples ou doubles ;
- Null : null.