[英]Apache tomcat and servlet (beginner) - 404 error, maybe classes are not found?
我是servlet的初學者,對於“ hello world style”的servlet,我安裝了apache tomcat並在其webapps
目錄下創建了以下內容:
servletdir
|- index.xhtml
|- WEB-INF
|- web.xml
|- classes
|- mypackage
|- ServletClass.class
初始化所有東西,以便可以在本地主機上訪問我的servlet:
web.xml
<?xml version="1.0" encoding="utf-8"?>
<web-app>
<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>mypackage.ServletClass</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myservlet</servlet-name>
<url-pattern>/servleturl/*</url-pattern>
</servlet-mapping>
</web-app>
並且index.xhtml包含具有action="/servleturl" method="get"
的表單
從理論上講,當我啟動tomcat時,我現在應該能夠通過localhost:8080/servletdir/index.xhtml
來訪問servlet和index.xhtml文件,並在那里提交表單。 到達索引是沒有問題的,但是當我提交表單時,對於servlet,我收到404錯誤,說它“源服務器沒有找到目標資源的當前表示,或者不願意透露它的存在。” 。
我的servlet類應該不是問題,它擴展了HttpServlet
並重寫了doGet
以通過ServletResponse
參數的getWriter().println()
輸出簡單的html。 Servlet類中的錯誤會導致404嗎? 我的目錄結構或web.xml錯誤嗎?
我嘗試了多種目錄結構和解決方案,包括:
我遵循了多種資源,包括一些教程和許多問題,這些問題與我的問題沒有直接關系,但是包含一些信息,但是由於我是這項技術的新手,所以我無法推斷出哪種資源是好的,哪種資源是不正確的。 t,這就是為什么我嘗試幾乎所有發現的原因的原因。
最上面描述的目錄結構以這種結構直接在磁盤上,而不是在war文件中,但是由於我可以訪問某些部分,所以我想這不是問題。
*:請注意,每當代表包的目錄結構發生更改時,我都會在文件的第一行使用相應的“包”重新編譯java文件,這不是問題
將action="/servleturl" method="get"
更改為action="/servletdir/servleturl" method="get"
或action="servleturl" method="get"
。
使用action="/servleturl"
,您嘗試訪問根相對路徑,但是缺少上下文路徑servletdir
。
如果使用action="servleturl"
,則無需將上下文路徑放入action
因為它將從當前url獲取它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.