Вид.
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>
Если импорт происходит, тогда он работает как задумано, но если что-то (что-то) идет не так, то отображается страница с вашей ошибкой.
Вы можете написать свой собственный тег импорта, но он инкапсулирует это, но это немало работы по сравнению с этим решением.