我对Java相当陌生-尽管来自PHP + JS。我的目标是使用Java Servlet制作CRUD(+ MVC)。
我正在使用Java EE7。在这里,我的某些模式基于this和that(两者具有相同的最终文件)。
因此,我正在实现MVC,但似乎无法使我的代码正常工作。 JPA似乎是主要问题;我无法从数据库中获取任何信息。
Here's the repository(真正的小项目-7〜8个班级)。 Models; DAO。
我已经设置了controllers.Test
(url:/ test)来测试我是否真的可以通过JPA与数据库进行通信。但是,当我转到/ test(controllers.Test
)时,将引发异常。 controllers.NewsEdit
(URL:/ edit)也是如此。
java.lang.NullPointerException
controllers.Test.doGet(Test.java:36)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
当我访问首页(url:/;
controller.NewsIndex
)时,我没有收到异常-获得主页,但没有任何数据。我做错了什么吗?我的SQL文件位于
/sql
文件夹中。我在persistent.xml
上得到了META-INF/
。任何帮助或参考,将不胜感激。真的需要学习它。
谢谢!
最佳答案
好,
有关NullPointerException的详细解释。
如果尚未初始化变量(在本例中为private NewsDAO newsDAO;
),则该“指针”指向内存中的任何内容。然后,当您尝试调用方法时,那里什么也没有,并且发生NPE。
这里的问题是私人NewsDAO newsDAO;不是由容器注入的,因此,当您调用newsDAO.all();
时,newDAO为null并引发异常。
CDI注入仅发生在由容器管理的组件上。我是一个春季人,所以我不确定该去哪里。尝试找出您的NewsDAO是否正在由容器加载。
Tomcat是一个Web容器...您需要一个带有EJB容器的完整Application Server来运行您的示例。尝试下载并在glassfish,JBoss或任何其他完整的应用程序服务器上运行。
更多信息在这里。
http://en.wikipedia.org/wiki/Application_server#Java_application_servers
和
http://www.oracle.com/technetwork/java/javaee/overview/compatibility-jsp-136984.html