Vue d'ensemble des composants Servlet JavaWeb

Cet article présentera le composant Servlet avec son flux de travail, cycle de vie, demande / réponse objet principal.

D'abord avec ses mots blancs dire que sa compréhension de la Servlet, Servlet est présent dans les composants du serveur Web qui peut gérer les demandes des utilisateurs envoyées au serveur dans leur navigateur et traite ensuite la demande de restituer les résultats des données requises par l'utilisateur, à partir d'une requête de base de données les données à afficher sur la page, mais ce type de pages d'affichage de données dynamiques appelées la page jsp, Servlet utilisés conjointement avec la page jsp pour répondre à tous les besoins de l'utilisateur.

La figure est le flux d'interaction avec le client et le serveur:
Insérer ici l'image Description
Insérer ici l'image Description
trois façons de créer des moyens de Servlet

  1. Créer une classe qui implémente l'interface Servlet
  2. Créer une classe HttpServlet classe, héritée
  3. Utilisation de l'IDE créer directement servlet, servlet et registre

servlet deux types d'enregistrement

  1. Dans la version du projet 3.0+ vous pouvez utiliser @WebServlet ( "/") ××× notes enregistrées
  2. Vous pouvez configurer <servlet> dans web.xml version 3.0 enregistré dans le projet
    Insérer ici l'image Description
    Insérer ici l'image Description

cycle de vie servlet

  • Des exemples de l'opération d'initialisation Servlet- - Service - Retours Résultats - Destruction - Récupération
    Insérer ici l'image Description
  1. Des exemples du servlet (monomode de l' exemple)
    où a: la première demande Servlet, par exemple opération
    cas 2: démarrage du serveur, opération instancié

fichier de configuration Servlet est ajouté à la web.xml <load-on-startup>fournir instance de servlet de priorité, la priorité est élevée plus la valeur, de la forme:

<servlet>
	<servlet-name>LifeServlet</servlet-name>
    <servlet-class>cn.hp.servlet.LifeServlet</servlet-class>
    <init-param>
    	<param-name>password</param-name>
    	<param-value>123</param-value>
    </init-param>
    <load-on-startup>10</load-on-startup>
</servlet>
  1. initialisation servlet
    opération d' initialisation immédiatement instancié, exécuté une seule fois, appelle automatiquement la méthode init ()

  2. demande de traitement de servlet
    procédé service de rappel automatique, deux objets passent HttpServletRequest et HttpServletRespose, méthode service () prend une demande d'utilisateur, en réponse au résultat de la transformation de
    la façon dont un: service de remplacement ()
    chemin Second: override doGet () / méthode doPost ()

  3. servlet détruire
    procédé rappel automatique détruire (), Servlet libérer automatiquement les ressources actuellement occupées par l'application en cours est terminé, est enlevé à partir du serveur, le serveur cesse de détruire déclenché ()

L'interface de base Servlet

1. HttpServletRequest

objet Request encapsule tout le paquet de demande de données est généralement utilisé pour obtenir les données provenant du client. Cycle de vie d'une demande, si la demande est transmise également identifiée comme une demande parce que la demande est transmise à l'objet de réponse est passé à une autre servlet à manipuler.

demande d'acquisition de données Méthode:

  • Chaîne value = request.getParameter (String key);
  • Chaîne Valeur [] = request.getParameterValues ​​(String key);
  • Carte <String, String []> carte = request.getParameterMap ();

Les méthodes courantes:

méthode effet
Cookie [] getCookies () Tous Cookie demandé objet et renvoie un tableau de cookies
HttpSession getSession () Renvoie la session en cours associé à la demande de session
Chaîne getContextPath () Retour Demander partie URI indique le contexte demandé
Chaîne getMethod () Renvoie la méthode HTTP demandé, obtenir ou méthode de post
Chaîne getQueryString () Renvoie la chaîne de requête dans le chemin d'URL de requête
Chaîne getRemoteAddr () Retourne l'adresse IP du client envoie une requête

Attaquants la demande:

  1. Obtient avant l'objet de la demande
    RequestDispatcher rd = getRequestDispathcher(String path);
  2. méthode de renvoi d'appel
    rd.forward(HttpServletRequest,HttpServletResponse);

ou directementrequest.getRequestDispatcher("path").forward(request, response);

2. HttpServletResponse

objet de réponse pour un paquet de contenu en réponse aux résultats du paquet de données peut être encapsulé objet cookie, un ensemble de codes de réponse, en ajoutant l'en-tête de réponse, en réponse de celle-ci; pur pour le développement de servlet sans pages JSP, alors, la réponse peut pages de sortie et de l'épissage, le fond JSP est peut rediriger, ci-après sera décrit la différence entre les processus et avant la réorientation de la demande; épissage la page de servlet.

Les méthodes courantes:

méthode effet
addCookie vide (Cookie) Ajoute le cookie spécifié à la réponse
setStatus vide (int quo) Pour définir le code d'état en réponse à
setHeader vide (String nom, valeur String) Définition d'un en-tête de réponse avec un nom donné et la valeur
addHeader vide (String nom, valeur String) Ajouter un en-tête de réponse avec un nom donné et la valeur
sendRedirect vide (emplacement String) Redirect emplacement spécifié URL envoie la réponse temporaire de redirection au client
PrintWriter getWriter () Obtenez le caractère flux de sortie de données
ServletOutputStream getOutputStream () L'obtention d'un flux de sortie d'octets de données

Rediriger la demande:
usage général response.sendRedirect("新的Servlet地址");, est pas la même redirection et le renvoi, la demande est transmise à la réponse de servlet à la fois à l'autre objet au traitement, le client ne change pas l'URL, redirigé par définition, donné une redirection pour permettre l' accès client, les circonstances de tous les paramètres passés à la demande dans l'ensemble n'existe pas, le client accède au serveur plusieurs fois, url va changer, avec le tableau ci - dessous pour illustrer:
Insérer ici l'image Description
Insérer ici l'image Description

3. HttpSession

session Scope est un objet de session, il peut être comprise comme l'utilisateur d'ouvrir un navigateur pour accéder à un serveur départ, à proximité du navigateur pour mettre fin à une session peut comprendre de multiples demandes, la session peut régler les paramètres dans le cadre de la session d'un utilisateur utiliser, plus grande portée que l'objet de la demande, dans la pratique, peut enregistrer la session d'ouverture de session utilisateur de données, par exemple, un utilisateur n'a pas ouvert voulu visiter la page principale, dans un servlet peut déterminer des informations de session, l'utilisateur est redirigé vers la page de connexion.

Les méthodes courantes:

méthode effet
public Object getAttribute (String name) Renvoie l'objet avec le nom spécifié dans la session la session, n'a pas retourné null
setAttribute public void (String name, Object value) Cette méthode utilise le nom spécifié pour lier un objet à la session de la session
public boolean isNew () La session est de déterminer si la nouvelle

Ce qui suit est une connexion réussie à la page principale pour se connecter à nouveau échoué petit boîtier:

//该方法属于登录servlet类
protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
	request.setCharacterEncoding("utf-8");
	HttpSession session = request.getSession();
	Map<String, String[]> map = request.getParameterMap();

	String userName = map.get("userName")[0];
	String password = map.get("password")[0];

	if (dao.login(userName, password) < 0) {
		//登录失败
		request.getRequestDispatcher("/page/login.jsp").forward(request, response);
	} else {
		//登录成功
		session.setAttribute("userName", userName);
		response.sendRedirect("/DynamicWebProject_AnimalManager_v3/animals?type=list");
	}	
}
//该方法属于主页面的servlet类
protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
	request.setCharacterEncoding("utf-8");
	HttpSession session = request.getSession();
	if (session.getAttribute("userName") == null) {
		response.sendRedirect("/DynamicWebProject_AnimalManager_v3/page/login.jsp");
	} else {
		//业务代码
	}
}

4. ServletContext

L'objet actuel est un projet web objet d'environnement (objet de contexte), un contexte correspondant à un objet web du projet peut être considérée comme un objet global, à partir du champ d'application du serveur, le déploiement du projet commence, le se ferme serveur de projet vers le bas ou est supprimé, l'objet peut stocker des variables globales, par exemple le nombre de visites d'un site.

Get ServletContext
ServletContext context = this.getServletContext() //this表示某个servlet实例;
ServletContext context = config.getServletContext();

fonction

  1. L'obtention de paramètres globaux d'initialisation application web
    String username = context.getInitParameter("username");
<context-param>
	<param-name>username</param-name>
    <param-value>zhangsan</param-value>
</context-param>
  1. Le stockage des données globales
    du getAttribute ()
    le setAttribute ()

  2. Obtient le chemin absolu de toutes les ressources d'application Web (environnement de déploiement pour le projet en cours)
    String realPath = context.getRealPath("/");

5. ServletConfig

Cet objet décrit les informations de configuration actuelle liée à elle-même Servlet,

obtenir
ServletConfig config = this.getServletConfig();
String value = config.getInitParameter(String key);

Fonction
obtenir des données re-initialisé dans le Servlet actuel web.xml:

<servlet>
	<init-param>
		<param-name>name</param-name>
		<param-value>zhangsan</param-value>
	</init-param>   
</servlet>

Get / Post demande mode de traitement et brouillées

  • données brouillées demande:
    Page de codage: <meta charset="utf-8">
    requête GET: String username = new String(username.getBytes("iso-8859-1"),"utf-8");
    requête POST:request.setCharacterEncoding("utf-8");

  • Résultats de la réponse brouillée:
    données de la page HTML: response.setContentType(type);
    données en texte clair:response.setCharacterEncoding(charset);

Publié 12 articles originaux · louange gagné 3 · Vues 241

Je suppose que tu aimes

Origine blog.csdn.net/qq_38599840/article/details/104419520
conseillé
Classement