Servlet3.0でのアノテーションの使い方

JSR315:Servlet3.0のPublic Reviewがでています。
Servlet3.0ではプラガブルWeb.xml
Annotational Servlet マッピングが導入されます。

そこでアノテーションでのServletの設定方法を調べてみました。

Servlet3.0で導入されるアノテーションは以下の4つの
アノテーションです。

import javax.servlet.annotation.WebServlet; //1.
import javax.servlet.annotation.ServletFilter; //2.
import javax.servlet.annotation.WebServletContextListener; //3.
import javax.servlet.annotation.InitParam; //4.

1.サーブレットに付加するアノテーションです。javax.servlet.http.HttpServletを継承する必要があります。

2.Filterクラスに付加するアノテーションです。javax.servlet.Filterを実装する必要があります。

3.Listenerクラスに付加するアノテーションです。
以下のリスナーをそれぞれ実装する必要があります。

javax.servlet.ServletContextListener;
javax.servlet.ServletContextAttributeListener;
javax.servlet.ServletRequestListener;
javax.servlet.ServletRequestAttributeListener;
javax.servlet.http.HttpSessionListener;
javax.servlet.http.HttpSessionAttributeListener;

4.初期化パラメータを登録するときに付加するアノテーションです。

以下が実装サンプルコードです。

import java.io.IOException;

import javax.servlet.DispatcherType;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.InitParam;
import javax.servlet.annotation.ServletFilter;
import javax.servlet.annotation.WebServlet;
import javax.servlet.annotation.WebServletContextListener;

/*
 * 作成日 (creation date)  :2009/01/26
 * パッケージ  (package name) :
 * ファイル名  (file name)    :Servlet3.java
 */

/**
 * <i>概要(abstract)</i>: Servlet3.0
 * .<p>
 * 
 *
 * @author  kensir0u
 * @version 1.0
 * @since   JDK 5.0
 *
 */
//javax.servlet.http.HttpServletをextendsしてアノテーション付加
//extendsしない場合はJAX-WSのエンドポイントになる。
@WebServlet(name="servlet3",    //servlet-name
			urlPatterns={"/servlet3"},    //servlet-mapping
			loadOnStartup=0, //load-on-startup
			icon="/servlet3icon.icon", //icon
			description="description", //description
			initParams={  //init-param
				@InitParam(name="name", value="value") //param-name param-value 
			})
public class Servlet3 extends javax.servlet.http.HttpServlet{}

//javax.servlet.Filterをimplementsしてアノテーション付加
@ServletFilter(filterName="servlet3filter",    //filter-name
			urlPatterns={"/servlet3"},    //servlet-mapping
			icon="/servlet3filtericon.icon", //icon
			description="description", //description
			dispatcherTypes={  //dispatcher
				DispatcherType.FORWARD,
				DispatcherType.REQUEST
			},
			initParams={  //init-param
				@InitParam(name="name", value="value") //param-name param-value 
			})
class Servlet3Filter implements javax.servlet.Filter {

	@Override
	public void destroy() {}

	@Override
	public void doFilter(ServletRequest servletrequest,
			ServletResponse servletresponse, FilterChain filterchain)
			throws IOException, ServletException {}

	@Override
	public void init(FilterConfig filterconfig) throws ServletException {}
	
}
@WebServletContextListener   //Listener系を実装してアノテーション付加
class Servlet3ContextListener implements javax.servlet.ServletContextListener {

	@Override
	public void contextDestroyed(ServletContextEvent servletcontextevent) {}

	@Override
	public void contextInitialized(ServletContextEvent servletcontextevent) {} 	
}