<form action = "/sampleServlet", дающий мне исключение

В моем jsp, если я вызываю <form action="/sampleServlet" method="get" name="form1">, я получаю следующее исключение:

Ошибка HTTP 404 - sampleServlet не найден. Я устанавливаю sampleServlet в Файл web.xml и url-pattern также устанавливаются в /sampleServlet.

Почему я получаю 404 (не найден сервлет.)?

Ответ 1

Когда вы используете URL-адрес в HTML, без указания/они относятся к текущему URL (т.е. текущая страница отображается). С ведущими/они относятся к корню веб-сайта:

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

или

<form action="sampleServlet">

сделает то, что вы хотите.

Я предлагаю вам динамически добавлять контекст внутри пути действия. Пример (в JSP):

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

При этом вам никогда не придется менять путь, например, если вы переместите свой файл или скопируете свой код или переименуйте свой контекст!

Ответ 2

может помочь вам

конфигурация сервлета

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

Код сервлета:

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>

вы можете нажать кнопку "Отправить" и после того, как вы увидите, что сервлет отправлен

Ответ 3

Просто используйте action = "sampleServlet"

Он будет работать для вас.