Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java response.sendRedirect-检查重定向是否启动_Java_Jsp_Redirect_Response - Fatal编程技术网

Java response.sendRedirect-检查重定向是否启动

Java response.sendRedirect-检查重定向是否启动,java,jsp,redirect,response,Java,Jsp,Redirect,Response,从JSP我只想重定向到另一个页面 <% response.sendRedirect("http://www.google.com/"); %> 我可以检查google.com是否已启动,然后重定向(或写一条msg else) 诸如此类: <% if(ping("www.google.com")) { response.sendRedirect("http://www.google.com/"); } else { // write a message

从JSP我只想重定向到另一个页面

<% response.sendRedirect("http://www.google.com/"); %>

我可以检查google.com是否已启动,然后重定向(或写一条msg else)

诸如此类:

<% if(ping("www.google.com")) {
     response.sendRedirect("http://www.google.com/");
} else {
     // write a message 
}%>


这只是一个JSP页面,我没有任何可用的库(如ApacheComons for http GET方法)。

您可以尝试检查从服务器到目标的连接,如第一个示例中所示,但这会使线程等待,这可能是不可取的


第二种方法并不会像你想象的那样——它只是向客户端发送一个HTTP 302,客户端可能会也可能不会遵循重定向,但在任何情况下,你都不会从中得到异常。

这样做不是一个好主意。 您可以编写java代码,尝试在www.google.com上打开到端口80的连接,并检查是否得到200响应代码。
但是请注意,这会减慢页面渲染时间

在纯JSP中,我将获取JSTL(只需输入
/WEB-INF/lib
。当无法联系到另一端时,
将抛出
IOException
FileNotFoundException
)。使用
可以捕获任何可丢弃的
变量。使用
(或
)可以相应地处理结果

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set var="url" value="http://google.com" />
<c:catch var="e">
    <c:import url="${url}" var="ignore"></c:import>
</c:catch>
<c:choose>
    <c:when test="${not empty e}">
        <p>Site doesn't exist
    </c:when>
    <c:otherwise>
        <c:redirect url="${url}" />
    </c:otherwise>
</c:choose>

您可以考虑在单独的线程或石英计时器任务中进行验证,并检查线程是否在最后一次检查该站点是否可用。
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set var="url" value="http://google.com" />
<c:catch var="e">
    <c:import url="${url}" var="ignore"></c:import>
</c:catch>
<c:choose>
    <c:when test="${not empty e}">
        <p>Site doesn't exist
    </c:when>
    <c:otherwise>
        <c:redirect url="${url}" />
    </c:otherwise>
</c:choose>
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String url = "http://google.com";
    try {
        new URL(url).openStream(); // Will throw UnknownHostException or FileNotFoundException
        response.sendRedirect(url);
    } catch (IOException e) {
        throw new ServletException("URL " + url + " does not exist", e); // Handle whatever you want. Forward to JSP?
    }
}