переслать из сервлета в более высоком каталоге в JSP в подпапке - PullRequest
1 голос
/ 18 ноября 2009

у меня

root/logged/form.jsp
root/servlet
root/logged/form.jsp

У меня есть страница jsp logged/form.jsp эта форма отправляется сервлету action="../update". Теперь я хочу добавить некоторые параметры для запроса и переслать его в logged/form.jsp, но он не работает и показывает мне form.jsp в корневом контексте только root/servlet. Пожалуйста, помогите, какой URL я должен направить мой запрос. Я не могу использовать sendRedirect, так как должен сохранять объект запроса.

Я пытался использовать вперед (logged/form.jsp) и вперед (/logged/form.jsp) и вперед (/form.jsp) в моем сервлете

Ответы [ 3 ]

0 голосов
/ 18 ноября 2009

/logged/form.jsp должен быть правильным. Предлагаю прочитать логи appserver. Большой шанс, что внутри IllegalStateException: response already committed.

Подождите, подождите, ваша настоящая проблема в том, что вы хотите изменить URL-адрес, который посетитель видит в адресной строке?

Если это так, то нет, это невозможно с форвардом. Я бы тогда предложил решить проблему с другой стороны. Просто «спрячьте» form.jsp в папке /WEB-INF и все время используйте сервлет, чтобы получить / опубликовать форму.

Псевдо:

protected void doGet(request, response) {
    request.getRequestDispatcher("/WEB-INF/logged/form.jsp").forward(request, response);
}

protected void doPost(request, response) {
    doYourSubmitThingHere();
    request.getRequestDispatcher("/WEB-INF/logged/form.jsp").forward(request, response);
}

отобразите этот сервлет на url-pattern из /logged/form, замените <form method="post" action="/servlet"> на <form method="post" action="/logged/form">, а затем вы можете использовать / вызывать его на http://example.com/logged/form.

Вы также можете пойти дальше, приняв шаблон контроллера страницы и воспользовавшись HttpServletRequest#getPathInfo(), чтобы получить путь запроса (и путь к файлу JSP), чтобы вам не нужно было варить новый сервлет для каждого JSP. .

0 голосов
/ 21 октября 2016
req.getRequestDispatcher("../ïndex.jsp").forward(req,resp);
0 голосов
/ 18 ноября 2009

Старайтесь всегда использовать абсолютные пути (начиная с /), которые интерпретируются как относящиеся к корню контекста.

...