<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"
Он будет работать для вас.