2013-05-20 1 views
1

Недавно я обновился до Netbeans 7.3, и я не совсем понимаю его конфигурацию и интерфейс. Например, как только я использовал исходные пакеты с java-классами, теперь я не могу их видеть только на панели «Файл». У меня есть пакет под названием batchUtility, содержащий HTTP-сервлет под названием batchQueryServlet.Настройка сервлета Java HTTP в Netbeans 7.3

Я должен опубликовать JSON для batchQueryServlet через функцию jQuery.ajax(), и я не могу отобразить сервлет.

С Netbeans 7.3 не поставляется конфигурационный файл, я создал один за себя, нажав на веб-инф папки> новый> файл web.xml и написал следующее:

<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> 

, но до сих пор при выдаче запроса, я получаю сообщение об ошибке 404:

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

Теперь, я уверен, что он не находит класс, потому что, если я называю имя сервлета я получаю исключение ClassNotFound. Как я могу это исправить? (Быстрое и грязное решение будет использовать JSP, но я бы предпочел не делать этого).

PS: Я использую версию 7.0.34 Tomcat.

EDIT Проблема была в том, что я должен использовать правильный путь src/java для хранения моих .java-классов вместо простой папки (по этой причине я не мог видеть пакеты). Теперь я исправил это. В любом случае, спасибо за ваше время!

ответ

1

У вас есть ведущий слэш в

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

Удалите его и все должно работать.

Изменение Ajax url: либо "batchQueryServlet" или "/web-app-name/batchQueryServlet"

EDIT:

После развертывания структуры папок вашего веб-приложения должны быть, как: (/ указывает на каталог)

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 

Если вы используете IDE (например, Eclipse), он делает то же самое для вас.

+0

О, вы правы. Тем не менее, это не сработает. Однако, я думаю, я понял, в чем проблема, я должен установить контекст. Когда я отправляю сообщение, я отправляю сообщение в http: // localhost: 8084/batchQueryServlet', но я хочу, чтобы он был http: // localhost: 8084/projectName/batchQueryServlet'. У меня есть файл context.xml, ' <Контекст antiJARLocking =" true "path ="/projectname "/>' и думал, что он может работать, но похоже, этого не произойдет. Я попытался добавить контекстный путь, но он по-прежнему относится к http: // localhost: 8084/batchQueryServlet:/ –

+0

Вы правы в контекстной части. Проверить обновление. –

+0

Спасибо, теперь это работает. Проблема в том, что я все еще запускаюсь в исключении ClassNotFound, так как он не находит batchQueryServlet. У меня есть папка batchUtility в папке/app_name /, но я понял, что классы не могут разрешать классы в одной папке, я думаю, у меня есть некоторые проблемы с компиляцией. –