Как сделать простейший сервлет HelloWorld с maven без web.xml - PullRequest
1 голос
/ 08 марта 2019

Как зеленая рука, я создал сервлет HelloWorld:

package com.rx.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/helloworld")
public class HelloWorld extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
    PrintWriter writer = response.getWriter();
    writer.write("<html><body>Hello World</body</html>");
  }
}

Тогда в моем файле pom.xml есть следующая конфигурация:

<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>rx.helloworld</groupId>
<artifactId>simpleservlet</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>simpleservlet Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<war.name>simpleservlet</war.name>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<servlet.version>4.0.1</servlet.version>
</properties>
<dependencies>
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>${servlet.version}</version>
  <scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>${war.name}</finalName><!-- name of the bundled project when it is finally built -->
<plugins>
    <plugin>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-maven-plugin</artifactId>
      <version>9.3.9.v20160517</version>
      <configuration>
        <httpConnector>
          <!--host>localhost</host-->
        </httpConnector>
      </configuration>
    </plugin>
</plugins>
</build>
</project>

Я читаю из документа спецификации сервлетагде сказано, что

Веб-приложение НЕ ДОЛЖНО содержать web.xml, если оно НЕ содержит никаких компонентов Servlet, Filter или Listener или использует аннотации для объявления того же самого.Другими словами, приложение, содержащее только статические файлы или страницы JSP, не требует наличия файла web.xml.

Я действительно использовал @WebServlet, поэтому не включил web.xml.

Полная база кода здесь

Вопрос: Но когда я пытаюсь запустить его с jetty с командой mvn jetty:run, я не могу найти свой сервлет вообще.Как решить эту проблему?

1 Ответ

0 голосов
/ 08 марта 2019

В конце концов выяснил сам, скажем, он пропустил конфигурацию в плагине maven-war:

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
            <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
</plugin>

failOnMissingWebXml должен быть настроен false, что не является значением по умолчанию

...