4

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

有没有一个jstl标签库来做到这一点?还是我需要自己创建?

4

1 回答 1

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>

如果导入发生,那么它会按预期工作,但如果出现问题(任何事情),则会显示您的错误页面。

您可以编写自己的导入标签,但它封装了这一点,但与此解决方案相比,它的工作量相当大。

于 2009-02-25T02:42:46.443 回答