Вы можете использовать метод doGet()
сервлета для предварительной обработки запроса и пересылки запроса в JSP. Затем просто укажите URL-адрес сервлета вместо URL-адреса JSP в ссылках и адресной строке браузера.
Например,
@WebServlet("/products")
public class ProductsServlet extends HttpServlet {
@EJB
private ProductService productService;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List products = productService.list();
request.setAttribute("products", products);
request.getRequestDispatcher("/WEB-INF/products.jsp").forward(request, response);
}
}
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
...
${product.name}
${product.description}
${product.price}
Обратите внимание, что файл JSP помещается внутри папки /WEB-INF
чтобы запретить пользователям напрямую обращаться к нему без вызова сервлета.
Также обратите внимание, что @WebServlet
доступен только с сервлета 3.0 (Tomcat 7 и т. д.), см. также аннотацию @WebServlet с Tomcat 7 . Если вы не можете обновить или когда вам по какой-то причине нужно использовать web.xml
, который несовместим с Servlet 3.0, вам необходимо вручную зарегистрировать сервлет старомодным способом в web.xml
, как показано ниже, вместо используя аннотацию:
productsServlet
com.example.ProductsServlet
productsServlet
/products
После правильной регистрации сервлета по аннотации или XML теперь вы можете открыть его с помощью http: // localhost: 8080 / context / products , где /context
- это путь развертывания контекста webapp, а /products
- шаблон URL сервлета. Если у вас есть какой-либо HTML внутри него, просто поставьте POST на текущий URL-адрес, например
, и добавьте
doPost()
к тому же самому сервлету для выполнения задания постобработки , Продолжите приведенные ниже ссылки для более конкретных примеров.