Je suis complètement nouveau à l'écriture d'un Servlet Java) et j'ai du mal à obtenir un exemple simple HelloWorld
pour qu'il fonctionne correctement.
La classe HelloWorld.Java est:
package crunch;
import Java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("Hello World");
}
}
J'exécute Tomcat v7.0 et j'ai déjà lu des questions similaires, avec des réponses faisant référence à la modification du invoker
servlet-mapping
section dans web.xml
, cette section n’existe pas dans la mienne et, quand je l’ai ajoutée, le même problème se produisait.
essayez ceci (si le Java EE V6)
package crunch;
import Java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
@WebServlet(name="hello",urlPatterns={"/hello"})
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("Hello World");
}
}
maintenant atteindre le servlet par http://127.0.0.1:8080/yourapp/hello
où 8080 est le port Tomcat par défaut et votre application le nom de contexte de votre application
Vous devez absolument mapper votre servlet sur une URL. Si vous utilisez Java EE 6 (cela signifie au moins Servlet API 3.0)), vous pouvez annoter votre servlet de la manière suivante:
@WebServlet(name="helloServlet", urlPatterns={"/hello"})
public class HelloWorld extends HttpServlet {
//rest of the class
Ensuite, vous pouvez simplement aller à la localhost:8080/yourApp/hello
et la valeur devrait être affichée. Si vous ne pouvez pas utiliser l'API Servlet 3.0, vous devez enregistrer ce servlet dans web.xml
fichier comme
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>crunch.HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
Ecrire Java servlets est facile si vous utilisez Java EE 7
@WebServlet("/hello-world")
public class HelloWorld extends HttpServlet {
@Override
public void doGet(HttpServletRequest request,
HttpServletResponse response) {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Hello World");
out.flush();
}
}
Depuis servlet 3.0
La bonne nouvelle est que le descripteur de déploiement n'est plus nécessaire!
Lisez le tutoriel pour Java Servlets .
cela est peut-être dû à ce que vous avez créé votre fichier .jsp ou le fichier .html dans le dossier WEB-INF au lieu du dossier WebContent.
Solution: remplacez simplement les fichiers présents dans le dossier WEB-INF par le dossier Webcontent et essayez de les exécuter. Vous obtiendrez le résultat approprié.
Vous devez utiliser ../../NomProjet/NomFichier.jsp dans votre action attr. ou href
../ = contient le dossier actuel simple (demo.project.filename.jsp)
Servlet ne peut être appelé avec 1 barre oblique à l'avant du nom de votre projet.
Pour ceux qui sont coincés avec "La ressource demandée n'est pas disponible" dans Java EE 7 et le module Web dynamique 3.x, cela pourrait peut-être aider: l'assistant "Créer un servlet" dans Eclipse (testé dans Mars ) ne crée pas l'annotation @ Path pour la classe servlet, mais je devais l'inclure pour pouvoir accéder correctement aux méthodes publiques exposées.