gpt4 book ai didi

java - 访问 session 属性时Tomcat和空指针异常

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:33:10 24 4
gpt4 key购买 nike

为了开发一个电子学习网络应用程序,我已经使用 net beans ide 开发了一个项目 6 个月。在 net beans 中一切正常。(该项目来自现有资源,我不得不修改它,我没有开发整个应用程序)我在 net beans 中使用 apache tomcat 7。当我创建 war 文件并部署它时没有任何效果。我的 session 变量中出现空指针异常,就像我从未给它们赋值一样。我无法理解有什么问题。在 net bean 中我使用的是同一个 tomcat。

    org.apache.jasper.JasperException: An exception occurred processing JSP page /System.jsp at line 31

28: Integer intObj = new Integer(project_id);
29: httpsession.setAttribute("project_id",intObj);
30: Hashtable projects=(Hashtable)session.getAttribute("projectsprofessor");
31: if((Integer)session.getAttribute("professor")<=1 &&
32: projects.get(project_id)==null)
33: {
34: request.getSession().setAttribute("errorMessage","This project belongs to another professor!");


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:553)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:457)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

root cause

java.lang.NullPointerException
org.apache.jsp.System_jsp._jspService(System_jsp.java:149)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

这发生在我的大部分页面上。奇怪的是一些 session 变量不是空的。我不知道该把注意力放在哪里!

谢谢。

//编辑:已解决!问题是在我得到的源代码中,他们忘记了 WEB-INF 文件夹中的 *.class 文件,所以当我在 NetBeans 中清理和构建时,新类没有编译和 net beans使用了 WEB-INF 文件夹中的先前来源。当我在下一次清理构建中手动删除 WEB-INF/Classes 中的所有 .class 文件时,使用了新文件

最佳答案

org.apache.jasper.JasperException: An exception occurred processing JSP page /System.jsp at line 31

因此第 31 行如下:

if((Integer)session.getAttribute("professor")<=1 && ...

这里的 NPE 在技术上只有 2 个原因:

  1. sessionnullgetAttribute()将因 NPE 而失败。
  2. 属性“教授”返回nullint<= 自动装箱将因 NPE 而失败。

第一个原因不太可能,因为第 30 行会首先失败。我敢打赌这是第二个原因。您需要先检查属性是否不是 null .

Integer professor = session.getAttribute("professor");
if ((professor == null || professor <= 1) && ...

也许您需要在更高层次上解决它,即确保“教授”属性是从不 null .


具体问题无关,Java code belongs in Java classes .它将使调试、测试和维护等变得更加容易。

关于java - 访问 session 属性时Tomcat和空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7163971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com