2013-05-20 4 views
1

J'ai récemment effectué une mise à niveau vers Netbeans 7.3, et je n'ai pas beaucoup de configuration et d'interface de projet. Par exemple, une fois que j'ai vu les paquets sources avec les classes java, je ne peux plus les voir uniquement dans le panneau Fichier. J'ai un paquet appelé batchUtility contenant une servlet HTTP appelée batchQueryServlet.Configuration d'une servlet HTTP Java dans Netbeans 7.3

Je dois publier un JSON à batchQueryServlet via la fonction jQuery.ajax() et je ne suis pas en mesure de mapper le servlet.

Depuis Netbeans 7.3 ne livre pas un fichier de configuration, j'ai créé un moi-même en cliquant sur le dossier web-inf> Nouveau> Fichier web.xml et écrit comme suit:

<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_3_0.xsd" 
    version="3.0"> 
<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 
    <servlet> 
    <servlet-name>batchQueryServlet</servlet-name> 
    <servlet-class>/batchUtility.batchQueryServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>batchQueryServlet</servlet-name> 
    <url-pattern>/batchQueryServlet</url-pattern> 
    </servlet-mapping> 
</web-app> 

mais toujours , lors de l'émission de la demande, je reçois une erreur 404:

$.ajax({ 
          url: "/batchQueryServlet", 
          contentType: 'application/json', 
          data: json, 
          Accept: "text/html", 
          success: function(data, textStatus, jqXHR) { 
           alert(data); 
          }, 
          type: "POST" 
         }); 

maintenant, je suis sûr qu'il ne trouve pas la classe parce que si j'appelle le nom de servlet je reçois une exception ClassNotFound. Comment pourrais-je résoudre ce problème? (Une solution rapide et sale utiliserait une JSP mais je préférerais ne pas le faire).

PS: j'utilise la version 7.0.34 de Tomcat. Le problème était que je devrais utiliser un chemin src/java approprié pour stocker mes classes .java au lieu d'un dossier normal (c'est la raison pour laquelle je n'ai pas pu voir les paquets). Maintenant je l'ai réparé. Merci quand même pour votre temps!

Répondre

1

Vous avez un barre oblique dans

<servlet-class>/batchUtility.batchQueryServlet</servlet-class> 

Retirez et les choses devraient fonctionner.

Changer votre Ajax url: soit "batchQueryServlet" ou "/web-app-name/batchQueryServlet"

EDIT:

Une fois déployé la structure de dossiers de votre application Web devrait être comme: (/ indique un répertoire)

tomcat-home/ 
|- webapps/ 
    |- BatchWebApp/ //<-- Context-Root (Web-app's name) 
    |- *.html, *.jsp etc. 
    |- WEB-INF/ 
     |- web.xml 
     |- lib/ 
      |- *.jar files 
     |- classes/ //<-- ALL your servlets go here 
      |- batchUtility/ //<-- with the required package/folder structure 
      |- batchQueryServlet.class 

Si vous utilisez un IDE (comme Eclipse), il fait la même chose pour vous.

+0

Oh, vous avez raison. Pourtant, ça ne marche pas. Cependant, je pense avoir compris quel est le problème ici, je dois définir un contexte. Lorsque je poste, je poste à 'http: // localhost: 8084/batchQueryServlet', mais je veux qu'il soit' http: // localhost: 8084/projectName/batchQueryServlet'. J'ai un fichier context.xml, ' ' et pensait que ça pouvait marcher il semble que ce ne sera pas le cas. J'ai essayé d'ajouter un chemin de contexte mais il continue de publier sur http: // localhost: 8084/batchQueryServlet:/ –

+0

Vous avez raison sur la partie contextuelle. Vérifiez la mise à jour. –

+0

Merci, maintenant ça marche. Le problème est, je continue à courir dans l'exception ClassNotFound, car il ne trouve pas le batchQueryServlet. J'ai le dossier batchUtility dans le dossier/app_name /, mais j'ai réalisé que les classes ne peuvent pas résoudre les classes dans le même dossier, je suppose que j'ai quelques problèmes avec la compilation. –

Questions connexes