[英]Tomcat giving 404 error with servlets
我已經使用Tomcat 7
和帶有NeatBeans 7.3
Oracle JDK 1.7
開發了Java Web應用程序。 我的應用程序在本地PC上運行,沒有任何錯誤。
但是在托管應用程序之后,我無法訪問servlet。 它給我404
錯誤。 我沒有在應用程序中使用web.xml
來映射servlet。 我使用了annotation
。
托管服務器使用Tomcat 7
和Open JDK 1.7
。
可能是什么問題 ? 我該如何解決?
新更新
我購買托管的地方給了我cPanel
上傳文件。 在tomcat中沒有地方可以上傳war
文件,也沒有地方可以將文件上傳到webapps
Director中。 所以我將文件上傳到public_html
目錄。 我認為這可能是問題。 因為當我嘗試訪問諸如www.mysite.com/A
servlet時,服務器會在root
目錄目錄中搜索該目錄。 但實際上它不存在。 所以它給出了404
錯誤。
我認為這可能是問題所在。 有什么建議嗎?
更新
注釋如下
@WebServlet(name = "AddCustomer", urlPatterns = {"/AddCustomer"})
從DropBox下載Servlet。
目錄結構。
將項目部署到tomcat之后,如果位置中存在類,則簽入到“ tomcat7 \\ work \\ Catalina \\ localhost \\您的應用程序”。 如果有課程,那應該不是問題。
檢查以下內容:
最后也許發布您的web.xml的一部分以及您正在調用的URL
編輯
所以這是您的代碼樹,但是什么已部署到您的tomcat webapp目錄中? 您的編譯類是否在WEB-INF下?
編輯是否收到了有關public_html中托管的Web應用程序的新信息,建議您與托管服務器提供商的資源聯系,以了解如何正確部署-甚至不可能。
您可以嘗試從亞馬遜獲得EC2的一年試用期
批注“開箱即用”不起作用,您仍然必須tell
Tomcat查找帶有批注的Servlet
類。 為此,您需要使用正確版本的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">
我沒有使用過NetBeans,但像Eclipse一樣,它可能具有項目屬性,可讓您將Dynamic Web Project方面指定為Servlet 3.0值,該值將轉換為上面顯示的web.xml
行。
您應該檢查項目的WEB-INF
文件夾中的web.xml
或嘗試正確導出它-WAR文件應(必須?)包含WEB-INF/web.xml
文件。
您可以通過在web.xml
標頭中使用Servlet 3.0版本來“告訴它”。 對於較早的版本,Tomcat不會期望帶有注釋標記的servlet,即您必須在XML中手動列出它們。
至於更新的問題-因為Apache HTTP Server(可能是已安裝的)不理解WAR或JSP文件,所以您將得到404,您需要對其進行配置以將請求轉發到可能在另一個端口上的Tomcat (默認值為8080)-這稱為AJP或HTTP代理 ,即Apache服務器充當Tomcat的前端代理。 在Stackoverflow上有關於該主題的答案。 您無需將WAR文件部署到public_html
因為這是PHP或Perl Web應用程序的部署位置。
您應該向托管服務提供商咨詢是否確實安裝了Tomcat,它在哪個端口以及在何處部署Java Web應用程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.