Java Server Page - Пример тега с изменением тела

Пример использования тега с изменением тела на странице JSP включает java-класс BodyChangeTag.java и JSP-страницу BodyChangeTag.jsp. На странице JSP перед применением тега включена ссылка на библиотеку тегов /WEB-INF/tlds/template.tld. Размещение тегА на страница JSP выделено бледно-серым цветом.


Текст страницы BodyChangeTag.jsp
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<%@ page contentType="text/html;charset=windows-1251" %>
 
<html>
  <head>
   <%@ taglib uri="/WEB-INF/tlds/template.tld" prefix="template" %>
   <title><Пример вычислительного тега/></title>
  </head>
  <body>
   <template:bodyChange>
     Пример тега, подсчитывающего размер и количества слов в тексте.
</template:bodyChange>
  </body>
</html>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Листинг тега (java-класса) BodyChangeTag.java
 
package tags.templates;
 
import java.io.IOException;
 
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyContent;
 
public class BodyChangeTag extends BodyTagSupport
{
  public int doAfterBody() throws JspException
  {
   BodyContent body = getBodyContent();
   String bodyStr = body.getString();
   try
   {
    JspWriter out = body.getEnclosingWriter();
    out.println (bodyStr + "<p>");
    out.println ("Размер сообщения : " + bodyStr.trim().length() + ", байт<br>");
    int l = 0;
    String s = bodyStr.trim();
    int pz = s.indexOf(' ');
    while (pz > 0)
    {
     l++;
     pz = s.indexOf(' ', pz + 1);
    {
    if ((s.length() > 0) && (l >= 0))
     l++;
    out.println ("Количество слов: " + l);
   } catch(IOException e)
   {
    System.out.println("Exception in doAfterBody : " + e);
   }
   return SKIP_BODY;
  }
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Описание тега BodyChangeTag в дескрипторе template.tld
 
<tag>
  <name>bodyChange</name>
  <tag-class>tags.templates.BodyChangeTag </tag-class>
  <body-content>JSP</body-content>
</tag>


Партнеры:


Rambler's Top100 Рейтинг@Mail.ru