Я пытаюсь перенаправить на HTML-страницу из сервлета. Для отладки у меня минимальный код на моем сервлете, HTML-странице и в web.xmlJava: перенаправление с сервлета приводит к пустой странице
Я могу загрузить HTML-страницу в браузере без сервлета. Но когда я пытаюсь перенаправить на одну страницу из сервлета, отображается только пустая страница. Ошибка не отображается. Ниже приведен соответствующий код.
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>name</display-name>
<listener>
<listener-class>net.semandex.salsa.webapp.SalsaWebApp</listener-class>
</listener>
<servlet>
<description>
</description>
<display-name>SalsaValidationServlet</display-name>
<servlet-name>SalsaValidationServlet</servlet-name>
<servlet-class>net.semandex.salsa.validationServlets.SalsaValidationServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SalsaValidationServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>20</session-timeout>
</session-config>
</web-app>
Servlet
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SalsaValidationServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String path = request.getPathInfo();
if(path == null) return;
String []p = path.split("/");
if(!path.endsWith("licenseValidation.html"))
//request.getRequestDispatcher("/auth/licenseValidation.html").forward(request, response);
response.sendRedirect(request.getContextPath() + "/auth/licenseValidation.html");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}
}
HTML страницы - licenseValidation.html
<html>
<head>
<title>License upload page</title>
</head>
<body>
<form>
<input type="text" name="name"/><br>
<input type="text" name="group"/>
<input type="text" name="pass"/>
<input type="submit" value="submit">
</form>
</body>
</html>
Почему этот код загружает пустую страницу, а не HTML-страницу? Перенаправление происходит только на пустую страницу. Код статуса для нового URL-адреса в браузере - 200, но ответ в отладчике пуст.
Edit:
Проблема была в "/ *" URL шаблон, как указано на BalusC. Нашел еще полезную информацию в своем другом ответе. Difference between/and /* in servlet mapping url pattern
Какой URL-адрес запроса используется для вызова вашего сервлета? –
http: // localhost: 8080/salsadb // –
Ваш шаблон URL неправильный. Он захватывает ВСЕ запросы, включая те, к которым вы перенаправляете. В принципе, сервлет снова вызывает себя, но ни одно условие не соответствует, и он ничего не делает с ответом, поэтому все, что вы получаете, - пустой ответ. Для правильного шаблона URL см. Ответ в двух экземплярах. Для объяснения того, как работают эти шаблоны URL, см. Ссылку «См. Также» в нижней части ответа в двух экземплярах. – BalusC