1. Introduction à JSP
JSP (Java Server Pages) est un langage de script côté serveur. C'est une technologie qui ajoute le langage Java aux pages HTML pour générer des pages dynamiques : de nouvelles balises (<%, %>,...) sont ajoutées.
JSP est une technologie de génération de pages Web dynamique développée sur la base de Java et de Servlet. Son implémentation sous-jacente est Java Servlet.
Les pages JSP sont composées de code HTML et de code Java intégrés. Le serveur traite ces codes Java une fois la page demandée par le client, puis renvoie la page HTML générée au navigateur du client.
2. Processus d'exécution JSP Le client demande la page JSP -> JSP Parser analyse *.jsp et le compile en *.java -> la commande javac le compile en *.class -> exécute le fichier de classe -> répond et renvoie le résultat à le client
Le code JSP contient deux catégories : les éléments JSP et les données de modèle. Les données du modèle font référence à la partie que le moteur JSP ne traite pas, c'est-à-dire que le moteur JSP transmettra directement les parties autres que les balises <%...%> sans aucun traitement.
Lorsque JSP est exécuté pour la première fois ou après avoir modifié le fichier JSP, il appellera JSP Parser pour compiler le fichier *.jsp dans un programme servlet, ce sera donc plus lent.
3. Syntaxe de base JSP
1. Deux types d'annotations
(1) Commentaire HTML Vous pouvez ajouter un commentaire au format HTML dans le code JSP. Ce commentaire est envoyé au client mais n'est pas affiché sur la page.
<!-- Commentaires au format HTML, visibles lors de la visualisation du code source sur le client -->
<!-- Ce commentaire a été ajouté par <%=programmer%>-->
Si le programmeur est un hacker, le commentaire renvoyé sur le client est <!-- Ce commentaire est ajouté par le hackiller -->
(2) Les commentaires JSP sont écrits dans le code JSP mais ne sont pas envoyés au client.
<%-- Commentaire JSP, ce commentaire sera ignoré lors de la compilation de JSP --%>
<%-- /*Commentaires multilignes dans Scriptlet*/ --%>
<%-- /**Commentaires multilignes dans Scriptlet, qui peuvent être extraits de fichiers Java à l'aide de javadoc*/ --%>
<%-- Commentaire JSP sur une seule ligne--%>
2. 3 éléments de script
(1) Déclaration des variables globales
<%! int i=0; String str="Bonjour tout le monde !";
(2)Expression
Dans le code JSP, les expressions sont souvent utilisées pour afficher la valeur d'une variable, qui peut se trouver n'importe où.
<%! int a=1; int b=2; String str="Bonjour tout le monde !";
<%=a+b%> <%=str>
PS : Vous ne pouvez pas utiliser le symbole « ; » comme terminateur d'une expression. Mais la même expression doit se terminer par un point-virgule dans le Scriptlet.
(3)Script
Un segment de script est utilisé pour contenir un segment de programme Java valide
<% int b=3; %>variable locale
3. 3 éléments de commande
(1)commande de page
<%@ page contentType="text/html;charset=utf-8"%>
Définissez les attributs globaux du fichier JSP, notamment : langage, extends, import, session, buffer, autoflush, isThreadSafe, info, errorPage, isErrorPage, contentType (format de sortie du serveur vers le client).
Son emplacement peut être n'importe où sur la page, mais il est recommandé de le placer en haut de la page.
langage : déclare le type de langage de script Actuellement, seul « java » peut être utilisé.
extends : indique le nom complet de la classe Java qui doit être ajoutée lors de la compilation de JSP. Cela limitera la capacité de compilation de JSP, alors utilisez-le avec prudence !
import : liste des packages Java qui doivent être importés.
session : définissez si le client nécessite une session HTTP. La valeur par défaut est vraie.
buffer : la taille du tampon est utilisée par l'objet out pour traiter la sortie du JSP exécuté vers le navigateur client. La valeur par défaut est 8 Ko.
autoFlush : définit s'il faut forcer la sortie si le tampon déborde. S'il est défini comme vrai (valeur par défaut), la sortie sera normale ; si elle est définie comme faux, une erreur inattendue se produira.
isThreadSafe : définit si le fichier JSP peut être utilisé dans plusieurs threads. La valeur par défaut est vraie.
info : informations textuelles. Il peut être récupéré à l'aide de la méthode Servlet.getServletInfo().
errorPage : définit le fichier JSP qui gère les événements d'exception
sErrorPage : définissez si cette page est une page qui gère les événements d'exception. Si la valeur est true, l'objet d'exception peut être utilisé.
contentType : définissez le type MIME et le jeu de codage de caractères. Le type MIME par défaut est text/html et le jeu de caractères par défaut est charset=ISO-8859-1.
Plusieurs directives < %@page %> peuvent être utilisées dans une page, mais à l'exception de l'attribut import, les autres attributs ne peuvent être utilisés qu'une seule fois.
Packages importés par JSP par défaut Les packages suivants ont été importés lors de la compilation JSP, il n'est donc pas nécessaire d'utiliser la directive page pour les introduire dans le fichier JSP :
java.lang.*
javax.servlet.*
javax.servlet.jsp.*
javax.servlet.http.*
(2) inclure la directive
Code HTML
<%@ include file = "chemin relatif" %>
Utilisez la directive include pour inclure un fichier statique dans JSP et analyser les instructions JSP dans ce fichier.
Si le chemin commence par "/", alors ce chemin fait principalement référence au chemin contextuel de l'application jsp.
Si le chemin est ouvert en tant que nom de fichier ou répertoire de fichiers, alors ce chemin est le chemin actuel du fichier JSP utilisé.
(3) commande taglib
Code HTML
<%@ taglib uri = préfixe "TagLibrary" = "mypfx" %>
Utilisez la directive taglib pour définir une bibliothèque de balises et son préfixe personnalisé.
uri : Uniform Resource Identifier nomme de manière unique l'étiquette personnalisée en fonction du préfixe de l'étiquette, qui peut être un chemin relatif ou absolu.
préfixe : le préfixe de l’étiquette personnalisée. N'utilisez pas jsp, jspx, java, javax, servlet, sun, sunw comme préfixes, ceux-ci ont été déclarés réservés par Sun.
4. 8 commandes d'action
(1) Saut de page : <jsp:forward>
La balise <jsp:forward> transmet un objet de requête contenant une requête utilisateur d'un fichier jsp à un autre.
Contient 2 attributs au total
L'attribut page est une expression ou une chaîne décrivant le fichier ou l'URL à diriger.
<jsp:param>Envoyer un ou plusieurs paramètres vers un fichier dynamique. Si la balise <jsp:param> est utilisée, le fichier cible doit être un fichier dynamique (tel que Servlet ou JSP, etc.)
Code HTML
<jsp:forward page=test.jsp>
<jsp:param name="username" value="<%=user%>"/>
<jsp:param name="mot de passe" value="12345678"/>
</jsp:avant>
Obtenez le nom d'utilisateur via request.getParameter("username")
(2) Inclure la page : <jsp:include>
<jsp:include> permet l'inclusion de ressources Web statiques et dynamiques, et les résultats de ces deux inclusions sont différents.
Si seuls les fichiers statiques sont inclus, cette inclusion ajoute uniquement le contenu du fichier inclus au fichier JSP, similaire à < %@include% > ;
Si une ressource Web dynamique est incluse, le fichier inclus sera également exécuté par le compilateur JSP.
Si ce fichier d'inclusion est dynamique, vous pouvez également utiliser <jsp:param> pour transmettre des paramètres et des valeurs de paramètres.
(3) Créer un bean : <jsp:useBean>
Créez une instance de Bean et spécifiez son nom et sa portée.
<jsp:useBean id="beanInstanceName" scope="page|request|session|application" class="package.className"/>
Contient 5 attributs.
id : confirmez la variable Bean dans la portée définie et utilisez l'identifiant pour utiliser cette instance de Bean dans le programme. La valeur de id est sensible à la casse.
Portée : la portée dans laquelle le Bean existe et la portée valide du nom de la variable id. La valeur par défaut est page.
class : utilisez le nouveau mot-clé et le constructeur de classe pour instancier un bean à partir d'une classe. La classe ne peut pas être abstraite et doit avoir un constructeur public sans argument.
type : si ce Bean existe déjà dans la portée spécifiée, l'utilisation de type attribuera un type de données à ce Bean. Si le type est utilisé sans classe ni beanName, le bean ne sera pas instancié.
beanName : beanName peut être une chaîne package.class ou une expression jsp, et sa valeur sera transmise à la méthode Beans.instantiate. La valeur de type peut être la même que beanName, sa classe de base ou l'interface qu'il implémente.
(4) Définir les propriétés du Bean : <jsp:setProperty>
<jsp:setProperty name="beanInstanceName" property="*"|property="propertyName" value="string|<%=expression%>"|param="parameterName"/>
name : indique le nom de l'instance du Bean qui a été créée dans <jsp:useBean>, c'est-à-dire id.
property : fait correspondre les propriétés du Bean
param : fait référence au nom du paramètre dans l'objet de requête et définit la valeur correspondante sur l'attribut Bean.
value : utilisez la valeur spécifiée pour définir la propriété Bean. Cette valeur peut être une chaîne ou une expression. S'il s'agit d'une chaîne, elle sera convertie au type de l'attribut Bean (par exemple, "0.98" sera converti en type double 0.98). S'il s'agit d'une expression, son type doit être cohérent avec le type de l'attribut Bean.
PS : les attributs Param et les attributs value ne peuvent pas être utilisés en même temps dans le même <jsp:setProperty>
(5) Récupérer les propriétés du Bean : <jsp:getProperty>
Obtenez la valeur de l'attribut dans l'objet Bean existant et affichez-la sur la page.
<jsp:getProperty name="beanInstanceName property="propertyName"/>
name : le même nom que l’instance d’objet existante.
property : le nom de la propriété dans l'objet
(6) Utilisez le plug-in Applet : <jsp:plugin>
Code HTML
<jsp:plugin type="applet" code="MeidaPlay.class" codebase="../classes">
<jsp:parmas>
<jsp:param name="way" value="Hall"/>
</jsp:params>
<jsp:repli>
<p>Impossible de charger l'applet !</p>
</repli>
</jsp:plugin>
Utilisez <jsp:plugin> pour insérer une applet ou un Bean, et si nécessaire, téléchargez un plug-in Java pour l'exécuter.
(7) Définir les paramètres : <jsp:param>
Peut être utilisé dans <jsp:include>, <jsp:forward>, <jsp:plugin>.
(8) Message d'erreur du plug-in : <jsp:fallback>
Lorsque le plug-in <jsp:plugin> ne peut pas être affiché normalement, un message d'invite s'affiche.
3. Objets intégrés JSP
1. Requête : objet de requête. Cet objet encapsule les informations soumises par l'utilisateur. Les informations encapsulées peuvent être obtenues en appelant la méthode correspondante de l'objet.
Lorsque l'objet de la demande obtient les caractères chinois soumis par le client, des caractères tronqués apparaîtront et un traitement spécial devra être effectué.
Méthodes couramment utilisées :
getParameter (String ParameterName) : obtenez les informations de soumission du formulaire.
getProtocol() : récupère le protocole utilisé par le client.
getServletPath() : obtenez la page sur laquelle le client a soumis les informations.
getMethod() : La méthode pour obtenir les informations soumises par le client.
getHeader(String str) : récupère les valeurs d'accept, accept-encoding et Host dans le fichier d'en-tête HTTP.
getRermoteHost() : récupère l'adresse IP du client.
getServerName : obtenez le nom du serveur.
getServerPort : obtenez le numéro de port du serveur.
getParameterNames() : récupère les noms de tous les paramètres soumis par le client.
2. Réponse : l'objet de réponse répond dynamiquement à la demande du client et envoie des données au client.
(1) Répondez dynamiquement à l'attribut contentType. Utilisez la commande page pour définir statiquement l'attribut contentType de la page. Lors de la définition dynamique de cet attribut, utilisez Response.setContextType("text/html;charset=utf-8");
(2)Redirection de réponse
réponse.sendRedirect("index.jsp");
3. Session : objet de session
(1) Qu'est-ce qu'un objet Session ?
L'objet Session est automatiquement créé lors du chargement de la première page JSP pour terminer la gestion de la session.
Cela commence lorsqu'un client ouvre un navigateur et se connecte au serveur, et se termine lorsque le client ferme le navigateur et quitte le serveur. C'est ce qu'on appelle une session.
(2) ID de l'objet Session
Lorsqu'un client visite une page JSP sur le serveur pour la première fois, le moteur JSP génère un objet Session et attribue un numéro d'identification de type String. Le moteur JSP envoie également ce numéro d'identification au client et le stocke dans un cookie. de cette façon, l'objet Session, ce n'est que lorsque le client ferme le navigateur que l'objet Session du client est modifié par le serveur, et la correspondance de session avec le client disparaît.
(3)Méthodes courantes
public String getId() : récupère le numéro de l'objet Session.
public void setAttribute(String str,Object obj) : ajoutez l'objet paramètre à l'objet Session.
public Object getAttribute() : récupère les attributs de l'objet Session en fonction du nom de l'attribut.
public boolean isNew() : détermine s'il s'agit d'un nouveau client.
4. Application : objet d'application
(1) Qu'est-ce qu'un objet Application ?
Cet objet Application est généré après le démarrage du serveur. Lorsqu'un client navigue entre les différentes pages du site Web visité, l'objet Application est le même et tous les clients partagent cet objet Application intégré.
(2)Méthodes courantes
setAttribute(String key,Object obj) : ajoutez l'objet paramètre à l'objet Application.
getAtbute (String key) : récupère les attributs de l'objet Application en fonction du nom de l'attribut
5. Out : objet de sortie
L'objet out est un flux de sortie utilisé pour envoyer des données aux clients.
out.print() : génère différents types de données.
out.newLine() : génère un caractère de nouvelle ligne.
out.close() : ferme le flux.
6. Config : objet de configuration Généralement, nous utilisons l'objet Config pour obtenir des informations de configuration d'initialisation. Les méthodes couramment utilisées sont getInitParameter et getInitParameterNames pour obtenir les paramètres lors de l'initialisation du servlet.
7.Page : objet de page
L'objet page représente l'objet de classe en cours d'exécution généré par le fichier JSP et n'est pas recommandé aux lecteurs généraux.
8.PageContext : objet de contexte de page
La classe PageContext introduite par JSP permet d'accéder à de nombreuses propriétés de la page. La variable pageContext stocke la valeur de l'objet PageContext associé à la page actuelle. La classe PageContext possède des méthodes telles que getRequest, getResponse, getOut et getSession.
9.Exception : objet d'exception
L'objet d'exception représente l'objet d'exception généré lors de l'exécution du fichier JSP. Cet objet ne peut pas être utilisé directement dans les fichiers JSP ordinaires, mais ne peut être utilisé que dans.
< %@page isErrorPage="true"%> est utilisé dans les fichiers JSP. En effet, l'objet d'erreur généré lors de l'exécution du fichier JSP est rejeté et ne peut être intercepté que par un JSP qui utilise la balise < %@pageisErrorPage="true"% > pour intercepter l'objet d'erreur. La méthode la plus couramment utilisée est getMessage, utilisée pour obtenir des informations sur les erreurs.
4. Page de connexion à l'instance : index.jsp
Code HTML
<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<html>
<tête>
<title>Connexion au système</title>
<méta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="css/vbulletin.css" rel="stylesheet" type="text/css">
<style type="text/css">
.btn {
famille de polices : "Tahoma", "宋体" ;
taille de police : 9 pt ;
couleur : #001E3C ;
BORDURE-BAS : #6794BC 1px solide ;
BORDURE GAUCHE : #8BB8E0 1px solide ;
BORDURE DROITE : #6794BC 1px solide ;
BORDURE-HAUT : #8BB8E0 1px solide ;
image d'arrière-plan : url(image/buttonbg.gif);
CURSEUR : main ;
style de police : normal ;
remplissage à gauche : 3 px ;
remplissage à droite : 3 px ;
}
</style>
<script type="text/javascript">
fonction doLogin(){
var vform = document.loginform;
si(!loginform.username.value){
alert("Veuillez saisir votre nom d'utilisateur !")
retour;
}
si(!loginform.password.value){
alert("Veuillez entrer le mot de passe !")
retour;
}
vform.submit();
}
</script>
</tête>
<body topmargin="0" leftmargin="0" >
<form action="receive.jsp" name="longinForm" method="post">
<table width="100%" height="100%">
<tr>
<td align="center" valign="middle">
<TABLE identifiant="form1"
cellpacing="0" cellpadding="0" border="0" style="largeur : 500 ;">
<CAPTION style="affichage : aucun">
</CAPTION>
<TR>
<TD>
<TABLE width="100%" height="100%" cellpacing="0"
cellpadding="0" border="0" style="table-layout: fixe">
<TR>
<TD valign="haut">
<FIELDSET id="form1_group0" style="largeur : 100 % ;">
<LEGEND>Connexion au système</LEGEND>
<DIV>
<DIV style="largeur : 100% ; hauteur : 100%">
<TABLE width="100%" cellpacing="0"
cellpadding="4" border="0" style="table-layout: corrigé;">
<COLGROUPE>
<COL width="100"></COL>
<COL width="50%"></COL>
<COL width="100"></COL>
<COL width="50%"></COL>
</COLGROUP>
<TR>
<TD align="droite">
nom d'utilisateur
</TD>
<Classe TD="InnerTableContentCell">
<input type="text" name="nom d'utilisateur"
style="largeur : 100 % ;">
</TD>
<TD align="droite">
mot de passe
</TD>
<TD>
<input type="mot de passe" name="mot de passe"
style="largeur : 100 % ;"
<input type="hidden" name="action2" value="0">
</TD>
</TR>
<TR>
<TD colSpan="4"
align="droite">
<input type="button" name="login" value="Connexion" onclick="this.form.submit();" class="btn"/>
</TD>
</TR>
</TABLE>
</DIV>
</DIV>
</FIELDSET>
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</td>
</tr>
</table>
</form>
</corps>
</html>
Page de réception de données : recevoir.jsp
Code HTML
<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" info="action tag"%>
<jsp:useBean id="userVo" class="exercise.vo.UserVo" scope="request">
<jsp:setProperty name="userVo" property="name" param="username"/>
<jsp:setProperty name="userVo" property="password" param="password"/>
</jsp:useBean>
<html>
<tête>
<méta http-equiv="Content-Type" content="text/html;charset=UTF-8" >
<link href="css/vbulletin.css" rel="stylesheet" type="text/css">
</tête>
<corps>
Ceci est ma page JSP.
<hr>Utilisez <jsp:getProperty> pour obtenir la valeur soumise dans le formulaire<br>
nom :<jsp:getProperty property="name" name="userVo"/><br>
mot de passe :<jsp:getProperty property="password" name="userVo"/>
<br><br><hr>
<%
out.println("Obtenir directement à partir de l'objet vo :<br> name:"+userVo.getName()+
"<br>mot de passe :"+userVo.getPassword()+"<br>");
String serviceName = request.getServerName();//objet de requête dans 1.jsp
out.println("<br><hr>Nom du serveur : "+serviceName);
out.println("<br>Type MIME : "+response.getContentType());//objet de réponse interne 2.jsp
session.setAttribute("sessionName","objet de session dans jsp");//3.jsp objet de session interne
out.println("<br>objet de session : "+session.getAttribute("sessionName"));//4.jsp objet de sortie interne
pageContext.setAttribute("pageContext","Référence d'environnement contextuel");//objet pageContext dans 5.jsp
//6.application
//7. configuration de l'instance ServletConfig
//8. Instance de la page java.lang.Object
//9. L'exception doit utiliser une instance de java.lang.Throwable sur la page avec isErrorPage=true dans la directive de page.
String info = pageContext.getServletContext().getServerInfo();
out.println("Récupérer l'attribut info dans la commande page : "+info);
%>
</corps>