読者です 読者をやめる 読者になる 読者になる

Servlet 3.0 の超シンプルなサンプル (pom も)

ちょっとした Java のライブラリ使うサーバ書かなきゃいけなかったのですが、
折角なので、Servlet 3.0 で書いてみたら鼻血が出るほど簡単で、今まで web.xml とか書いてたのはなんだったんだ状態になったので、
超シンプルなサンプル書いてみました。

package org.yoshiori;

import java.io.IOException;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/test")
public class ServletTest extends HttpServlet{

    private static final long serialVersionUID = 1L;

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.getWriter().print(new Date() + ": hoge");
    }

}

ほんと、これだけ。
web.xml とかその外の設定いっさいいらない。

ついでに pom も書いておくと

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.yoshiori</groupId>
  <artifactId>servlet_test</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>servlet_test</name>
  <url>http://maven.apache.org</url>

  <dependencies>
    <!-- SERVLET 3.0 -->
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-web-api</artifactId>
      <version>6.0</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <finalName>servlet-test</finalName>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.1.1</version>
        <configuration>
          <failOnMissingWebXml>false</failOnMissingWebXml> <!-- web.xml が無くても mvn package 出来るように -->
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <configuration>
          <scanIntervalSeconds>10</scanIntervalSeconds>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

こんな感じ
pom には jetty の設定も入れておいたので、

$ mvn jetty:run  

して http://localhost:8080/test にアクセスすれば上記のページが見れまする。

tomcat7 にデプロイしたい時は

$ mvn package

すれば target の下に servlet-test.war が生成されるのでそれを放り込めばok