/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. .