sendRedirect()无法按预期工作

时间:2014-06-08 03:56:14

标签: java jsp

我有这个Register.jsp页面,在页面加载时,我想检查用户是否已经登录。所以我有这段代码,

<%
    String usertype = (String)session.getAttribute("usertype");
    if(usertype.equals("student")){
        response.sendRedirect("studenthome.jsp");
    }
    else if(usertype.equals("faculty")){
        response.sendRedirect("facultyhome.jsp");
    }       
%>

在用户登录时有效(如果studenthome.jsp等于usertype,则重定向到student,如果facultyhome.jsp等于{{1},则重定向到usertype }}),但当facultyusertype时,我只想继续加载页面而不是出现以下错误。我在这做错了什么

2 个答案:

答案 0 :(得分:2)

  

当usertype为null时,我只想继续加载页面   而不是得到错误。

如果NullPointerExceptionusertype,您将获得null。您可以通过在usertype条件的equals方法上交换if-else的位置来忽略此错误

if("student".equals(usertype)){
    response.sendRedirect("studenthome.jsp");
}
else if("faculty".equals(usertype)){
    response.sendRedirect("facultyhome.jsp");
}    

答案 1 :(得分:1)

尽量避免在 21世纪中使用 Scriplet ,而是使用JavaServer Pages Standard Tag Library

尝试使用c:redirectc:choose。详细了解Oracle Tutorial - Core Tag Library


无需使用JSTL(在本例中)处理NullPointerException,如下面的示例代码所示。

示例代码:

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

<c:choose>
    <c:when test="${usertype == 'student'}">
        <c:redirect url="studenthome.jsp" />
    </c:when>
    <c:when test="${usertype == 'faculty'}">
        <c:redirect url="facultyhome.jsp" />
    </c:when>
    <c:otherwise>
        <c:redirect url="home.jsp" />
    </c:otherwise>
</c:choose>

注意:如果不需要,请删除c:otherwise