1. Application WEB
Architecture B/S (navigateur/serveur, navigateur/serveur)
Basée sur le protocole de transmission HTTP ( Hypertext Transfer Protocol, rappelons le nom de HTML : Hypertext Markup Language)
Les programmes WEB doivent s'exécuter sur des conteneurs web, tels que Tomcat/Jboss/WebLogic, etc.
2. Protocole HTTP
HTTP utilise TCP comme protocole de couche de transport de support et le port par défaut est 80 (port par défaut).
Hypertext Transfer Protocol (HTTP) est un protocole de couche application. HTTP est un protocole de requête/réponse, c'est-à-dire qu'une fois qu'un client établit une connexion avec le serveur, il envoie une requête au serveur ; une fois que le serveur a reçu la requête, il donne les informations de réponse correspondantes. ,
Le message de requête HTTP se compose de quatre parties : ligne de requête, en-tête de requête, ligne vide et corps de requête. Ce qui suit est une analyse simple du format du message de requête :
Ligne de requête : la requête. La ligne se compose de trois parties : le champ méthode, le champ URL et le champ version du protocole HTTP, séparés par des espaces. Les méthodes de requête HTTP couramment utilisées incluent GET, POST, HEAD, PUT, DELETE, OPTIONS, TRACE, CONNECT ;
GET : lorsque le client souhaite lire une ressource du serveur, utilisez la méthode GET. La méthode GET nécessite que le serveur place la ressource localisée par l'URL dans la partie données du message de réponse et la renvoie au client, c'est-à-dire qu'il demande une ressource au serveur. Lors de l'utilisation de la méthode GET, les paramètres de requête et les valeurs correspondantes sont ajoutés à l'URL. Un point d'interrogation ("?") est utilisé pour représenter la fin de l'URL et le début des paramètres de requête. les paramètres sont limités. Par exemple, /index.jsp?id=100&op=bind.
POST : La méthode POST peut être utilisée lorsque le client fournit de nombreuses informations au serveur. La méthode POST soumet des données au serveur, par exemple en complétant la soumission des données du formulaire et en soumettant les données. au serveur pour traitement. GET est généralement utilisé pour obtenir/interroger des informations sur les ressources, et POST est livré avec des données utilisateur et est généralement utilisé pour mettre à jour les informations sur les ressources. La méthode POST encapsule les paramètres de la requête dans les données de la requête HTTP, apparaissant sous forme de nom/valeur, qui peuvent transmettre une grande quantité de données. En-tête de requête : L'en-tête de requête est constitué de paires mot-clé/valeur, une paire par ligne, de mots-clés ; et les valeurs sont utilisées séparées par deux points anglais ":".
L'en-tête de requête informe le serveur de la requête du client. Les en-têtes de requête typiques sont :
User-Agent : le type de navigateur qui a généré la requête ;
Accepter : Liste des types de contenu de réponse reconnus par le client ; l'astérisque "*" est utilisé pour regrouper les types par plage, utilisez "*/*" pour indiquer que tous les types sont acceptables, utilisez "type/*" Indique tous les sous-types du type de type acceptable ;
Accept-Language : le langage naturel acceptable pour le client
Accept-Encoding : le codage acceptable pour le client Format compressé ; ;
Accept-Charset : jeu de caractères de réponse acceptable ;
Hôte : nom d'hôte demandé, permettant à plusieurs noms de domaine d'être dans la même adresse IP, c'est-à-dire virtuel. hôte ;
connexion : méthode de connexion (close ou keepalive) ;
Cookie : stocké dans le champ d'extension du client, envoi d'informations appartenant au même nom de domaine au serveur Cookie de domaine ;
Ligne vide : il y a une ligne vide après le dernier en-tête de requête, envoyant des caractères de retour chariot et de saut de ligne pour informer le serveur qu'il n'y a plus d'en-tête de requête ci-dessous ; 🎜>
Corps du package de requête : Le corps du package de requête n'est pas utilisé dans la méthode GET, mais utilisé dans la méthode POST. La méthode POST convient aux situations où les clients doivent remplir un formulaire. Les plus couramment utilisés liés au corps du package de requête sont le type de corps du package Content-Type et la longueur du corps du package Content-Length.
Ligne d'état : la ligne d'état comprend le champ de version du protocole HTTP, le code d'état et code d'état Le texte de description se compose de 3 parties, séparées par des espaces ; le code d'état est composé de trois chiffres, le premier chiffre indique le type de réponse. Il existe cinq catégories de codes d'état couramment utilisés comme suit :
1xx. : Indique que le serveur a reçu la demande du client et que le client peut continuer à envoyer des demandes ;
2xx : Indique que le serveur a reçu avec succès la demande et l'a traitée
3xx : Indique que ; le serveur demande au client de redirectionnel ;
4xx : indique que la demande du client contient du contenu illégal
5xx : indique que le serveur n'a pas réussi à traiter la demande du client normalement et une erreur inattendue ;
status Le texte de description du code a les valeurs suivantes :200 OK : indique que la demande du client est réussie
400 Bad Request ; : Indique que la requête du client comporte une erreur de syntaxe et ne peut pas être comprise par le serveur ;
401 Unauthonzed : Indique que la requête n'est pas autorisée, ce code d'état doit être utilisé avec le champ d'en-tête WWW-Authenticate
403 Interdit : indique que le serveur a reçu la demande, mais a refusé de fournir le service, donnez généralement la raison pour laquelle il n'a pas fourni le service dans le corps de la réponse 404 Non trouvé : la ressource demandée ; n'existe pas, par exemple, une mauvaise URL a été saisie ; 500 Erreur interne du serveur : indique que le serveur a Une erreur inattendue a empêché la demande du client de se terminer 503 Service ; Indisponible : indique que le serveur est actuellement incapable de traiter la demande du client. Après un certain temps, le serveur peut revenir à la normale ;3. Servlet
Servlet est le cœur de javaWEB En termes simples, il s'agit d'un programme côté serveur écrit en Java. Lorsque l'utilisateur fait une requête dynamique (une requête statique consiste à demander directement du HTML), il demande en fait un servlet
Le conteneur WEB charge le servlet en mémoire et l'initialise via la méthode init
Méthode Service() La méthode de traitement correspondante doPost() ou doGet() est appelée en fonction de la méthode de requête, et il existe d'autres méthodes de requête doPut() doOptions()... Mais ces méthodes ne sont pas couramment utilisées et sont recommandées pour être bloqué du point de vue de la sécurité.
Lorsque le Serveur n'a plus besoin du Servlet (généralement lorsque le Serveur est arrêté), le Serveur appelle la méthode destroy() du Servlet.
4. JSP
Java Server Pages est une technologie qui mélange des machines de codage statiques et du codage dynamique Java. Le code est intégré dans HTML. Avant JSP, Servlet était le corps principal, avec des fonctions relativement puissantes et une conception avancée. Cependant, la page HTML était entièrement out.print() de Java, qui sort ligne par ligne, ce qui est très important pour la page. l'écriture et la modification étaient très gênantes, ce qui a incité SUN à lancer JSP. JSP, comme ASP et PHP, sont tous des langages embarqués. De plus, lorsque le conteneur WEB est déplacé, JSP sera compilé en Servlet. On dit également que JSP est une version améliorée de Servlet.
5. Tomcat
Il existe de nombreux conteneurs Java WEB, nous prenons ici Tomcat comme exemple. Comme mentionné précédemment, les programmes WEB doivent s'exécuter sur des conteneurs WEB. Tomcat est utilisé comme conteneur WEB pour exécuter des programmes WEB Java. Tomcat est écrit en langage JAVA et nécessite JVM comme environnement d'exécution.
Structure des répertoires de Tomcat
bin……………………………… programme exécutable (script), démarrez et arrêtez le débogage de certains bat.sh de Tomcat
conf………………………………………….Fichiers de configuration webx.ml server.xml etc.
lib……………………………………. jars requis pour que Tomcat exécute Package
journaux……………….Fichier journal
temp……………….Fichier temporaire
webapps………… ……Programme WEB (fichier de projet compilé)
travail……………………………….générer un fichier jsp dans un fichier java dans ce répertoire
En complément, Tomcat le fait Je ne compile pas jsp en fichiers Java en temps réel, donc parfois la page est modifiée et cela ne prend pas effet à temps. Pour le moment, il suffit de supprimer les fichiers correspondants dans le répertoire de travail.
6. Structure du projet Java WEB
De manière générale, les projets Java dont on parle souvent sont essentiellement des projets WEB (architecture B/S) , ce n'est pas que Java ne puisse pas créer de programmes C/S. En fait, Swing de Java est utilisé pour dessiner des interfaces. Mais maintenant, C# est devenu le langage le plus populaire pour dessiner des interfaces. Il est rapide et simple, donc de moins en moins de gens l'utilisent. Java pour le faire. Programme C/S développé. Nous parlons principalement de projets Java WEB. Voici la structure de projet la plus basique.
src………………………………………….Code source JAVA, répertoire de fichiers java
webContent/webRoot…………Répertoire de version du projet
WEB- INF
lib…………………………………….jar package nécessaire au projet
web.xml……………… Entrée au programme WEB
Ce qui précède est la structure de base du projet Java WEB. Dans le développement réel, la construction du projet sera plus compliquée que celles-ci, surtout une fois le framework référencé, l'augmentation des fichiers de configuration s'ajoutera. quelques nouveaux répertoires.
7. Cadre de développement
Comme mentionné précédemment, lorsque le client lance une requête dynamique, la requête est transmise au servlet pour traitement, et puis revient et la requête entière est traitée. Le travail est entièrement géré dans Servlet, ce qui semble relativement simple. Nous écrivons un Servlet chaque fois que nous avons besoin d'une requête différente. Cependant, s'il y a de nombreux modules fonctionnels pendant le développement réel, nous devons écrire. de nombreux Servlets, et si l'on veut modifier Le retour d'une requête doit également se faire en modifiant le code Java (Servlet).
C'est plus gênant pour l'expansion et la maintenance des fonctions, cela a donc favorisé la popularité de nombreux cadres de développement simultanés intégrés, tels que Webwork, Struts, SpringMVC, Jfinal, etc., qui sont tous des cadres de développement Java WEB courants. .
Il existe un aperçu très général des avantages de l'utilisation d'un framework. Cela peut accélérer le processus de développement. La réutilisation du code dans des projets similaires permettra aux développeurs d'économiser beaucoup de temps et d'efforts. effectuer des tâches de codage fastidieuses. Laissez les utilisateurs se soucier uniquement du développement de leur activité principale, et le cadre vous aide à protéger divers problèmes techniques qui n'ont rien à voir avec la technologie d'origine et le développement commercial. Mais si vous souhaitez comprendre un framework en profondeur et l’utiliser plus habilement, vous devez toujours comprendre les principes sous-jacents et trouver sa source, qui est Servlet.
Prenons SpringMVC comme exemple pour décrire brièvement le principe de fonctionnement
SprfngMVC implémente principalement l'interface Servlet via DispatcherServlet (répartiteur de servlet, configuré dans web_xml), également appelé Front- contrôleur final, les requêtes du front-end arriveront ici en premier, et il est responsable de faire correspondre le gestionnaire approprié à l'arrière-plan. Le flux de travail principal de DispatcherServlet est le suivant :
1. Le client envoie une requête http au serveur Web et le serveur Web analyse la requête http. Si elle correspond au chemin de mappage de la requête de DispatcherServlet (spécifié dans web.xml), le conteneur Web transfère la requête à DispatcherServlet. .
2. Après avoir reçu cette demande, DipatcherServlet trouvera le contrôleur de processeur (gestionnaire) qui gère la demande en fonction des informations de la demande (y compris l'URL, la méthode Http, l'en-tête de la demande et le paramètre de demande Cookie, etc.) et la configuration de HandlerMapping.
3. DispatclierServlet trouve le gestionnaire correspondant selon HandlerMapping, transmet la puissance de traitement au gestionnaire (le gestionnaire encapsule le traitement spécifique), puis le HandlerAdapter spécifique effectue un appel spécifique au gestionnaire.
5. Une fois que Handler a terminé le traitement des données, il renverra un objet ModeAndView à DispatcherServlet.
6. Le ModelAndView renvoyé par Handler n'est qu'une vue logique et non une vue formelle que DispatcherSevlet utilisera. ViewResolver to La vue d'édition est convertie en une vue réelle (cette phrase renvoie simplement un chemin relatif vers la page à renvoyer et est convertie en page spécifique via l'analyseur try).
7. Dispatcher analyse les paramètres dans ModeAndView à travers le modèle, les analyse, puis affiche la vue complète et la renvoie au client.
8. Utilisez SpringMVC pour écrire des modules fonctionnels
En raison de la lourde charge de travail de configuration du framework, il est également nécessaire d'avoir une compréhension de diverses technologies, je ne le décrirai donc pas pour le moment être. Parlons brièvement de la façon de compléter un module fonctionnel basé sur le framework existant en développement réel et comprenons le processus de base de la fonction. Prenons l'exemple de la connexion :
1. portail (page JSP), dans le framework SpringMVC, nous ne recommandons pas l'accès direct à la page JSP, donc l'accès à notre page de connexion se fait également en arrière-plan 2. Écrivez la page 丨ogin.jsp et ; l'index de la page de retour de connexion .jsp ;3. Write LoginController, qui contient deux méthodes de contrôle de requête, une preLogin() et une doLogin() est responsable du traitement de la demande pour la page de connexion (. retournez à login.jsp), doLogin() traite la demande de connexion et retourne à index.jsp. 4. La demande de connexion doit être effectuée via le formulaire ou ajax dans login.jsp. Le traitement de la logique métier Request/preLogin renvoie à login.jsp à Entrez le nom d'utilisateur et le mot de passe...Le traitement de la logique métier Request/doLogin renvoie le résultat de connexion index.jsp.9. Autres connaissances de base
Opérations de base de données, Jdbc/Hibernate/MybatisBalises JSP, expressions EL, Struts balises, balises C, etc.Technologie front-end de base CSS/JS/jQuery/AjaxCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!