2013-05-20 67 views
1

我最近升級到Netbeans 7.3,並且我沒有獲得太多的項目配置和接口。例如,一旦我用Java類查看源代碼包,現在我只能在「文件」面板中看到它們。我有一個名爲batchUtility的包含一個名爲batchQueryServlet的HTTP servlet的包。在Netbeans 7.3中配置Java HTTP servlet

我必須通過jQuery.ajax()函數向batchQueryServlet發佈JSON,但我無法映射該servlet。

由於NetBeans 7.3不出貨配置文件,我已經通過自己點擊WEB-INF文件夾>新建> 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" 
         }); 

現在,我敢肯定它沒有找到類,因爲如果我調用servlet的名字,我收到了ClassNotFound的異常。我怎麼能解決這個問題? (一個快速和骯髒的解決方案將使用JSP,但我寧願不這樣做)。 PS:我使用Tomcat 7.0.34版本。

編輯問題是我應該使用適當的src/java路徑來存儲我的.java類而不是普通的文件夾(這是我看不到包的原因)。現在我已經修復了它。無論如何感謝您的時間!

回答

1

你有

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

領先斜線刪除它,事情應該工作。

更改您的Ajax url:要麼"batchQueryServlet""/web-app-name/batchQueryServlet"

編輯

一旦部署Web應用程序的文件夾結構應該是這樣的:(/表示目錄)

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文件,「<?xml version =」1.0「encoding =」UTF-8「?> '似乎不會。我試圖添加一個上下文路徑,但它仍然針對http:// localhost:8084/batchQueryServlet:/ –

+0

發佈您對上下文部分是正確的。檢查更新。 –

+0

謝謝,現在它工作。問題是,我仍然在ClassNotFound異常中運行,因爲它找不到batchQueryServlet。我已經在/ app_name /文件夾中使用了batchUtility文件夾,但我意識到類無法解析同一文件夾中的類,我想我在編譯時遇到了一些問題。 –