Java response.sendRedirect-检查重定向是否启动
从JSP我只想重定向到另一个页面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
<% 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?
}
}