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