Могу ли я вызвать сервлет из JSP-файла без использования HTML-формы?
Например, для отображения результатов из базы данных в HTML-таблице во время загрузки страницы.
Переведено автоматически
Ответ 1
Вы можете использовать doGet() метод сервлета для предварительной обработки запроса и переадресации запроса в JSP. Затем просто укажите URL сервлета вместо JSP-URL в ссылках и адресной строке браузера.
Обратите внимание, что файл JSP помещен внутри /WEB-INF папки, чтобы пользователи не могли получить к нему прямой доступ без вызова сервлета.
Также обратите внимание, что @WebServlet доступно только начиная с Servlet 3.0 (Tomcat 7 и т.д.), смотрите также аннотацию @WebServlet в Tomcat 7. Если вы не можете выполнить обновление или когда вам по какой-либо причине необходимо использовать web.xml который несовместим с Servlet 3.0, то вам нужно будет вручную зарегистрировать сервлет по старинке в web.xml, как показано ниже, вместо использования аннотации:
После правильной регистрации сервлета с помощью аннотации или XML теперь вы можете открыть его с помощью http://localhost:8080/context/products где /context - путь к развернутому контексту веб-приложения, а /products - шаблон URL сервлета. Если у вас случайно есть какой-либо HTML <form> внутри него, то просто отправьте его по текущему URL вот так <form method="post"> и добавьте doPost() в тот же сервлет для выполнения задания постобработки. Перейдите по ссылкам ниже для получения более конкретных примеров по этому вопросу.
Элемент позволяет включать статический или динамический файл в файл JSP. Результаты включения статических и динамических файлов сильно отличаются. Если файл статический, его содержимое включается в вызывающий файл JSP. Если файл динамический, он выполняет запрос и отправляет обратно результат, который включается в страницу JSP. Когда действие включения завершено, контейнер JSP продолжает обработку оставшейся части файла JSP.
Элемент пересылает объект запроса, содержащий информацию о запросе клиента, из одного файла JSP в другой файл. Целевым файлом может быть HTML-файл, другой JSP-файл или сервлет, при условии, что он находится в том же контексте приложения, что и JSP-файл пересылки. Строки в исходном JSP-файле после элемента не обрабатываются.
например
<jsp:forward page="/servlet/ServletCallingJsp" />
Проверьте расширенный пример JSP: взаимодействие JSP-сервлета: