只从jsp页面onload事件调用一个servlet页面
我有一个jsp页面,我想在其中显示2个使用servlet返回的值填充的列表。应该在jsp页面加载后立即发生所以我通过jsp页面的onload函数调用了servlet。我能够获取页面上的列表,但它上升到一个无限循环,一次又一次地调用servlet并显示相同的值。只从jsp页面onload事件调用一个servlet页面
在我test2.jsp,我使用这个调用在我的ONA的servlet加载JSP页面
function load()
{
document.location.href="/OnaUIDemo/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.Just调用这两个函数
<%
test t = new test();
List l1=t.getList1();
List l2=t.getList2();
//now you have the two list,just show them
%>
随着脚本小气馁,因为指出out.You可以使用JSTL
<jsp:useBean id="obj_name" type="package_name.class_name" />
这相当于<%t检验= new test();%> 现在迭代并显示列表值jstl
<c:forEach var="content" items="${obj_name.list1}">
c:out value="${content}" />
</c:forEach>
*自十年以来Scriptlets * [不鼓励](http://*.com/questions/3177733/how-to-avoid-java-code-in-jsp-files/3180202#3180202)。 – BalusC 2013-03-05 18:16:10
重述您的问题,清楚地说明您的操作,您面临的问题以及您想要达到的目标,并在每个句子的开头注意单词的大小写。 – skuntsel 2013-03-05 14:34:14
摆脱这个'load()'废话,只需将链接或浏览器地址栏中的URL更改为servlet而不是JSP。现在有道理吗? – BalusC 2013-03-05 18:18:21
BalusC是对的。只需调用servlet,它执行业务逻辑并将其发送到test2.jsp站点。使用表达式语言,您可以访问您在servlet中计算的.jsp中的列表。 – Gero 2015-04-16 11:37:54