我有以下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
,或者我做错什么的任何想法?
答案 0 :(得分:0)
始终尽量避免使用 Scriplet ,而是使用更易于使用且不易出错的JavaServer Pages Standard Tag Library和Expression 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>