Notes d'étude Java - Servlet Day54 et JSP (deux)



1. Le rôle de Servlet et JSP


Servlet: interface d'arrière-plan, fournit des données au programme de premier plan et obtient des données de la couche de gestion. Le servlet ne sera pas utilisé pour générer des pages dynamiques, mais sera utilisé pour recevoir des requêtes de JSP, traiter les requêtes, puis accéder à la page JSP pour afficher les résultats au client.

JSP: Responsable de l'interaction avec les utilisateurs, de l'affichage des données et des entrées utilisateur. JSP convient à la génération de pages dynamiques, car la partie statique de celles-ci peut être directement utilisée en HTML.

Deuxièmement, l'interaction entre Servlet et JSP


(1) Passer les données du servlet vers JSP

  • Servlet: ① Définissez les données via la méthode setAttribute de la requête d'objet intégrée (HttpServletRequest). ② Définissez les données via la méthode setAttribute de la session d'objet intégrée (HttpSession).

  • JSP: ① Obtenez des données via la méthode getAttribute de la requête d'objet intégrée (HttpServletRequest). ② Obtenez des données via la méthode getAttribute de la session d'objet intégrée (HttpSession).

(2) Passer les données de JSP au servlet

  • JSP: ① Soumettez le formulaire. ② valeur de transfert d'url (similaire à la soumission du formulaire).

  • Servlet: ① Obtenez les paramètres de requête (chaîne unique) via la méthode getParameter de la requête d'objet intégrée (HttpServletRequest). ② Obtenez les paramètres de la requête (tableau de chaînes) via la méthode getParameterValues ​​de la requête d'objet intégrée (HttpServletRequest).

Remarque:

① Si la valeur obtenue est une valeur nulle, vous pouvez ajouter une instruction if dans le code pour déterminer si la valeur obtenue est nulle. Créez une variable dont la valeur par défaut est une chaîne vide. Si la valeur de jugement n'est pas nulle, affectez la valeur obtenue au montant de la modification.

② S'il y a des caractères chinois déformés, le format d'encodage de la demande doit être défini sur utf-8 (uniquement valable pour la publication) au début du programme, et la méthode de soumission de formulaire de JSP doit être définie sur post. Le format de codage dans JSP doit également être défini sur utf-8.

	request.setCharacterEncoding("utf-8");
	
	String keywords="";
	if(request.getParameter("keywords")!=null) {
    
    
		keywords = request.getParameter("keywords");
	}

Troisièmement, le mode de saut entre Servlet et JSP

1. Transférer


Transfert: La vitesse est rapide et la barre d'adresse reste inchangée. C'est le comportement interne du serveur et n'a rien à voir avec le navigateur. Le navigateur n'obtient que les données transmises par le serveur. Il ne peut être transmis que dans le cadre du projet en cours.

Le transfert de demande est également appelé transfert direct (Forward), le client et le navigateur n'envoient qu'une seule fois, Servlet, HTML, JSP ou d'autres ressources d'information, la deuxième ressource d'information répond à la demande, dans la demande d'objet de demande, l'objet enregistré Pour chaque ressource d'information est partagée.

Réalisez la méthode de transfert un:

L'interface RequestDispatcher définit la méthode de transmission des requêtes:

Déclaration de méthode Description de la méthode
forward (requête ServletRequest, réponse ServletResponse) Transférez la demande vers d'autres ressources sur le serveur, y compris d'autres servlet, JSP, etc.

Pour utiliser la méthode de transfert, vous devez d'abord obtenir l'objet RequestDispatcher. La méthode pour obtenir cet objet est fournie dans l'interface de requête ServletRequest:

Déclaration de méthode Description de la méthode
RequestDispatcher getRequestDispatcher (chemin java.lang.String) Utilisez chemin pour renvoyer un objet RequestDispatcher.
	// 从servlet跳转到jsp页面
	request.getRequestDispatcher("a.jsp").forward(request, response);

Réalisation de la méthode de transfert deux: jsp dynamic.

	<jsp:forward page="url地址"></jsp:forward>

2. Rediriger


Redirection: La vitesse est rapide, la barre d'adresse changera, et chaque demande de redirection est liée au navigateur, et elle peut être redirigée vers n'importe quelle page (les pages qui ne sont pas dans le projet en cours peuvent également être redirigées).

La redirection est également appelée méthode de transfert indirect (Redirect), qui est en fait deux requêtes HTTP. Lorsque le serveur répond à la première requête, le navigateur envoie une requête à une autre URL pour atteindre l'objectif de transfert.

Réalisez la première méthode de redirection:

La méthode de redirection est fournie dans l'interface de réponse HttpServletResponse:

Déclaration de méthode Description de la méthode
void sendRedirect (emplacement java.lang.String) La redirection vers l'adresse de l'emplacement équivaut à une nouvelle demande par le client de la ressource à l'emplacement.
	response.sendRedirect("a.jsp");

Réalisation de la méthode de redirection 2: html une balise.

	<a href="url地址"></a>

Réalisation de la méthode de redirection 3: formulaire get request (post n'est pas redirection).

   <form action="ts.do" method="get"></form>

Réalisation de la méthode de redirection quatre: étiquette jstl.

	<c:redirect url="ts.do"></c:redirect>

Implémentation de la méthode de redirection 5: redirection javascript.

	<script>
		location.href="ts.do";
	</script>

3. Sautez entre Servlet et JSP

3.1, saut de servlet vers JSP


(1) Transfert (uniquement transmis au fichier de projet en cours, les données peuvent être transportées)

	request.setAttribute("list", list);
	request.getRequestDispatcher("index.jsp").forward(request, response);

(2) Redirection (peut être redirigée vers ce fichier projet ou vers l'adresse URL d'un projet externe)

	response.sendRedirect("../../../../admin/admin.jsp");

3.2, saut JSP vers Servlet


(1) Transfert (uniquement transmis au fichier de projet en cours, les données peuvent être transportées)

  1. première méthode:
	<% 
		request.setAttribute("key", "value");
		request.getRequestDispatcher("ts1.do").forward(request, response);
	%>
  1. Deuxième voie:
	<jsp:forward page="ts1.do"></jsp:forward>

(2) Redirection (peut être redirigée vers ce fichier projet ou vers l'adresse URL d'un projet externe)

  1. première méthode:
	<%
		response.sendRedirect("ts1.do");
	%>
  1. Deuxième voie:
	<a href="ts1.do" >跳转到servlet</a>
  1. Troisième voie:
	<form action="ts1.do" method="get"></form>
  1. Quatrième voie:
	<script>
		location.href="ts1.do?...";
	</script>
  1. Cinquième façon:
	<c:redirect url="ts.do"></c:redirect>

Quatrièmement, la manière dont le client accède au servlet côté serveur


Le client peut accéder au servlet côté serveur de trois manières, à savoir:

(1) Entrez l'URL directement depuis la barre d'adresse pour accéder: utilisez directement l'URL pour accéder, c'est la méthode GET, et la méthode doGet est appelée.

(2) Cliquez sur le lien hypertexte dans la page Web à visiter: la visite du lien hypertexte est en mode GET et la méthode doGet est appelée.

  • En html ou JSP:
   <!-- 传递数据的方式: url传值 ?key=value&key=value key为参数名 -->
   <a href="a.do?name=tom&pwd=123456">提交请求到Servlet</a>
  • Dans la méthode doGet de Servlet:
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
		//获取url传递过来的值
		String name = request.getParameter("name");//变量name的值为tom
		String pwd = request.getParameter("pwd");//变量pwd的值为123456
		System.out.println("name :"+name+", pwd :"+pwd);
	}

(3) Accès via la soumission de formulaire dans la page Web: l'accès à la soumission de formulaire dépend de la valeur de l'attribut method du formulaire, la valeur par défaut est get, et quand il est spécifié comme post, la méthode doPost est appelée.

  • En html ou JSP:
   <!-- 传递数据的方式: 表单传值 get方法 ?key=value&key=value  key为参数名 -->
   <form action="ts.do" method="get">
     <input type="text"  name="name" value="tom"><br/>
     <input type="password"  name="pwd" value="123456"><br/>
     <input type="submit" value="提交">
   </form>
  • Dans la méthode doGet de Servlet:
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
		//获取url传递过来的值
		String name = request.getParameter("name");//变量name的值为tom
		String pwd = request.getParameter("pwd");//变量pwd的值为123456
		System.out.println("name :"+name+", pwd :"+pwd);
	}

Je suppose que tu aimes

Origine blog.csdn.net/qq_42141141/article/details/111601708
conseillé
Classement