如何动态填充 jsp 页面



我在网站上工作,使用 servlet 和 jsp。

我有不同类别的 jsp 页面,当我单击一个类别时,servlet 会重定向到另一个带有组件(台式机、笔记本电脑、平板电脑等)的 jsp 页面,但该页面上有所有类别,我需要这样做,如果我单击(桌面)类别以在 jsp 页面中仅显示桌面(组件)。

这是我的JSP页面和组件的servlet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Collection<Components> components;
    components= componentsdao.getAll() -- geting all components from database
    request.setAttribute("components", komponenta);
    request.getRequestDispatcher("pcitem.jsp").forward(request, response);
}

这是JSP页面的一部分

           <c:forEach var="i" items="${requestScope.components}">         
                    <p>
                     ${i.nameofcomponent}
                    </p>
                    <div >
                    <h6>Description ${i.descriptionoofcomponent}</h6>
                    </div>
                    <div ">
                    <h6>Price ${i.priceofcomponent}</h6>
                    </div>
                    <div >
                    <h6>Official site ${i.link}</h6>
                    </div>
        </c:forEach>  

你有多种选择,但最好的选择是使用Ajax框架,例如JQuery。您可以发出 ajax 请求并从服务器中提取数据,并使用 java 脚本在视图上呈现该数据。在下拉更改时定义事件 -> Ajax 调用以获取下一个下拉数据 ->下一个调用。这将确保您的页面不会刷新并且用户体验更好。

否则采用老式的方式 - 在页面加载时获取所有数据(所有下拉数据) - 使用 JS 数组定义数组并在事件更改时获取数据。

当您单击类别时,servlet 可能会返回到新页面。但是您可以通过在 jsp 文件中按照方法执行此操作。

  1. 从 Servlet 中设置类别类型和设置,如果单击桌面,则按如下所示进行设置。例如:

    request.setAttribute("categoryType", "desktops");

  2. 在 jsp 文件中循环访问元素之前,您可以检查"类别类型"并显示项目。例如:

    if("desktops".equals(request.getAttribute("categoryType"))){//display items. }

您可以在组件类中有一个变量,例如 for 循环中的"组件类型",您也可以基于此进行检查。

最新更新