Servlet http not found 404

di il
9 risposte

Servlet http not found 404

Salve a tutti
premetto di essere un novizio e sto solo facendo delle prove, sono giorni che sfoglio paginate sul error 404 che ricevo ma non trovo soluzioni.
Sto usando Apache Netbeans 12.3 con jdk 14.2
la servlet è mappata correttamente ma richiamandola da altra jsp o html da sempre il 404. Ho provato a scrivere la url nel tag chiamante in tutte le salse ma non ne esco.
grazie in anticipo!

9 Risposte

  • Re: Servlet http not found 404

    FaustoB ha scritto:


    Sto usando Apache Netbeans 12.3 con jdk 14.2
    la servlet è mappata correttamente ma richiamandola da altra jsp o html da sempre il 404.
    Per verificare se la servlet risponde correttamente mettendo l'url diretto nel browser devi sapere: l'host/porta (es. http://localhost:808 ), devi sapere il nome del contesto cioè il nome della applicazione che dipende da come è stato fatto il deploy e il path specifico che è quello che si può "mappare" nel <url-pattern> del web.xml o in alternativa con @WebServlet.

    Se nel web.xml c'è es. <url-pattern>/prova/servlet</url-pattern> e il nome contesto è myapp e l'host è localhost su porta 8080, allora la servlet risponde a: http://localhost:8080/myapp/prova/servle

    Se non dici o mostri qualcosa di più non si può dire molto altro purtroppo ...
  • Re: Servlet http not found 404

    Grazie andbin
    se metto l'url diretto nel browser pur rispettando le regole che hai citato anche tu ricevo quest'altro errore
    Error500.png
    Error500.png

  • Re: Servlet http not found 404

    Invece di postare un'immagine illeggibile con 2 km di bianco alla fine, non facevi prima a copiare e incollare il contenuto del file di log degli errori di Tomcat?

    Ad ogni modo, c'è un errore nel costruttore della tua servlet CONTROLLERS.myservlet (scritto esattamente al contrario di quanto stabiliscono le convenzioni Java: tutto in minuscolo i nomi dei package, Masiuscola sulla prima lettera del nome della classe, e successive in CamelCase). Nel file di log probabilmente c'è dell'altro più utile.
  • Re: Servlet http not found 404

    FaustoB ha scritto:


    se metto l'url diretto nel browser pur rispettando le regole che hai citato anche tu ricevo quest'altro errore
    C'è chiaramente un problema nella istanziazione della classe. Guarda i log perché descrivono probabilmente meglio il problema.

    E attenzione ad una cosa: stai usando il Jakarta EE (si vede dal package jakarta.servlet.ServletException). Jakarta EE è molto nuovo e introduce una grossa "rottura" rispetto al passato, cambiando il package da javax a jakarta (per questioni di trademark).
    Quindi sia il server, sia le API che referenzi nel codice devono usare il Jakarta EE. Se per dire, la tua servlet facesse riferimento al "vecchio" javax.servlet.Servlet, non ti funzionerà un bel nulla ...
  • Re: Servlet http not found 404

    Scusami avevo detto di essere novizio... comunque tornando al problema: in fase di creazione della servlet aggiunge automaticamente i vari import a javax.servlet*... contrassegnandoli però con l'errore perchè non trova la rispettiva libreria... al chè ne ho scaricata e aggiunta una manualmente (javax.servlet 3.0) e gli import diciamo che gli ha agganciati regolarmente. Però il problema url della servlet non si risolve (anche nominando il pakage in minuscolo). In tutti i tutorial in rete la fanno molto semplice (non ne ho ancora visto uno con NetBeans 12.3 però...) ci sto impazzendo!!!
  • Re: Servlet http not found 404

    Il discorso del nome del package e della classe riguarda solo una CONVENZIONE di nomenclatura, non è un errore.
    L'errore, come diceva andbin, è il fatto di usare la Servlet API standard (javax.servlet), che NON PUOI usare se il Servlet Container è Jakarta EE... e tu stai proprio usando Jakarta EE.

    Se vuoi usare Jakarta EE, allora devi obbligatoriamente utilizzare la sua API (quella nuova) e non puoi usare la vecchia Servlet API standard (quella che hai tirato dentro per far funzionare gli import).

    L'alternativa è di non usare Jakarta EE, ma di scaricare, installare e usare il caro buon vecchio Tomcat 9.
  • Re: Servlet http not found 404

    FaustoB ha scritto:


    aggiunge automaticamente i vari import a javax.servlet*... contrassegnandoli però con l'errore perchè non trova la rispettiva libreria... al chè ne ho scaricata e aggiunta una manualmente (javax.servlet 3.0) e gli import diciamo che gli ha agganciati regolarmente.
    Sì ma se usi le Servlet 3.x (che usano javax ed esistono da ben prima di JakartaEE), poi NON puoi fare il deploy su un server che è fatto specificatamente per JakartaEE.
    Chiarisci quindi quale servlet-container stai usando. Hai sicuramente un Tomcat (si capisce dallo stacktrace). Forse il 10.x? Quello è per JakartaEE, non per JavaEE.

    E se l'obiettivo è solo fare delle "esercitazioni" con le servlet, allora molto probabilmente JakartaEE non ti serve.

    P.S. se ti bastano le Servlet 3.x allora puoi prendere un Tomcat 7.x, 8.x o 9.x. Non il 10 appunto.
  • Re: Servlet http not found 404

    Perfetto grazie per le preziosissime risposte!
  • Re: Servlet http not found 404

    RISOLTO TUTTOOOOO!!!!
    Con NetBeans 12.3 JDK8 e Tomcat 9
    Grazie ancora
Devi accedere o registrarti per scrivere nel forum
9 risposte