Jakarta Servlet 5.0
Maven プロジェクトの作成
$ mkdir demo-jakarta-servlet-5 $ cd demo-jakarta-servlet-5/ $ mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes \ > -DarchetypeArtifactId=maven-archetype-webapp [INFO] Scanning for projects... [INFO] [INFO] ------------------< org.apache.maven:standalone-pom >------------------- [INFO] Building Maven Stub Project (No POM) 1 [INFO] --------------------------------[ pom ]--------------------------------- [INFO] [INFO] >>> maven-archetype-plugin:3.2.0:generate (default-cli) > generate-sources @ standalone-pom >>> [INFO] [INFO] <<< maven-archetype-plugin:3.2.0:generate (default-cli) < generate-sources @ standalone-pom <<< [INFO] [INFO] [INFO] --- maven-archetype-plugin:3.2.0:generate (default-cli) @ standalone-pom --- [INFO] Generating project in Interactive mode [INFO] Archetype [org.apache.maven.archetypes:maven-archetype-webapp:1.4] found in catalog remote Define value for property 'groupId': org.example Define value for property 'artifactId': servlet Define value for property 'version' 1.0-SNAPSHOT: : Define value for property 'package' org.example: : Confirm properties configuration: groupId: org.example artifactId: servlet version: 1.0-SNAPSHOT package: org.example Y: : Y [INFO] ---------------------------------------------------------------------------- [INFO] Using following parameters for creating project from Archetype: maven-archetype-webapp:1.4 [INFO] ---------------------------------------------------------------------------- [INFO] Parameter: groupId, Value: org.example [INFO] Parameter: artifactId, Value: servlet [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] Parameter: package, Value: org.example [INFO] Parameter: packageInPathFormat, Value: org/example [INFO] Parameter: package, Value: org.example [INFO] Parameter: groupId, Value: org.example [INFO] Parameter: artifactId, Value: servlet [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] Project created from Archetype in dir: /home/bookstore/IdeaProjects/demo-jakarta-servlet-5/servlet [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 19.312 s [INFO] Finished at: 2021-09-23T15:49:15+09:00 [INFO] ------------------------------------------------------------------------
- プロジェクトの構成はこう
$ cd servlet/ $ tree . . ├── pom.xml └── src └── main └── webapp ├── WEB-INF │ └── web.xml └── index.jsp 4 directories, 3 files
- pomは編集しました
<?xml version="1.0" encoding="UTF-8"?> <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.example</groupId> <artifactId>servlet</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>servlet Maven Webapp</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>5.0.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.2.2</version> </plugin> </plugins> </build> </project>
- HttpServletクラスを継承したクラスを作ります
package org.example; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; public class DemoServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { var writer = resp.getWriter(); writer.write("Hello from Jakarta Servlet 5"); } }
- web.xmlの作成
- 中身良くわからず、とりあえずなんとなくで書いてみる
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>demo-servlet</servlet-name> <servlet-class>org.example.DemoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>demo-servlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
- warの作成
$ mvn clean package
- Jettyにデプロイします
$ cp target/servlet-1.0-SNAPSHOT.war $JETTY_BASE/webapps/demo-servlet.war $ java -jar $JETTY_HOME/start.jar
- 動作確認
$ curl http://localhost:8080/demo-servlet/ Hello from Jakarta Servlet 5