如何检查String的JSP请求URL

时间:2014-06-02 17:53:38

标签: java jsp

我有以下processor.jsp文件:

<%
    response.sendRedirect("http://buzz.example.com");
%>

我想更改它,以便检查HTTP请求网址是否存在单词“fizz”,如果存在,则将用户重定向到http://fizz.example.org

类似于:

<%
    String reqUrl = request.getURL().toLowerCase();
    String token = null;
    if(reqUrl.contains("fizz")) {
        token = "fizz";
    } else {
        token = "buzz";
    }

    String respUrl = "http://%%%TOKEN%%%.example.com".replace("%%%TOKEN%%%", token);
    response.sendRedirect(respUrl);
%>

然而,这不起作用。关于我应该使用什么而不是request,或者我做错什么的任何想法?

1 个答案:

答案 0 :(得分:0)

始终尽量避免使用 Scriplet ,而是使用更易于使用且不易出错的JavaServer Pages Standard Tag LibraryExpression Language

使用JSTL <c:choose>的示例代码,它等同于Java switch case。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
...

<c:set var="defaultURL" value="xyz"/>

<c:choose>
    <c:when test="${fn:containsIgnoreCase(request.getRequestURI(), 'fizz')}">
        <c:redirect url="http://fizz.example.com" />
    </c:when>
    <c:when test="${fn:containsIgnoreCase(request.getRequestURI(), 'buzz')}">
        <c:redirect url="http://buzz.example.com" />
    </c:when>
    <c:otherwise>
        <c:redirect url="http://${defaultURL}.example.com" />
    </c:otherwise>
</c:choose>

详细了解All Tags | FunctionsOracle Tutorial - Using JSTL