只从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调用只控制一次。

+0

重述您的问题,清楚地说明您的操作,您面临的问题以及您想要达到的目标,并在每个句子的开头注意单词的大小写。 – skuntsel 2013-03-05 14:34:14

+2

摆脱这个'load()'废话,只需将链接或浏览器地址栏中的URL更改为servlet而不是JSP。现在有道理吗? – BalusC 2013-03-05 18:18:21

+0

BalusC是对的。只需调用servlet,它执行业务逻辑并将其发送到test2.jsp站点。使用表达式语言,您可以访问您在servlet中计算的.jsp中的列表。 – Gero 2015-04-16 11:37:54

你真的需要使用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> 
+1

*自十年以来Scriptlets * [不鼓励](http://*.com/questions/3177733/how-to-avoid-java-code-in-jsp-files/3180202#3180202)。 – BalusC 2013-03-05 18:16:10