連載二、Servlet 3.0の6つのEase of Development
Servlet 3.0では、EoDとして「Annotation based configuration」を新しく定義しました。アノテーションを利用することでServletの開発が簡単になります。
Servlet 3.0で導入した「Annotation based configuration」を利用すると、「@WebServlet」というアノテーションを付加するだけでOKです。
?
@WebServlet(name="WebServletTest",urlPatterns={"/test"}) //web.xmlに記入必要なくになりました。public class WebServletTest extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().print("HELLO!"); }}
?
初期化パラメータを使用する場合でも、従来なら以下のようにweb.xmlのServletマッピングに設定を追加していました。
?
@WebServlet(name="WebServletTest",urlPatterns={"/test"}, initParams={@WebInitParam(name="name",value="HELLO!!")})public class WebServletTest extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().print(getInitParameter("name")); }}
?
Filterを使用する場合は「@WebFilter」を利用するだけでOKです。
?
@WebFilter(filterName="WebFilterTest", urlPatterns="/test")public class WebFilterTest implements Filter { @Override public void destroy() { //TODO } @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { // TODO chain.doFilter(req, res); // TODO } @Override public void init(FilterConfig config) throws ServletException { //TODO }}?
Listenerもweb.xmlにマッピングしなくても、@WebListenerを以下のServlet仕様で定義されたListenerのインターフェイスを実装したクラスにアノテーションするだけで利用できます。
?
@WebListener()public class TestServletContextListener implements ServletContextListener { @Override public void contextDestroyed(ServletContextEvent event) { // TODO } @Override public void contextInitialized(ServletContextEvent event) { // TODO }}?
?