Начал изучать сервлеты и возникла следующая проблема. Имеется:
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. Почему так происходит?
Измените имя index.jsp на любое другое и все должно заработать. У меня совсем из головы вылетело что всегда любой сервер сначала ищет index файл.
Да ище одно. Если вы наследуетесь от HttpServlet то метод init переопределять ненужно.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей