Pierwszy servlet w Java Hello World

0

Od jakiegoś czasu uczę się Java. Postanowiłem zacząć ćwiczyć proste aplikacje webowe. Mam zinstalowany Tomcat 9.0.14, W Inteliji utworzyłem nowy projekt->Java Enterprise->Web application. Kod poniżej. Wydaje się że serwer Tomcat startuje poprawnie, tylko po wpisaniu adresu http://localhost:8080/HelloWorldServlet/HelloWorld mam bład

HTTP Status 404 – Not Found
Type Status Report
Message /HelloWorldServlet/HelloWorld
Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
Apache Tomcat/9.0.14

Przejrzełam kilknaście poradników i turtoriali ale we wszyskich jest to samo. Gdzie popełniam błąd. Czy pliki muszę wgrać do katalogu z Tomcat? Tak robiłem i nic nie pomogło.

web.xml



<?xml version="1.0" encoding="UTF-8"?>
<web-app
        xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        version="2.5">

    <servlet>
        <servlet-name>HelloWorldServlet</servlet-name>
        <servlet-class>HelloWorldServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloWorldServlet</servlet-name>
        <url-pattern>/HelloWorld</url-pattern>
    </servlet-mapping>
</web-app>

HelloWorldServlet.java

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

import java.io.IOException;
import java.io.PrintWriter;

public class HelloWorldServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request,
                         HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html");

        PrintWriter out = response.getWriter();

        out.println("<html><head><title>My Servlet</title></head><body>");
        out.println("Hello World!");
        out.println("<body></html>");

        out.close();
    }
}
1

Ale zdajesz sobie sprawę że to czego się uczysz to jest technologia z czasów kamiennych tabic i nikt dzisiaj w tej sposób nie programuje ?

0

Nie nie zdaję sobie sprawy. Chcę po prostu zacząć a nie moge odpalić najprostszej aplikacji!

1

To w ogóle nie jest prosta aplikacja, serwlety, tomcat..

Proste aplikacje webowe to masz tak:
http://sparkjava.com/documentation

2

a mi się wydaje, że JEDEN, słownie JEDEN servlet trzeba w życiu zrobić, aby zrozumieć co mogą, co nie mogą frameworki webowe, jakie mają zalety i mankamenty. Co to jest abstrakcja Requets i Response.
Nawet żeby zrozumieć wyższość / niższość JEE i serwować technologiami non-servlet np o niskim zużyciu wątków (tj zrozumieć co przejada wątki)

Gdybym był gorliwym krytykiem JEE, to przywołał bym ludzką mądrość, że choć raz się tzreba sparzyć i choć raz trzeba się młotkiem stuknąć. Aby wiedzieć co się krytykuje.

Albo np w moim widzeniu problemu monokultura Spring Boota jest szkodliwa, bo developer nie ma nawet wyobrażenia co jest pod maską. Na dziś Boot to jest takie webowe voodoo "kazali użyć, używam, ale nie rozumiem"

Dopóki serwery servletowe istnieją choćby w starszych projektach.

0

Spróbuj http://localhost:8080/HelloWorld

Ja tam ostatnio widziałem servlet w "nowym" kodzie, ale nie ukrywam, że byłem lekko zażenowany.

0
AnyKtokolwiek napisał(a):

a mi się wydaje, że JEDEN, słownie JEDEN servlet trzeba w życiu zrobić, aby zrozumieć co mogą, co nie mogą frameworki webowe, jakie mają zalety i mankamenty. Co to jest abstrakcja Requets i Response.

Do tego servlety nie sa wcale potrzebne. Podany przeze mnie sparkjava pokazuje to o wiele przyjaźniej, bez całego syfu servletów.
Servlety sa potrzebne tylko i wylacznie do nauczenia się servletów. Faktycznie, w wielu firmach, nawet w aplikacjjach springowych można takie spotkać i czasem nawet ma to jeszcze jakiś sens!
(najczęściej spotykam servlety w jakiś dziwnych operacjach uploadu/ downloadu ).

0

@jarekr000000: akurat Spark to nie framework. Ja nie znam żadnego frameworka Javovego który nie opierałby się o servlety, no poza SpringWebfluxem ale to nawet nie jest do końca framework :P

0

@mprofitw: szukaj pod hasłem Spring boot.

1 użytkowników online, w tym zalogowanych: 0, gości: 1