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) {} }