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