浏览struts2的源码 发现在components里面也广泛运用了annotations

package org.apache.struts2.components;

import com.opensymphony.xwork2.util.ValueStack;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.views.annotations.StrutsTag;

@StrutsTag(name="actionmessage", tldBodyContent="empty", tldTagClass="org.apache.struts2.views.jsp.ui.ActionMessageTag", description="Render action messages if they exists")
public class ActionMessage extends UIBean
{
  private static final String TEMPLATE = "actionmessage";

  public ActionMessage(ValueStack stack, HttpServletRequest request, HttpServletResponse response)
  {
    super(stack, request, response);
  }

  protected String getDefaultTemplate() {
    return "actionmessage";
  }
}
 
package org.apache.struts2.views.annotations;

import java.lang.annotation.Annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({java.lang.annotation.ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface StrutsTag
{
  public abstract String name();

  public abstract String tldBodyContent();

  public abstract String tldTagClass();

  public abstract String description();
}
 

你可能感兴趣的:(java,apache,jsp,UI,servlet)