Java + Spring:SEVERE Servletservice

我不知道我在控制器map.put("contactList", contactService.listContact());什么问题map.put("contactList", contactService.listContact()); 有人能帮助我吗?

严重:Servlet [dispatcher]的Servlet.service()在上下文中与路径[/ test]引发exception[请求处理失败; 嵌套exception是java.lang.NullPointerException],根据原因java.lang.NullPointerException位于太阳的sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)的pl.ivmx.contact.controller.ContactController.listContacts(ContactController.java:26)位于org.springframework的java.lang.reflect.Method.invoke(Method.java:601)的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中的.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)。 web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)位于org.springframework.web.servlet的org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)。位于org.springframework.web.servlet.Dispatc的org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)的mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424) herServlet.doService(DispatcherServlet.java:852)位于org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)的org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)位于javax .servlet.http.HttpServlet.service(HttpServlet.java:621),位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:30)的javax.servlet.http.HttpServlet.service(HttpServlet.java:722) )org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)org.apache.catalina.core.StandardContextValve。在Org.apache上的org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)中调用(StandardContextValve.java:123) org.apache.catalina.va上的.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) lves.AccessLogValve.invoke(AccessLogValve.java:927)org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:585)org.apache.tomcat.util.net.JIoEndpoint java的java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)中的$ SocketProcessor.run(JIoEndpoint.java:312),java的java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:603)。 lang.Thread.run(Thread.java:722)

 package pl.ivmx.contact.controller; import java.util.Map; import pl.ivmx.contact.dao.ContactDAO; import pl.ivmx.contact.form.Contact; import pl.ivmx.contact.service.ContactService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class ContactController { @Autowired private ContactService contactService; @RequestMapping("/contact") public String listContacts(Map map) { map.put("contact", new Contact()); map.put("contactList", contactService.listContact()); return "/contact"; } @RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/contact"; } @RequestMapping("/delete/{contactId}") public String deleteContact(@PathVariable("contactId") Integer contactId) { contactService.removeContact(contactId); return "redirect:/contact"; } } 

 package pl.ivmx.contact.dao; import java.util.List; import pl.ivmx.contact.form.Contact; public interface ContactDAO { public void addContact(Contact contact); public List listContact(); public void removeContact(Integer id); } 

包pl.ivmx.contact.dao;

 import java.util.List; import pl.ivmx.contact.form.Contact; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @Repository public class ContactDAOImpl implements ContactDAO { @Autowired private SessionFactory sessionFactory; public void addContact(Contact contact) { sessionFactory.getCurrentSession().save(contact); } public List listContact() { return sessionFactory.getCurrentSession().createQuery("from Contact").list(); } public void removeContact(Integer id) { Contact contact = (Contact) sessionFactory.getCurrentSession().load( Contact.class, id); if (null != contact) { sessionFactory.getCurrentSession().delete(contact); } } } 

包pl.ivmx.contact.service;

 import java.util.List; import pl.ivmx.contact.form.Contact; public interface ContactService { public void addContact(Contact contact); public List listContact(); public void removeContact(Integer id); } 

包pl.ivmx.contact.service;

 import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import pl.ivmx.contact.dao.ContactDAO; import pl.ivmx.contact.form.Contact; @Service public class ContactServiceImpl implements ContactService { @Autowired private ContactDAO contactDAO; @Transactional public void addContact(Contact contact) { contactDAO.addContact(contact); } @Transactional public List listContact() { return contactDAO.listContact(); } @Transactional public void removeContact(Integer id) { contactDAO.removeContact(id); } } 

包pl.ivmx.contact.form;

 import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="CONTACTS") public class Contact { @Id @Column(name="ID") @GeneratedValue private Integer id; @Column(name="FIRSTNAME") private String firstname; @Column(name="LASTNAME") private String lastname; @Column(name="EMAIL") private String email; @Column(name="TELEPHONE") private String telephone; public String getEmail() { return email; } public String getTelephone() { return telephone; } public void setEmail(String email) { this.email = email; } public void setTelephone(String telephone) { this.telephone = telephone; } public String getFirstname() { return firstname; } public String getLastname() { return lastname; } public void setFirstname(String firstname) { this.firstname = firstname; } public void setLastname(String lastname) { this.lastname = lastname; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } } 

    contextConfigLocation WEB-INF/applicationContext.xml   org.springframework.web.context.ContextLoaderListener   dispatcher org.springframework.web.servlet.DispatcherServlet 1   dispatcher *.do   dispatcher *.html   /pages/index.jsp  

applicationContext.xml中

     <!--     -->         <!--  -->        org.hibernate.cfg.AnnotationConfiguration  <!--   org.hibernate.dialect.MySQLDialect true     pl.ivmx.model.UserTest   -->     

调度员servlet.xml中

   <!--  -->   /WEB-INF/pages/   .jsp                    userTest pl.ivmx.model.UserTest  registration registrationsuccess             

它看起来像这里的方法抛出的NullPointerException:

 @RequestMapping("/contact") public String listContacts(Map map) { map.put("contact", new Contact()); map.put("contactList", contactService.listContact()); return "/contact"; } 

我会调试并检查contactService是否已正确自动assembly。

空指针是第26行,如果这是包含contactService.listContact()的行,则contactService为null。 如果是上面的行,那么map为空。

我不确定但是尝试添加:

对于dispatcher-servlet.xml,也可能是注释没有得到处理

你在方法中返回"/contact"作为要显示的视图:

 @RequestMapping("/contact") public String listContacts(Map map) { map.put("contact", new Contact()); map.put("contactList", contactService.listContact()); return "/contact"; // <---- here! } 

这意味着您应该在某处定义名为/ contact的视图,但我没有看到它。 您需要具有与您定义的值相对应的视图。

您可能希望返回"contact"而不是"/contact" ,然后在webapp / WEB-INF / views文件夹中使用contact.jsp(假设您使用maven标准目录布局)。

我没有看到任何明显的东西…… sessionFactory可以为null吗? 应该很容易找到。 逐步调试调试器中的代码。

我认为您缺少将contactService bean添加到applicationContext.xml尝试将以下内容添加到标记中