我在网站上工作,使用 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 文件中按照方法执行此操作。
-
从 Servlet 中设置类别类型和设置,如果单击桌面,则按如下所示进行设置。例如:
request.setAttribute("categoryType", "desktops");
-
在 jsp 文件中循环访问元素之前,您可以检查"类别类型"并显示项目。例如:
if("desktops".equals(request.getAttribute("categoryType"))){//display items. }
或
您可以在组件类中有一个变量,例如 for 循环中的"组件类型",您也可以基于此进行检查。