我有这个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
}}),但当faculty
为usertype
时,我只想继续加载页面而不是出现以下错误。我在这做错了什么
答案 0 :(得分:2)
当usertype为null时,我只想继续加载页面 而不是得到错误。
如果NullPointerException
为usertype
,您将获得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:redirect
和c: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
。