我有一个jsp页面,我想在其中显示2个使用servlet返回的值填充的列表。这应该在jsp页面加载后立即发生,所以我通过jsp的onload函数调用servlet页 。我能够获取页面上的列表,但它进入了无限循环,一次又一次调用 servlet 并显示相同的值。
在我的 test2.jsp 中,我使用它在加载 jsp 页面时调用 servlet
function load()
{
document.location.href="/OnaUIDemo/ona?";
}
在我的 ona servlet 中我正在使用这个,
RequestDispatcher rd = getServletContext().getRequestDispatcher("/test2.jsp");
我发现的是,因为它通过页面加载调用 servlet,并且 servlet 也重定向到同一个 jsp。 jsp 再次加载,导致一次又一次无限加载。 请帮助我控制 servlet 调用仅一次。
最佳答案
真的需要使用servlet吗?可以使用POJO来完成。
创建一个类,它将返回这两个列表。
public class test{
public List getList1()
{
//do your stuff here to add values in list
return list;//return your list
}
public List getList2()
{
//do stuff here
return list;//return your list
}
}
在你的jsp中,只需调用这两个函数
<%
test t = new test();
List l1=t.getList1();
List l2=t.getList2();
//now you have the two list,just show them
%>
正如指出的那样,不鼓励使用 scriptlet。您可以使用 jSTL
<jsp:useBean id="obj_name" type="package_name.class_name" />
这相当于<%test t=new test();%> 现在在 jSTL 中迭代并显示列表值
<c:forEach var="content" items="${obj_name.list1}">
c:out value="${content}" />
</c:forEach>
关于java - 仅从 jsp 页面 onload 事件调用 servlet 页面一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15225525/