Latest web development tutorials

العلامات المخصصة JSP

بطاقات مخصصة عناصر لغة JSP المعرفة من قبل المستخدم. عندما تحتوي صفحة JSP سيتم تحويل علامة مخصصة لبريمج، ويسمى تحويل تسمية الكائن عمليات معالج العلامة التي، عندما أعدم دعوة بريمج حاوية الويب تلك العمليات.

JSP العلامة التمديد يتيح لك إنشاء تسمية جديدة، ويمكن إدراجها مباشرة في صفحة JSP. JSP قدمت 2.0 مواصفات معالجات بطاقة بسيطة لكتابة هذه العلامات المخصصة.

يمكنك ترث الفئة SimpleTagSupport وتجاوز أسلوب doTag () لوضع بطاقات مخصصة بسيطة.


إنشاء "مرحبا" التسمية

المقبل، ونحن نريد أن إنشاء تسمية مخصص يسمى <السابق: مرحبا>، بطاقة شكل:

<ex:Hello />

لخلق العرف JSP العلامات، يجب عليك أولا إنشاء صفقة التسمية مع فئات Java. لذا، دعونا إنشاء فئة HelloTag، على النحو التالي:

package com.w3big;

import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.io.*;

public class HelloTag extends SimpleTagSupport {

  public void doTag() throws JspException, IOException {
    JspWriter out = getJspContext().getOut();
    out.println("Hello Custom Tag!");
  }
}

التعليمة البرمجية التالية يتجاوز الأسلوب doTag ()، استخدام أسلوب طريقة getJspContext () للحصول على وجوه JspContext الحالي، و "بطاقة مرحبا مخصص!" يتم تمريرها إلى كائن JspWriter.

تجميع الطبقات المذكورة أعلاه، ونسخه إلى البيئة دليل CLASSPATH متغير. وأخيرا، إنشاء مكتبة العلامة التالية: <القط دليل التثبيت> webapps \ ROOT \ WEB-INF \ custom.tld.

<taglib>
  <tlib-version>1.0</tlib-version>
  <jsp-version>2.0</jsp-version>
  <short-name>Example TLD</short-name>
  <tag>
    <name>Hello</name>
    <tag-class>com.w3big.HelloTag</tag-class>
    <body-content>empty</body-content>
  </tag>
</taglib>

وبعد ذلك، يمكننا استخدام العلامة مرحبا في ملف JSP:

<%@ taglib prefix="ex" uri="WEB-INF/custom.tld"%>
<html>
  <head>
    <title>A sample custom tag</title>
  </head>
  <body>
    <ex:Hello/>
  </body>
</html>

إخراج البرنامج المذكور أعلاه هو:

Hello Custom Tag!

هيئة التبويب الوصول

يمكنك أن تكون مثل يحتوي على نفس القياسية مكتبة العلامة محتوى الرسالة في التسمية. كما نريد لتشمل المحتوى في مرحبا، نحن العرف الشكل هو على النحو التالي:

<ex:Hello>
   This is message body
</ex:Hello>

يمكننا تعديل ملف فئة العلامة معالج، على النحو التالي:

package com.w3big;

import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.io.*;

public class HelloTag extends SimpleTagSupport {

   StringWriter sw = new StringWriter();
   public void doTag()
      throws JspException, IOException
    {
       getJspBody().invoke(sw);
       getJspContext().getOut().println(sw.toString());
    }

}

ثم نأتي إلى تعديل الملف TLD على النحو التالي:

<taglib>
  <tlib-version>1.0</tlib-version>
  <jsp-version>2.0</jsp-version>
  <short-name>Example TLD with Body</short-name>
  <tag>
    <name>Hello</name>
    <tag-class>com.w3big.HelloTag</tag-class>
    <body-content>scriptless</body-content>
  </tag>
</taglib>

الآن يمكننا استخدام التسمية تعديل في التخطيط الاستراتيجي المشترك، على النحو التالي:

<%@ taglib prefix="ex" uri="WEB-INF/custom.tld"%>
<html>
  <head>
    <title>A sample custom tag</title>
  </head>
  <body>
    <ex:Hello>
        This is message body
    </ex:Hello>
  </body>
</html>

إخراج البرنامج المذكور أعلاه على النحو التالي:

This is message body

سمات العلامة المخصصة

يمكنك تعيين معايير مخصصة في خصائص مختلفة، والحصول على الممتلكات، وقيمة مخصص العلامة الطبقة يجب تنفيذ طريقة واضعة، وأساليب التخطيط الاستراتيجي المشترك JavaBean اضع هي كما يلي:

package com.w3big;

import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.io.*;

public class HelloTag extends SimpleTagSupport {

   private String message;

   public void setMessage(String msg) {
      this.message = msg;
   }

   StringWriter sw = new StringWriter();

   public void doTag()
      throws JspException, IOException
    {
       if (message != null) {
          /* 从属性中使用消息 */
          JspWriter out = getJspContext().getOut();
          out.println( message );
       }
       else {
          /* 从内容体中使用消息 */
          getJspBody().invoke(sw);
          getJspContext().getOut().println(sw.toString());
       }
   }

}

اسم الخاصية هو "رسالة"، وذلك واضع هي setMessage (). الآن دعونا استخدام ملف TLD <السمة> عنصر لإضافة هذه الخاصية:

<taglib>
  <tlib-version>1.0</tlib-version>
  <jsp-version>2.0</jsp-version>
  <short-name>Example TLD with Body</short-name>
  <tag>
    <name>Hello</name>
    <tag-class>com.w3big.HelloTag</tag-class>
    <body-content>scriptless</body-content>
    <attribute>
       <name>message</name>
    </attribute>
  </tag>
</taglib>

الآن يمكننا استخدام خصائص الرسالة في ملف JSP، كما هو مبين أدناه:

<%@ taglib prefix="ex" uri="WEB-INF/custom.tld"%>
<html>
  <head>
    <title>A sample custom tag</title>
  </head>
  <body>
    <ex:Hello message="This is custom tag" />
  </body>
</html>

أمثلة من البيانات المذكورة أعلاه الإخراج هو:

This is custom tag

يمكنك أيضا أن تشمل الخصائص التالية:

ممتلكات وصف
اسم تحديد اسم الخاصية. كل علامة هي يجب أن يكون اسم السمة الفريدة.
مطلوب يحدد ما إذا كان يلزم السمة أو اختياري، إذا تم تعيين إلى كاذبة اختياري.
rtexprvalue عند تشغيل التعبير البيان، سمات العلامة صالحة.
نوع تحديد نوع فئة جافا للممتلكات. يتم تحديد الافتراضي كما هوسلسلة
وصف وصف
شظية إذا قمت بتعريف الممتلكات، وسيتم التعامل مع قيمة العقار باعتبارهJspFragment.

هذه هي الصفات المرتبطة المثيل المحدد:

.....
    <attribute>
      <name>attribute_name</name>
      <required>false</required>
      <type>java.util.Date</type>
      <fragment>false</fragment>
    </attribute>
.....

إذا كنت تستخدم عقارين أو تعديل ملف TLD على النحو التالي:

.....
    <attribute>
      <name>attribute_name1</name>
      <required>false</required>
      <type>java.util.Boolean</type>
      <fragment>false</fragment>
    </attribute>
    <attribute>
      <name>attribute_name2</name>
      <required>true</required>
      <type>java.util.Date</type>
    </attribute>
.....