[Tomcat 9, gradle] Simplen WebService erstellen

T

Tersus

Gast
Grüße,

angeblich benötigt man seit der Einführung von Servlet 3.1 keinen WebDescriptor (web.xml) mehr.

Mein WebAppProjekt hat nur eine Hello-World-Klasse:

Code:
// ./src/main/java/org/HelloServlet
package org;

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

@WebServlet(name = "HelloServlet", urlPatterns = {"hello"}, loadOnStartup = 1) 
public class HelloServlet extends HttpServlet {
    
    /**
     * 
     */
    private static final long serialVersionUID = -9181111898454168471L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        response.getWriter().print("Hello, World!");
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        
        String name = request.getParameter("name");
        if (name == null) name = "World";
        request.setAttribute("user", name);
        request.getRequestDispatcher("response.jsp").forward(request, response); 
    }
}

Code:
/*
 * This build file was generated by the Gradle 'init' task.
 *
 * This generated file contains a sample Java Library project to get you started.
 * For more details take a look at the Java Libraries chapter in the Gradle
 * user guide available at https://docs.gradle.org/4.3/userguide/java_library_plugin.html
 */

// Apply the java-library plugin to add support for Java Library
//apply plugin: 'java-library'

plugins {
    id 'java'
    id 'war'
}

// In this section you declare where to find the dependencies of your project
repositories {
    // Use jcenter for resolving your dependencies.
    // You can declare any Maven/Ivy/file repository here.
    jcenter()
}

dependencies {

    providedCompile 'javax.servlet:javax.servlet-api:3.1.0'

    testCompile 'junit:junit:4.12'
}

Wenn gradle das zu einer *.war braut und ich es dem Tomcat gebe, deployed er die Anwendung zwar, aber sie ist nicht aufrufbar.

Die URL müsste doch localhost:8080/SimpleWebApp/hello sein, richtig? Da gibt es aber ein 404.
 
Das URL-Pattern muss mit einem "/" beginnen, also "/hello". Zumindest dann lässt sich bei mir das Servlet ohne Probleme aufrufen.
 
Zurück
Oben