2013-05-22 37 views
10

在我的jsp如果我叫<form action="/sampleServlet" method="get" name="form1">,我得到以下異常:<形式行動= 「/ sampleServlet」 讓我異常

HTTP 404錯誤 - sampleServlet不found.I在 網絡設置sampleServlet .xml文件和url-pattern也設置爲/ sampleServlet。

爲什麼我得到404(找不到servlet)?

回答

32

當您在HTML中使用URL時,如果沒有前導/它們是相對於當前URL(即當前頁面顯示)。憑藉領先的/他們是相對於網站根:

<form action="/context-path/sampleServlet"> 

<form action="sampleServlet"> 

會做你想要什麼。

我建議你動態地在動作路徑中添加上下文。 例子(JSP):

<form action="${pageContext.request.contextPath}/sampleServlet"> 

有了這個,你將永遠不會有改變路徑,例如,如果您將您的文件或複製你的代碼,或重命名你的背景!

+0

謝謝你..它的工作.. – user2365917

+0

不客氣 –

+0

這是給我一個404錯誤以下URL:http://127.0.0.1:8888/${pageContext.request.contextPath}/fileUpload – anon58192932

4

可以幫助你

servlet配置

<servlet> 
    <servlet-name>sampleServlet</servlet-name> 
    <servlet-class>test.sampleServlet</servlet-class> 
    </servlet> 
<servlet-mapping> 
    <servlet-name>sampleServlet</servlet-name> 
    <url-pattern>/sampleServlet/</url-pattern> 
    </servlet-mapping> 

servlet代碼:

package test; 

import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 


public class sampleServlet extends HttpServlet{ 

    public void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws IOException{ 
     PrintWriter out = response.getWriter(); 
     out.println("<html>"); 
     out.println("<body>"); 
     out.println("<h1>Hello Servlet Get</h1>"); 
     out.println("</body>"); 
     out.println("</html>"); 
    } 
} 

JSP代碼:

<html> 
    <body> 
    <form action="/sampleServlet/" method="GET"> 
     <input type="submit" value="Submit form "/> 
    </form> 
    </body> 
</html> 

您可以點擊提交按鈕後,你可以看到的servlet出把

1

只要用行動=「sampleServlet」

它會爲你工作。