我想使用c:import或c:url来抓取页面的内容(adserver)。另外,我需要指定一个超时,如果调用超时或页面不可访问,我需要一些默认文本作为我的值返回。
是否有jstl标签lib来执行此操作?或者我需要创建自己的?
答案 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>
如果导入发生,那么它按预期工作,但如果出现错误(任何内容),则会显示错误页面。
您可以编写自己的导入标记,但这封装了这个,但与此解决方案相比,它有相当多的工作。