#java #servlets #jboss5.x
#java #сервлеты #jboss5.x
Вопрос:
Я развернул war с именем test
в JBoss КАК.
Когда я захожу в браузер и ввожу URL http://localhost:8080/test
, я получаю login.jsp
страницу, которая является страницей приветствия.
Когда я нажимаю кнопку отправки, сервлет получает вызываемое имя CheckLoginServlet
( onSubmit
я перенаправил на /test/servlet/CheckLoginServlet
). При успешном входе в систему этот сервлет перенаправляет на jsp ( MFrame.jsp
), который находится внутри docroot/main/jsp
. URL выглядит следующим образом http://localhost:8080/main/jsp/MFrame.jsp?sid=13045798560
, и я получаю ошибку 404.
Причина в том, что URL-адрес не включает контекст test
, теперь, когда я явно изменяю URL-адрес в браузере, чтобы включить в него test (теперь URL выглядит как http://localhost:8080/test/main/jsp/MFrame.jsp?sid=13045798560
), страница успешно отображается.
Мой вопрос в том, почему контекст test
не отображается в URL-адресе, поскольку это корень контекста.
Комментарии:
1. Как вы делаете перенаправление на
MFrame.jsp
? Как выглядит ваш код?
Ответ №1:
Перенаправления являются родственниками веб-сервера. Поэтому, если у вас есть .sendRedirect("/main/jsp/MFrame.jsp")
, контекстный путь будет опущен. Это потому, что перенаправления — это понятие HTTP, и они происходят в браузере (они называются перенаправлениями на стороне клиента)
У вас есть несколько вариантов:
- используйте forward —
req.getRequestDispatcher("/main/jsp/MFrame.jsp").forward(req, res);
— это вызовет перенаправление на стороне сервера, и оно зависит от контекста - добавьте контекст к URL-адресу перенаправления (
request.getContextPath()
) - используйте относительные пути в перенаправлении
Комментарии:
1.
response.sendRedirect(request.getContextPath() "/errors/401.html");