国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison Java JavaQuestions d'entretien Questions d'entretien courantes sur Java Web

Questions d'entretien courantes sur Java Web

Jan 08, 2020 pm 03:39 PM
java

Questions d'entretien courantes sur Java Web

Quelle est la différence entre jsp et servlet ? (Apprentissage recommandé?: Questions de test communes Java )

JSP devient un service (l'essence de JSP est le service, jvm ne peut reconna?tre que les catégories Java, non. Reconna?tre le code JSP et le Web. le conteneur compile le code JSP dans une classe Java qui peut être reconnue par la JVM)

JSP est meilleur pour l'affichage des pages et le servlet est meilleur pour le contr?le logique.

Il n'y a pas d'objets intégrés dans Servlet. Les objets intégrés dans Jsp doivent être obtenus via l'objet HttpServletRequest, l'objet HttpServletResponse et l'objet HttpServlet.

Jsp est une simplification de Servlet. L'utilisation de Jsp ne nécessite que de compléter le contenu que le programmeur doit envoyer au client. La fa?on d'intégrer le script Java dans Jsp dans une classe est complétée par le conteneur Jsp. Servlet est une classe Java complète et la méthode Service de cette classe est utilisée pour générer une réponse au client.

Quels sont les objets intégrés de jsp?? Quelles sont les fonctions ?

JSP possède 9 objets intégrés?:

request?: encapsule la requête du client, qui contient les paramètres de la requête GET ou POST

response : encapsule la réponse du serveur au client ;

pageContext : d'autres objets peuvent être obtenus via cet objet

session : un objet qui encapsule la session utilisateur ; >application : encapsule le serveur L'objet de l'environnement d'exécution ;

out : l'objet de flux de sortie de la réponse du serveur de sortie ;

config : l'objet de configuration de l'application Web ;

page : la page JSP elle-même (équivalent à Java ceci dans le programme) ;

exception : un objet qui encapsule l'exception levée par la page.

Parlez-moi des quatre portées de jsp??

Les quatre portées dans JSP incluent la page, la requête, la session et l'application. Plus précisément?:

page représente les objets liés à une page et à une propriété.

request représente les objets et propriétés liés à une requête émise par le client Web. Une requête peut s'étendre sur plusieurs pages et impliquer plusieurs composants Web?; les données temporaires qui doivent être affichées sur la page peuvent être placées dans cette étendue.

session représente les objets et attributs liés à une session établie par un utilisateur et le serveur. Les données relatives à un utilisateur doivent être placées dans la propre session de l'utilisateur.

l'application représente des objets et des propriétés liés à l'ensemble de l'application Web. Il s'agit essentiellement d'une portée globale qui couvre l'ensemble de l'application Web, y compris plusieurs pages, requêtes et sessions.

Quelle est la différence entre une session et un cookie ?

étant donné que le protocole HTTP est un protocole sans état, lorsque le serveur doit enregistrer le statut de l'utilisateur, il doit utiliser un mécanisme pour identifier l'utilisateur spécifique. Ce mécanisme est des scénarios typiques tels que les achats. Car, lorsque vous cliquez sur le bouton de commande, puisque le protocole HTTP est apatride, il ne sait pas quel utilisateur l'a exploité, le serveur doit donc créer une session spécifique pour l'utilisateur spécifique afin d'identifier l'utilisateur et de le suivre, de sorte que. vous savez combien de livres il y a dans le panier.

Cette Session est enregistrée sur le serveur et possède un identifiant unique. Il existe de nombreuses fa?ons d'enregistrer une session c?té serveur, notamment la mémoire, la base de données et les fichiers.

Le transfert de session doit également être pris en compte lors du clustering. Dans les grands sites Web, il existe généralement un cluster de serveurs de session dédié pour enregistrer les sessions utilisateur. à ce stade, les informations de session sont placées en mémoire et certains caches sont utilisés. car Memcached sont utilisés pour stocker les sessions.

Pensez à la fa?on dont le serveur identifie un client spécifique??

C'est à ce moment-là que Cookie appara?t. Chaque fois qu'une requête HTTP est effectuée, le client enverra les informations de cookie correspondantes au serveur. En fait, la plupart des applications utilisent des cookies pour mettre en ?uvre le suivi de session. Lorsqu'une session est créée pour la première fois, le serveur indiquera au client dans le protocole HTTP qu'un identifiant de session doit être enregistré dans le cookie. Celui-ci sera enregistré pour chaque. demande ultérieure. L'ID de session est envoyé au serveur et je sais qui vous êtes.

Quelqu'un a demandé?: que se passe-t-il si le navigateur du client désactive les cookies??

Généralement dans ce cas, une technologie appelée réécriture d'URL est utilisée pour le suivi de session, c'est-à-dire que pour chaque interaction HTTP, un paramètre tel que sid=xxxxx sera ajouté à l'URL du serveur. l'utilise pour identifier l'utilisateur.

Les cookies peuvent en fait être utilisés dans certains scénarios conviviaux. Imaginez que vous vous êtes connecté une fois à un site Web et que vous ne souhaitez plus accéder à votre compte la prochaine fois que vous vous connectez. faire?

Ces informations peuvent être écrites dans le cookie. Lors de la visite du site Web, le script de la page du site Web peut lire ces informations et remplir automatiquement le nom d'utilisateur pour vous, ce qui peut faciliter l'utilisateur. C'est aussi l'origine du nom du cookie, une petite douceur pour les utilisateurs.

Donc, pour résumer?:

La session est une structure de données enregistrée sur le serveur pour suivre l'état de l'utilisateur. Ces données peuvent être enregistrées dans le cluster, la base de données, dans. le fichier

Le cookie est un mécanisme permettant au client de sauvegarder les informations de l'utilisateur. Il est utilisé pour enregistrer certaines informations de l'utilisateur et constitue également un moyen de mettre en ?uvre une session.

Dites-moi comment se déroule la séance ?

En fait, session est un fichier similaire à une table de hachage qui existe sur le serveur. Les informations dont nous avons besoin y sont stockées et nous pouvons les extraire lorsque nous en avons besoin.

C'est similaire à une grande carte. La clé à l'intérieur stocke l'identifiant de session de l'utilisateur. L'utilisateur apportera cet identifiant de session lors de l'envoi d'une requête au serveur. A ce moment, la valeur correspondante peut en être extraite.

Si le client désactive les cookies, la session peut-elle toujours être utilisée ?

Cookie et Session sont généralement considérés comme deux choses indépendantes. Session utilise une solution qui maintient l'état c?té serveur, tandis que Cookie utilise une solution qui maintient l'état c?té client.

Mais pourquoi ne puis-je pas obtenir de session si je désactive les cookies??

étant donné que la session utilise l'ID de session pour déterminer la session du serveur correspondant à la conversation en cours et que l'ID de session est transmis via Cookie, la désactivation de Cookie équivaut à perdre l'ID de session, et donc à ne pas obtenir la Séance.

Supposons que l'utilisateur utilise Session lorsque les cookies sont désactivés. Il existe plusieurs fa?ons d'y parvenir?:

Définissez "session.use_trans_sid = 1 dans le php.ini. configuration file ", ou activez l'option "--enable-trans-sid" lors de la compilation pour permettre à PHP de transmettre automatiquement l'ID de session entre les pages.

Transmettez manuellement la valeur via l'URL et transmettez l'ID de session via le formulaire masqué.

Enregistrez l'ID de session dans un fichier, une base de données, etc., et appelez-le manuellement pendant le processus interpage.

Quelle est la différence entre le ressort mvc et les jambes de force??

Différences dans les mécanismes d'interception

Struts2 est une interception au niveau de la classe Chaque requête créera une action lors de l'intégration avec Spring, Struts2 ActionBean. la portée d'injection est le prototype du mode prototype, puis les données de la demande sont injectées dans l'attribut via le setter et le getter.

Dans Struts2, une action correspond à un contexte de requête et de réponse. Lors de la réception de paramètres, elle peut être re?ue via des attributs. Cela montre que les paramètres d'attribut sont partagés par plusieurs méthodes.

Une méthode Action dans Struts2 peut correspondre à une URL, mais ses attributs de classe sont partagés par toutes les méthodes, ce qui rend impossible l'utilisation d'annotations ou d'autres méthodes pour identifier sa méthode, et ne peut être con?ue que comme multiple. cas.

SpringMVC est une interception au niveau de la méthode. Une méthode correspond à un contexte de requête, la méthode est donc fondamentalement indépendante et a un accès exclusif aux données de requête et de réponse. Chaque méthode correspond à une URL à la fois. Le paramètre passé est directement injecté dans la méthode, ce qui est unique à la méthode. Les résultats du traitement sont renvoyés au framework via ModeMap.

Pendant l'intégration de Spring, le Controller Bean de SpringMVC est par défaut en mode Singleton, donc par défaut, un seul contr?leur sera créé pour toutes les requêtes. Il ne devrait y avoir aucun attribut partagé, il est donc thread-safe si vous souhaitez le modifier. la portée par défaut, vous devez ajouter la modification de l'annotation @Scope.

Struts2 possède son propre mécanisme d'interception. SpringMVC utilise une méthode Aop indépendante, ce qui fait que la quantité de fichiers de configuration de Struts2 est plus grande que celle de SpringMVC.

Différences dans les frameworks sous-jacents

Struts2 est implémenté à l'aide de Filter (StrutsPrepareAndExecuteFilter), tandis que SpringMVC (DispatcherServlet) est implémenté à l'aide de Servlet. Le filtre est initialisé après le démarrage du conteneur?; il plante après l'arrêt du service, plus tard que le Servlet. Le servlet est initialisé lors de son appel, avant l'appel de Filter, et est détruit après l'arrêt du service.

En termes de performances

Struts2 est une interception au niveau de la classe Chaque requête correspond à une nouvelle action pour l'instance, et toutes les injections de valeurs d'attribut doivent être chargées. SpringMVC implémente une configuration nulle, en raison de l'interception basée sur la méthode de SpringMVC, l'injection du bean en mode singleton est chargée une fois. Par conséquent, l’efficacité et les performances du développement SpringMVC sont supérieures à celles de Struts2.

En termes de configuration

spring MVC et Spring sont transparents. La gestion et la sécurité de ce projet sont également supérieures à celles de Struts2.

Comment éviter l'injection SQL??

PreparedStatement (méthode simple et efficace)

Utiliser des expressions régulières pour filtrer les paramètres entrants

Filtrage de cha?nes

Appel en JSP Cette fonction vérifie si il contient des caractères illégaux

Code de jugement de page JSP

Qu'est-ce qu'une attaque XSS et comment l'éviter ?

L'attaque XSS est également appelée CSS, le nom complet est Cross Site Script (attaque de script intersite). Le principe est que l'attaquant entre du code HTML malveillant dans un site Web présentant des vulnérabilités XSS. Lorsque l'utilisateur navigue sur le site Web, ce code HTML sera automatiquement exécuté pour atteindre l'objectif de l'attaque.

Les attaques XSS sont similaires aux attaques par injection SQL. Dans les attaques par injection SQL, les instructions SQL sont utilisées comme entrée utilisateur pour interroger/modifier/supprimer des données. Dans les attaques XSS, des scripts malveillants sont insérés pour cibler le contr?le du navigateur. obtenir des informations sur l'utilisateur. XSS est une vulnérabilité courante dans les programmes Web. XSS est une méthode d'attaque passive utilisée c?té client.

L'idée générale de la prévention XSS est la suivante?: filtrer l'entrée (et les paramètres d'URL) et encoder la sortie.

Qu'est-ce qu'une attaque CSRF et comment l'éviter ?

CSRF (Cross-site request falsification) est également appelé attaque en un clic ou session riding. Le nom chinois complet est cross-site request falsification. D'une manière générale, l'attaquant falsifie la requête du navigateur de l'utilisateur et l'envoie à un site Web que l'utilisateur s'est authentifié pour visiter, de sorte que le site Web cible re?oit et pense à tort qu'il s'agit de l'opération réelle de l'utilisateur et exécute la commande.

Couramment utilisé pour voler des comptes, transférer de l'argent, envoyer de faux messages, etc. L'attaquant exploite la vulnérabilité de vérification des demandes du site Web pour mettre en ?uvre une telle attaque. Le site Web peut confirmer que la demande provient du navigateur de l'utilisateur, mais ne peut pas vérifier si la demande provient de la véritable intention de l'utilisateur.

Comment éviter?:

1. Vérifiez le champ HTTP Referer

Le champ Referer dans l'en-tête HTTP enregistre le Adresse source de la requête HTTP. Dans des circonstances normales, la demande d'accès à une page sécurisée et restreinte provient du même site Web, et si un pirate informatique souhaite mettre en ?uvre une attaque CSRF

, il ne peut généralement construire la demande que sur son propre site Web. Par conséquent, les attaques CSRF peuvent être défendues en vérifiant la valeur Referer.

2. Utiliser le code de vérification

Ajouter le code de vérification à la page d'opération clé Après avoir re?u la demande, l'arrière-plan peut juger le code de vérification pour empêcher CSRF. Mais cette méthode n’est pas très conviviale.

3. Ajoutez un jeton à l'adresse de la demande et vérifiez

La raison pour laquelle l'attaque CSRF réussit est que le pirate informatique peut complètement falsifier la demande de l'utilisateur, et tout le reste. Les informations de vérification de l'utilisateur existent dans les cookies, de sorte que les pirates peuvent directement utiliser les propres cookies de l'utilisateur pour passer la vérification de sécurité sans conna?tre les informations de vérification. La clé pour résister au CSRF est d’insérer dans la demande des informations que les pirates ne peuvent pas falsifier et que ces informations n’existent pas dans les cookies.

Vous pouvez ajouter un jeton généré aléatoirement en tant que paramètre dans la requête HTTP et créer un intercepteur c?té serveur pour vérifier le jeton dans la requête ou si le contenu du jeton est incorrect. est considéré comme possible. La demande est rejetée en raison d'une attaque CSRF.

Cette méthode est plus s?re que la vérification du référent. Le jeton peut être généré une fois que l'utilisateur s'est connecté et placé dans la session. Ensuite, le jeton peut être retiré de la session à chaque demande et mis en correspondance avec le jeton présent. la requête. Comparez, mais la difficulté de cette méthode est de savoir comment ajouter le jeton à la requête sous forme de paramètres.

Pour les requêtes GET, le jeton sera ajouté à l'adresse de la requête, de sorte que l'URL devienne http://url?csrftoken=tokenvalue.

Pour les requêtes POST, ajoutez à la fin du formulaire, pour que le token soit sous la forme d'un paramètre Demandé à rejoindre.

4. Personnalisez les attributs dans l'en-tête HTTP et vérifiez

Cette méthode utilise également des jetons pour la vérification. La différence avec la méthode précédente est qu'il n'y a pas de lieu de mise. le jeton en tant que paramètre dans la requête HTTP, placez-le dans un attribut personnalisé dans l'en-tête HTTP.

Grace à la classe XMLHttpRequest, vous pouvez ajouter l'attribut d'en-tête HTTP csrftoken à toutes les requêtes de ce type à la fois et y mettre la valeur du jeton.

Cela résout l'inconvénient de l'ajout d'un jeton à la requête dans la méthode précédente. Dans le même temps, l'adresse demandée via XMLHttpRequest ne sera pas enregistrée dans la barre d'adresse du navigateur et il n'y a pas lieu de s'inquiéter de la question. le jeton est divulgué sur d'autres sites Web via le référent.

Ce 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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276
Comment gérer les transactions en Java avec JDBC? Comment gérer les transactions en Java avec JDBC? Aug 02, 2025 pm 12:29 PM

Pour gérer correctement les transactions JDBC, vous devez d'abord désactiver le mode de validation automatique, puis effectuer plusieurs opérations, et enfin vous engager ou randonner en fonction des résultats; 1. Appelez Conn.SetAutoCommit (false) pour démarrer la transaction; 2. Exécuter plusieurs opérations SQL, telles que l'insertion et la mise à jour; 3. Appelez Conn.Commit () Si toutes les opérations sont réussies, et appelez Conn.Rollback () Si une exception se produit pour garantir la cohérence des données; Dans le même temps, les ressources TRY-With doivent être utilisées pour gérer les ressources, gérer correctement les exceptions et cl?turer les connexions pour éviter la fuite de connexion; De plus, il est recommandé d'utiliser des pools de connexion et de définir des points de sauvegarde pour réaliser un retour en arrière partiel, et de maintenir les transactions aussi courtes que possible pour améliorer les performances.

Comment travailler avec le calendrier à Java? Comment travailler avec le calendrier à Java? Aug 02, 2025 am 02:38 AM

Utilisez des classes dans le package Java.Time pour remplacer les anciennes classes de date et de calendrier; 2. Obtenez la date et l'heure actuelles via LocalDate, LocalDateTime et Localtime; 3. Créez une date et une heure spécifiques en utilisant la méthode OF (); 4. Utilisez la méthode plus / moins pour augmenter et diminuer le temps; 5. Utilisez ZonedDateTime et ZoneID pour traiter le fuseau horaire; 6. Format et cha?nes de date d'analyse via DateTimeFormatter; 7. Utilisez instantanément pour être compatible avec les anciens types de dates si nécessaire; Le traitement des dattes dans le Java moderne devrait donner la priorité à l'utilisation de Java.timeapi, qui fournit clairement, immuable et linéaire

Comparaison des frameworks Java: Spring Boot vs Quarkus vs MicronAut Comparaison des frameworks Java: Spring Boot vs Quarkus vs MicronAut Aug 04, 2025 pm 12:48 PM

Pré-formancetartuptimemoryusage, quarkusandmicronautleadduetocompile-timeprocessingandgraalvsupport, withquarkusofperforming lightbetterine scénarios.

Passez l'exemple de l'exemple de journalisation du middleware http Passez l'exemple de l'exemple de journalisation du middleware http Aug 03, 2025 am 11:35 AM

HTTP Log Middleware dans GO peut enregistrer les méthodes de demande, les chemins de requête, la propriété intellectuelle du client et le temps qui prend du temps. 1. Utilisez http.handlerfunc pour envelopper le processeur, 2. Enregistrez l'heure de début et l'heure de fin avant et après l'appel Suivant.Servehttp, 3. Obtenez le vrai client IP via R.RemoteAddr et X-Forwared-For Headers, 4. Utilisez le log.printf aux journaux de demande de sortie, 5. L'exemple de code complet a été vérifié pour s'exécuter et convient au démarrage d'un projet petit et moyen. Les suggestions d'extension incluent la capture des codes d'état, la prise en charge des journaux JSON et le suivi des ID de demande.

Comment fonctionne la collection Garbage en Java? Comment fonctionne la collection Garbage en Java? Aug 02, 2025 pm 01:55 PM

La collecte des ordures de Java (GC) est un mécanisme qui gère automatiquement la mémoire, ce qui réduit le risque de fuite de mémoire en récupérant des objets inaccessibles. 1. GC juge l'accessibilité de l'objet de l'objet racine (tel que les variables de pile, les threads actifs, les champs statiques, etc.), et les objets inaccessibles sont marqués comme des ordures. 2. Sur la base de l'algorithme de compensation de marque, marquez tous les objets accessibles et effacez des objets non marqués. 3. Adopter une stratégie de collecte générationnelle: la nouvelle génération (Eden, S0, S1) exécute fréquemment MinorGC; Les personnes agées fonctionnent moins, mais prend plus de temps pour effectuer MajorGC; Metaspace Stores Metadata de classe. 4. JVM fournit une variété de périphériques GC: SerialGC convient aux petites applications; Le parallelGC améliore le débit; CMS réduit

Utilisation de types HTML ?Entrée? pour les données utilisateur Utilisation de types HTML ?Entrée? pour les données utilisateur Aug 03, 2025 am 11:07 AM

Le choix du bon type HTMLinput peut améliorer la précision des données, améliorer l'expérience utilisateur et améliorer la convivialité. 1. Sélectionnez les types d'entrée correspondants en fonction du type de données, tels que le texte, le courrier électronique, le tel, le numéro et la date, qui peuvent vérifier automatiquement la somme de la somme et l'adaptation au clavier; 2. Utilisez HTML5 pour ajouter de nouveaux types tels que l'URL, la couleur, la plage et la recherche, qui peuvent fournir une méthode d'interaction plus intuitive; 3. Utilisez l'espace réservé et les attributs requis pour améliorer l'efficacité et la précision du remplissage des formulaires, mais il convient de noter que l'espace réservé ne peut pas remplacer l'étiquette.

Comparaison des outils de construction Java: Maven vs Gradle Comparaison des outils de construction Java: Maven vs Gradle Aug 03, 2025 pm 01:36 PM

GradleisthebetterChoiceFormostNewProjectsDuetOtsSuperiorflexibility, Performance et ModerNtoolingSupport.1.gradle’sgroovy / kotlindslismoreConcis

passer par l'exemple de déclaration de différence expliquée passer par l'exemple de déclaration de différence expliquée Aug 02, 2025 am 06:26 AM

Le report est utilisé pour effectuer des opérations spécifiées avant le retour de la fonction, telles que les ressources de nettoyage; Les paramètres sont évalués immédiatement lorsqu'ils sont reportés et les fonctions sont exécutées dans l'ordre de la dernière entrée (LIFO); 1. Plusieurs éleveurs sont exécutés dans l'ordre inverse des déclarations; 2. Communément utilisé pour le nettoyage sécurisé tel que la fermeture des fichiers; 3. La valeur de retour nommée peut être modifiée; 4. Il sera exécuté même si la panique se produit, adaptée à la récupération; 5. éviter l'abus de report dans les boucles pour éviter la fuite des ressources; Une utilisation correcte peut améliorer la sécurité et la lisibilité du code.

See all articles