<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FJSP%2FCustomized_Tag</id>
		<title>Java/JSP/Customized Tag - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FJSP%2FCustomized_Tag"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/JSP/Customized_Tag&amp;action=history"/>
		<updated>2026-04-23T08:10:08Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/JSP/Customized_Tag&amp;diff=8665&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/JSP/Customized_Tag&amp;diff=8665&amp;oldid=prev"/>
				<updated>2010-06-01T07:10:24Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 07:10, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/JSP/Customized_Tag&amp;diff=8664&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/JSP/Customized_Tag&amp;diff=8664&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:47Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Logger for tag ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE taglib&lt;br /&gt;
        PUBLIC &amp;quot;-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN&amp;quot;&lt;br /&gt;
  &amp;quot;http://java.sun.ru/dtd/web-jsptaglibrary_1_2.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;taglib&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;tlib-version&amp;gt;1.0&amp;lt;/tlib-version&amp;gt;&lt;br /&gt;
  &amp;lt;jsp-version&amp;gt;1.2&amp;lt;/jsp-version&amp;gt;&lt;br /&gt;
  &amp;lt;short-name&amp;gt;cbck&amp;lt;/short-name&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;Cookbook custom tags&amp;lt;/description&amp;gt;&lt;br /&gt;
  &amp;lt;uri&amp;gt;com.jexp.tags&amp;lt;/uri&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;tag&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;log&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;tag-class&amp;gt;com.jexp.LoggerTag&amp;lt;/tag-class&amp;gt;&lt;br /&gt;
    &amp;lt;body-content&amp;gt;JSP&amp;lt;/body-content&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;This tag uses log4j to log a message.&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;attribute&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;configFile&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;required&amp;gt;false&amp;lt;/required&amp;gt;&lt;br /&gt;
    &amp;lt;rtexprvalue&amp;gt;false&amp;lt;/rtexprvalue&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;This attribute provides any configuration file name for the logger. The file must be located in WEB-INF/classes&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;attribute&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;level&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;required&amp;gt;true&amp;lt;/required&amp;gt;&lt;br /&gt;
     &amp;lt;rtexprvalue&amp;gt;false&amp;lt;/rtexprvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;This attribute provides the level for the log request.&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;/attribute&amp;gt;&lt;br /&gt;
    &amp;lt;/tag&amp;gt;&lt;br /&gt;
&amp;lt;/taglib&amp;gt;&lt;br /&gt;
*/&lt;br /&gt;
//Log4j from Apache is required&lt;br /&gt;
package com.jexp;&lt;br /&gt;
import org.apache.log4j.Logger;&lt;br /&gt;
import org.apache.log4j.PropertyConfigurator;&lt;br /&gt;
import java.lang.reflect.Method;&lt;br /&gt;
import javax.servlet.jsp.*;&lt;br /&gt;
import javax.servlet.jsp.tagext.*;&lt;br /&gt;
public class LoggerTag extends BodyTagSupport {&lt;br /&gt;
  private Logger log = null;&lt;br /&gt;
  private String configFile = null;&lt;br /&gt;
  private String level = null;&lt;br /&gt;
  private final static String[] LEVELS = { &amp;quot;debug&amp;quot;, &amp;quot;info&amp;quot;, &amp;quot;warn&amp;quot;, &amp;quot;error&amp;quot;,&lt;br /&gt;
      &amp;quot;fatal&amp;quot; };&lt;br /&gt;
  public void setConfigFile(String fileName) {&lt;br /&gt;
    this.configFile = fileName;&lt;br /&gt;
  }&lt;br /&gt;
  public void setLevel(String level) {&lt;br /&gt;
    this.level = level;&lt;br /&gt;
  }&lt;br /&gt;
  public int doEndTag() throws JspException {&lt;br /&gt;
    if (configFile != null)&lt;br /&gt;
      PropertyConfigurator.configure(pageContext.getServletContext()&lt;br /&gt;
          .getRealPath(&amp;quot;/&amp;quot;)&lt;br /&gt;
          + &amp;quot;WEB-INF/classes/&amp;quot; + configFile);&lt;br /&gt;
    level = level.toLowerCase();&lt;br /&gt;
    if (!contains(level))&lt;br /&gt;
      throw new JspException(&lt;br /&gt;
          &amp;quot;The value given for the level attribute is invalid.&amp;quot;);&lt;br /&gt;
    log = Logger.getLogger(LoggerTag.class);&lt;br /&gt;
    String message = getBodyContent().getString().trim();&lt;br /&gt;
    Method method = null;&lt;br /&gt;
    try {&lt;br /&gt;
      method = log.getClass().getMethod(level,&lt;br /&gt;
          new Class[] { Object.class });&lt;br /&gt;
      method.invoke(log, new String[] { message });&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
    }&lt;br /&gt;
    return EVAL_PAGE;&lt;br /&gt;
  }&lt;br /&gt;
  public void release() {&lt;br /&gt;
    log = null;&lt;br /&gt;
    configFile = null;&lt;br /&gt;
    level = null;&lt;br /&gt;
  }&lt;br /&gt;
  private boolean contains(String str) {&lt;br /&gt;
    for (int i = 0; i &amp;lt; LEVELS.length; i++) {&lt;br /&gt;
      if (LEVELS[i].equals(str))&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    return false;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>