userProfile.jsp报JasperException与空指针,用户为null跳转失效
问题原因分析
- 重定向逻辑未完全生效:
response.sendRedirect("index.jsp")仅会生成302跳转响应返回给浏览器,不会终止当前JSP页面后续代码的运行。因此当user为null时,即使触发了重定向逻辑,后续调用user.getFirstName()的代码仍会执行,直接抛出空指针异常,也就是你遇到的JasperException报错。 user.equals(null)判断无效的原因:如果user本身是null,调用其equals方法本身就会触发空指针异常,判断Java对象是否为null必须使用==运算符。
修复方案
只需要在重定向逻辑后添加return语句,终止后续代码执行即可,修改后的JSP头部逻辑如下:
<%@ page import="com.example.demo2.User" %> <%@ page contentType="text/html;charset=UTF-8" %> <% User user = (User) session.getAttribute("loginuser"); if(user == null){ response.sendRedirect("index.jsp"); return; // 新增这行,终止当前页面后续代码执行 } %>
优化建议(可选)
可以将登录校验逻辑统一抽取到Servlet过滤器(Filter)中,对所有需要登录后访问的路径统一做校验,不用每个业务JSP单独编写重定向逻辑,避免遗漏。
内容的提问来源于stack exchange,提问作者Badri Rusadze
相关产品推荐
相关产品推荐

