Java Servlet + TomCat - Не удается передать данные

191
02 мая 2018, 05:59

Начал изучать сервлеты и возникла следующая проблема. Имеется:

index.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>Словарь</title>
  </head>
  <body>
  Введите слово:
  <form method="post" action="/">
    <label>
      <input type="text" name="word"></label><br>
    <input type="submit" value="OK" name="ok"><br>
  </form>
  <c:out value = "${requestScope.getText}" default="null"/>
  </body>
</html>

StartPage.java

public class StartPage extends HttpServlet {
private String text;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    System.out.println("doget");
   req.setAttribute("getText", text);
   req.getRequestDispatcher("index.jsp").forward(req, resp);

}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    System.out.println("doPost");
    req.setCharacterEncoding("UTF-8");
    final String word = req.getParameter("word");
    text = word;
    System.out.println(word);
    doGet(req, resp);
}
@Override
public void init() throws ServletException {
    System.out.println("init");
}
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <servlet>
        <servlet-name>StartPage</servlet-name>
        <servlet-class>servlet.StartPage</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>StartPage</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>SecondPage</servlet-name>
        <servlet-class>servlet.Second</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>SecondPage</servlet-name>
        <url-pattern>/second</url-pattern>
    </servlet-mapping>
</web-app>

Пытаюсь передать данные с формы в сервлет и вернуть обратно на index.jsp. Код второго сервлета не привожу, в него данные передаются без проблем. Но как только меняю

<form method="post" action="/second">

на

<form method="post" action="/">

при нажатии на форму метод doPost не отрабатывает. Вместо него вызывается doGet. Почему так происходит?

Answer 1

Измените имя index.jsp на любое другое и все должно заработать. У меня совсем из головы вылетело что всегда любой сервер сначала ищет index файл.

Да ище одно. Если вы наследуетесь от HttpServlet то метод init переопределять ненужно.

READ ALSO
Mockito возвращает NullPointerException

Mockito возвращает NullPointerException

При тестировании метода, возвращающего список сущностей, вылетает NullPointerException

239
APACHE POI [3.17] - проблема с xddf

APACHE POI [3.17] - проблема с xddf

Пример из LineChart

269
MySQL. Как удалить подстроку из ячейки

MySQL. Как удалить подстроку из ячейки

подскажите пожалуйстаКак удалить подстроку из ячейки, а саму подстроку взять из другой таблицы

206
SELECT проблема с WHERE

SELECT проблема с WHERE

Составил запрос на тех кто вчера был:

194