связывание сервлета с JSP. - PullRequest
1 голос
/ 29 марта 2012

Есть ли способ связать сервлет с JSP без использования физической ссылки URL.поэтому я хочу, чтобы сервлет запустился, а затем сервлет перенес меня в JSP.есть идеи.

Ответы [ 4 ]

2 голосов
/ 30 марта 2012

Просто вызовите URL-адрес сервлета вместо URL-адреса JSP и выполните задание предварительной обработки в методе doGet() сервлета.

например. сервлет, который загружает список продуктов до того, как JSP представит их:

@WebServlet("/products")
public class ProductServlet extends HttpServlet {

    @EJB
    private ProductService productService;

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // Preprocess request: load list of products for display in JSP.
        List<Product> products = productService.list();
        request.setAttribute("products", products);
        request.getRequestDispatcher("/WEB-INF/products.jsp").forward(request, response);
    }

}

Где JSP выглядит так:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/format" prefix="fmt" %>

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Our Products</title>
    </head>
    <body>
        <h1>Products</h1>
        <table>
            <tr>
                <th>ID</th>
                <th>Name</th>
                <th>Description</th>
                <th>Price</th>
            </tr>
            <c:forEach items="${products}" var="product">
                <tr>
                    <td>${product.id}</td>
                    <td><c:out value="${product.name}" /></td>
                    <td><c:out value="${product.description}" /></td>
                    <td><fmt:formatNumber value="${product.price}" type="currency" /></td>
                </tr>
            </c:forEach>
       </table>
    </body>
</html>

Если перейти к http://localhost:8080/contextname/products напрямую, то будет вызван сервлет doGet(), и продукты будут загружены из БД и сохранены в области запроса, а элемент управления будет перенаправлен в JSP, Turn представляет результаты в некоторой красивой HTML-разметке.

Смотри также:

0 голосов
/ 29 марта 2012

Да, в сервлете вы можете добавить HTML-код, а затем отправить перенаправление на страницу JSP.

0 голосов
/ 29 марта 2012

Я думаю, что вы хотите вперед. URL браузера будет поддерживать URL сервлета, а атрибуты, указанные в запросе, будут доступны для jsp.

RequestDispatcher r = getServletContext (). GetRequestDispatcher ("foo.jsp");

r.forward (запрос, ответ);

0 голосов
/ 29 марта 2012

Да, используйте рамки.Только сервлеты и JPS похожи на воду и камни - вы можете построить с ними дорогу, но вы не можете попросить их сделать это в одиночку.Вы должны попотеть или получить какую-то платформу, чтобы сделать это для вас;)

Я предлагаю http://www.playframework.org/ (1.2.4 ... 2.0 - менее хависто, более скалисто), если вызнакомы с Java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...