2017-07-29 1 views
0

J'ai commencé à apprendre les Servlets Java parce que beaucoup de gens m'ont suggéré de commencer avec les Servlets avant de passer à Spring et à d'autres frameworks et technologies JavaEE. Tutorialspoint a de nombreux exemples, mais je ne peux pas les exécuter sur autre chose que Tomcat. J'utilise Netbeans IDE, Maven et Glassfish. Comment pourrais-je exécuter un exemple de base POST avec ces progiciels? Lien vers l'exemple:Comment exécuter l'exemple de poste de servlet de Tutorialpoint sur Glassfish?

Tutorialspoint post example can be found here.

+0

Vous ne nous avez pas dit comment vous essayez de déployer votre application sur Glassfish. Avez-vous des exceptions? – ujulu

+1

S'il vous plaît lire les tutoriels officiels du vendeur (ainsi, sur le site oracle.com) et les livres faisant autorité (ainsi, les vrais papiers que vous pouvez acheter sur amazon.com) au lieu d'un site de tutorat aléatoire hébergé en Inde plein de bannières publicitaires les amateurs avec l'accent principal sur l'abus SEO et gagner de l'argent plutôt que de vraiment aider les autres développeurs. – BalusC

+0

Merci pour vos suggestions. J'avais l'intention de répondre à cette question moi-même, en me basant sur mes propres recherches (y compris des documents et des tutoriels d'oracle.com). Il m'a fallu un peu de temps pour comprendre cela, et je pensais que d'autres débutants pourraient bénéficier de ma réponse. – Chase

Répondre

1

1. Mise en place pom.xml:

Dans l'EDI NetBeans créer un nouveau projet Maven. Changez l'empaquetage en guerre dans pom.xml.

<packaging>war</packaging> 

Ajoutez cette dépendance aux dépendances dans le fichier pom.xml. Cela ajoutera les classes de servlet nécessaires à classpath.

<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
     <scope>provided</scope> 
    </dependency> 

Configurer la version maven-war-plugin. Avec la version 3.0.0 ou supérieure, vous n'avez pas besoin de créer ServletRoot/WEB-INF/web.xml. Si vous ignorez cette étape, le projet ne sera pas compilé sans configurer web.xml. J'ai appelé "ServletRoot" ce chemin: MavenProject/src/main/webapp Une bonne explication sur la structure du répertoire paquet se trouve ici à 3.1: package structure

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>3.0.0</version> 
     </plugin> 
    </plugins> 
</build> 

2. Mettre index.html Créer index.html dans mavenproject/src/main/webapp et copiez ce code-code ici. Notez que la valeur de l'attribut d'action de la balise de formulaire doit correspondre à la valeur de l'annotation WebServlet de votre servlet. Dans ce cas, il sera ceci:

@WebServlet("/postexample") 

index.html:

<html> 
    <body> 
     <form action = "postexample" method = "POST"> 
      First Name: <input type = "text" name = "first_name"> 
      <br /> 
      Last Name: <input type = "text" name = "last_name" /> 
      <input type = "submit" value = "Submit" /> 
     </form> 
    </body> 
</html> 

3. Créez une nouvelle classe dans votre forfait. N'utilisez pas le package par défaut.

Je l'ai nommé POSTExample. Voici le code sans déclaration de package:

// Import required java libraries 
import java.io.*; 
import javax.servlet.*; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.*; 

// Extend HttpServlet class 
@WebServlet("/postexample") 
public class POSTExample extends HttpServlet { 

    // Method to handle GET method request. 
    @Override 
    public void doGet(HttpServletRequest request, HttpServletResponse   response) 
    throws ServletException, IOException { 

     // Set response content type 
     response.setContentType("text/html"); 

     PrintWriter out = response.getWriter(); 
     String title = "Using GET Method to Read Form Data"; 
     String docType = 
      "<!doctype html public \"-//w3c//dtd html 4.0 " + 
      "transitional//en\">\n"; 

     out.println(docType + 
      "<html>\n" + 
       "<head><title>" + title + "</title></head>\n" + 
       "<body bgcolor = \"#f0f0f0\">\n" + 
        "<h1 align = \"center\">" + title + "</h1>\n" + 
        "<ul>\n" + 
         " <li><b>First Name</b>: " 
         + request.getParameter("first_name") + "\n" + 
         " <li><b>Last Name</b>: " 
         + request.getParameter("last_name") + "\n" + 
        "</ul>\n" + 
       "</body>\n" + 
      "</html>" 
     ); 
    } 
    // Method to handle POST method request. 
    @Override 
    public void doPost(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 

     doGet(request, response); 
    } 
} 

4. build Maven projet Dans IDE Netbeans vous avez un bouton pour cela. Neteans peut également le déployer automatiquement sur glassfish, mais je n'ai pas essayé cela. Je vais donc vous montrer comment le déployer manuellement avec glassfish manager. Vous pouvez le construire en ligne de commande avec.

mvn clean package 

5. Déployer Ouvrir et commandline utiliser cette commande. Il démarrera le serveur glassfish, et se connectera beaucoup.

asadmin start-domain --verbose 

Ouvrez un navigateur et entrez cette adresse URI. Je suppose que vous utilisez les paramètres par défaut pour glassfish. Ports par défaut, etc ...

http://localhost:4848/

Sous la rubrique "Tâches courantes" vous pouvez trouver "Applications". Clique dessus. Puis cliquez sur Déployer. C'est au dessus des applications listées s'il y en a. Vous devez maintenant entrer l'emplacement de votre fichier de guerre créé. Ou vous pouvez faire glisser n 'drop. Son emplacement est mavenproject/target/yourwarfile.war

Avant de cliquer sur OK dans le gestionnaire glassfish, donnez un simple texte pour "racine de contexte" comme "myservlet". Tu dois te souvenir de ça. Si vous avez tout bien, vous pouvez exécuter l'exemple dans votre navigateur en utilisant ce lien: http://localhost:8080/myservlet

Dans ce cas, « myservlet » est la racine de contexte que vous définissez dans le gestionnaire GlassFish.