c:import或c:url - 指定超时值

时间:2008-12-16 21:06:15

标签: jstl

我想使用c:import或c:url来抓取页面的内容(adserver)。另外,我需要指定一个超时,如果调用超时或页面不可访问,我需要一些默认文本作为我的值返回。

是否有jstl标签lib来执行此操作?或者我需要创建自己的?

1 个答案:

答案 0 :(得分:4)

有点。

c:import打开一个到服务器的套接字,只返回连接的内容(在你的情况下是原始的html)。如果服务器返回的页面是404,那么将显示的是500,那么你会得到错误页面。

如果它是一个套接字,那么它可以访问所有套接字错误。 暂停:

 java.net.ConnectException: Operation timed out    

未知主持人:

 java.net.UnknownHostException: www.googasdasdasdassdle.com

这意味着您可以将导入包装在catch语句中并在页面上处理。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<c:catch var="socketExceptionVariable">
    <c:import url="www.googasdasdasdassdle.com"/>
</c:catch>

<c:if test="${socketExceptionVariable != null}">
    <p>There was an error here</p>
    <c:out value="${socketExceptionVariable}"/>
</c:if>

如果导入发生,那么它按预期工作,但如果出现错误(任何内容),则会显示错误页面。

您可以编写自己的导入标记,但这封装了这个,但与此解决方案相比,它有相当多的工作。

相关问题