Я относительно новичок в HTTP и кодировании в целом, и я столкнулся со следующей проблемой.Я заранее прошу прощения за любые ошибки, которые я допускаю, задавая этот вопрос, но я благодарен за любые отзывы.
Мой (давайте назовем его) инструктор создал проект Evense в Maven, чтобы продемонстрировать, как ведут себя сервлеты.В src / main / java у меня есть следующий класс.
public class MyServlet extends HttpServlet {
@Override
public void init() {
System.out.println("My servlet initializing");
}
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
System.out.println("Request received");
super.service(request, response);
}
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
System.out.println("Post received");
String parameter = request.getParameter("name");
System.out.println(parameter);
System.out.println(request.getReader().readLine());
// We call our service
response.getWriter().write("Hi there!");
response.getWriter().write("Hi there again!");
response.sendRedirect("http://google.com");
}
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
System.out.println("Get received");
}
В файле web.xml, соответствующем этому проекту, мне присвоено имя сервлета myservlet.Шаблон URL затем устанавливается на /myservlet
.Теперь я пытаюсь понять, как работает HTTP.Используя Postman, я получил сервер TOMCAT, который я использую, чтобы вести себя как ожидалось с запросами GET и POST.Однако проблема возникает в следующем HTML-документе, который я создал и который называется form.html
:
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form method="post" action="./details">
<input name="name" type="text" placeholder="enter your name">
<input type="submit">
</form>
</body>
</html>
Когда я открываю его в Firefox, форма загружается нормально.Я набираю что-то случайное и отправляю запрос.Поскольку из того, что я понимаю, это запрос POST, я думаю, что бит action="./details"
будет ссылаться на сервлет, который я определил выше, и, в частности, на метод doPost()
, который, в свою очередь, должен перенаправить меня в Google.Тем не менее, он дает мне сообщение об ошибке «Firefox не может найти файл в ...src/main/webapp/details
».В чем проблема?
Кроме того, в приведенном выше методе doPost()
, что происходит с вызовами response.getWriter().write(...)
?Я не вижу их нигде после отправки чего-либо в виде файла form.html
.В любом случае, я в замешательстве.Точка в правильном направлении будет высоко ценится.Если потребуется какая-либо дополнительная информация, пожалуйста, дайте мне знать.