In diesem Artikel wird hauptsächlich die Verwendung von benutzerdefinierten JavaWeb-Tags vorgestellt und die Funktionen, Definitionsmethoden und Ausführungsprinzipien von benutzerdefinierten JavaWeb-Tags in Form von Beispielen analysiert
Die Beispiele in In diesem Artikel wird die Verwendung benutzerdefinierter JavaWeb-Labels beschrieben. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Benutzerdefinierte Tag-Erstellung
Benutzerdefinierte Tags werden hauptsächlich zum Entfernen von JSP-Seiten verwendet Java-Code.
Um den Java-Code auf der JSP-Seite zu entfernen, müssen Sie nur zwei Schritte ausführen:
-Schreiben Sie eine Java-Klasse, die TagSupport erbt, überschreiben Sie die doStartTag-Methode und schreiben Sie den Java-Code auf der JSP-Seite in das doStartTag Verfahren.
- Schreiben Sie eine Tag-Bibliotheksdeskriptordatei (tld) und beschreiben Sie das benutzerdefinierte Tag in der tld-Datei.
Nach Abschluss der oben genannten Vorgänge können Sie benutzerdefinierte Tags in JSP-Seiten importieren und verwenden.
Tag-Verarbeitungsklasse: HelloTag.java
Tag-Beschreibungsdatei: hellotag.tld
JSP-Seitenaufruf: a52e5751f07545db7efce32c1729f60a Definieren Sie Ausdrücke
[Optional] im Web. Konfigurieren Sie die hellotag.tld-Zuordnung in XML
Anwendungsprozess:
index.jsp ==>[web.xml]==>hellotag.tld==> ;HelloTag.java
definiert die Tag-Unterstützungsklasse wie folgt:
HelloTag.java
package china.hubei; import java.io.IOException; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.TagSupport; //自动定义标签 public class HelloTag extends TagSupport { public int doStartTag() throws JspException{ PageContext pg=(PageContext)super.pageContext; JspWriter out=pg.getOut(); try{ out.println("hello world"); }catch(IOException e){ } return TagSupport.SKIP_BODY; } }
Tag-Beschreibungsklasse, das Suffix ist .tld, Der Inhalt entspricht den XML-Syntaxregeln
hellotag.tld
<?xml version="1.0" encoding="UTF-8"?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd" version="2.0"> <tlib-version>1.0</tlib-version> <!-- 标签库的版本 --> <short-name>dqtag</short-name><!-- 标签库在TLD中的描述名称 --> <tag> <name>hello</name> <!-- 标签在jsp中使用名称 --> <tag-class>china.hubei.HelloTag</tag-class><!-- 标签指向的class文件 --> <body-content>empty</body-content><!-- 标签内容为空 --> </tag> </taglib>
Benutzerdefinierte Tags auf JSP-Seiten verwenden
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ page isELIgnored="false"%> <%@taglib prefix="mytag" uri="/WEB-INF/hellotag.tld" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>标题</title> <!-- <link rel="stylesheet" type="text/css" href="styles.css" rel="external nofollow" > --> <script language="javascript"> </script> </head> <body> <h1><mytag:hello /></h1> </body> </html>
Der Ausführungseffekt ist wie folgt :
Benutzerdefinierte Tag-Verbesserungen, verschieben Sie die Tag-Beschreibungsdatei in der tld-Datei in die web.xml-Datei. Erstellen Sie einfach eine Zuordnung für die TLD-Datei in der Datei web.xml.
Fügen Sie den folgenden Inhalt in web.xml hinzu:
<jsp-config> <taglib> <taglib-uri>myhello</taglib-uri> <taglib-location>/WEB-INF/hellotag.tld</taglib-location> </taglib> </jsp-config>
Das Einführungstag in index.jsp wird wie folgt geändert:
<%@taglib prefix="mytag" uri="myhello" %>
Bemerkungen:
Das Ausführungsprinzip benutzerdefinierter Tags
Wenn die JSP-Engine auf ein benutzerdefiniertes Tag stößt, wird es zunächst erstellt Ein Tag-Prozessor ist ein Instanzobjekt der Klasse und ruft dann seine Methoden nacheinander gemäß den in der JSP-Spezifikation definierten Kommunikationsregeln auf.
1. Nachdem die JSP-Engine den Tag-Prozessor instanziiert hat, ruft sie die setPageContext-Methode auf, um das pageContext-Objekt der JSP-Seite an den Tag-Prozessor zu übergeben Verwenden Sie dieses pageContext-Objekt, um mit JSP-Seiten zu kommunizieren.
2. Nachdem die setPageContext-Methode ausgeführt wurde, ruft der WEB-Container die setParent-Methode auf, um das übergeordnete Tag des aktuellen Tags an den aktuellen Tag-Prozessor zu übergeben Tag wird es an setParent übergeben. Der Parameterwert der Methode ist null.
3. public int doStartTag(): Wenn der WEB-Container nach dem Aufruf der setPageContext-Methode und der setParent-Methode das Start-Tag des benutzerdefinierten Tags ausführt, ruft er die doStartTag-Methode des Tag-Prozessors auf.
4. Nachdem der WEB-Container den Tag-Körper des benutzerdefinierten Tags ausgeführt hat, führt er das End-Tag des benutzerdefinierten Tags aus. Zu diesem Zeitpunkt ruft der WEB-Container die doEndTag-Methode auf Tag-Prozessor.
5. Nachdem der WEB-Container das benutzerdefinierte Tag ausgeführt hat, bleibt der Tag-Prozessor im Speicher und bedient andere Anforderungen. Der Web-Container ruft die Release-Methode nicht auf.
Das obige ist der detaillierte Inhalt vonEinführung einer detaillierten Erklärung der Verwendung von benutzerdefinierten JavaWeb-Tags. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!