Java+Spring:SEVERE Servletservice

2024-05-01

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

严重:路径 [/test] 上下文中 servlet [dispatcher] 的 Servlet.service() 抛出异常 [请求处理失败;嵌套异常是 java.lang.NullPointerException] 其根本原因 java.lang.NullPointerException 在 pl.ivmx.contact.controller.ContactController.listContacts(ContactController.java:26) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:601) 在 org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) 在org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436) 在org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424) 在 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 在 org.springframework.web.servlet.DispatcherServlet.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) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 在org.apache.catalina.valves.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$SocketProcessor.run(JIoEndpoint.java:312) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 在 java.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<String, Object> 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<Contact> 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<Contact> 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<Contact> 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<Contact> 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;
    }
}

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>WEB-INF/applicationContext.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener> 

    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>


    <welcome-file-list>
        <welcome-file>/pages/index.jsp</welcome-file>
    </welcome-file-list>

应用程序上下文.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:security="http://www.springframework.org/schema/security"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.1.xsd
        http://www.springframework.org/schema/security
        http://www.springframework.org/schema/security/spring-security-3.0.xsd">

    <context:annotation-config />
    <context:component-scan base-package="pl.ivmx.contact" />  

<!--    <bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="messages_en.properties" />
        <property name="defaultEncoding" value="UTF-8" />
    </bean> -->


    <import resource="commonContext.xml" />

    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>

    <bean id="userTestDao" class="pl.ivmx.dao.impl.UserTestDaoImpl">
    <!--     <property name="dataSource" ref="dataSource" />   -->
        <property name="sessionFactory" ref="sessionFactory" />             
    </bean>

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >

    <!--    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> -->
        <property name="dataSource" ref="dataSource" />                 
         <property name="configLocation" value="META-INF/hibernate.cfg.xml" />    
        <property name="configurationClass">
            <value>org.hibernate.cfg.AnnotationConfiguration</value>
        </property>
    <!--    <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>      
            </props>
        </property>         
        <property name="annotatedClasses">
            <list>
                <value>pl.ivmx.model.UserTest</value>
            </list>
        </property>    -->     
    </bean>    


    <bean id="transactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

调度程序-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:tx="http://www.springframework.org/schema/tx"                                 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.1.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

<!--  <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />    -->

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix">
            <value>/WEB-INF/pages/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>

    <bean id="urlMapping"
        class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

        <property name="urlMap">
            <map>
                <entry key="/index.do"> <ref bean="index" /></entry>
                <entry key="/registration.do"> <ref bean="registration" /></entry>
                <entry key="/usertestlist.do"> <ref bean="usertest" /></entry>  
                <entry key="/contact.do"> <ref bean="contact" /></entry>        
            </map>
        </property>
    </bean>

    <bean id="index" class="pl.ivmx.web.IndexController"/>

        <bean id="registrationValidator" class="pl.ivmx.validation.RegistrationValidator" />  
        <bean id="registration" class="pl.ivmx.web.RegistrationFormController" >                 
            <property name="commandName"><value>userTest</value></property> 
            <property name="commandClass"><value>pl.ivmx.model.UserTest</value></property> 
            <property name="validator"><ref local="registrationValidator"/></property>  
            <property name="formView"><value>registration</value></property> 
            <property name="successView"><value>registrationsuccess</value></property> 
            <property name="userTestDao"><ref bean="userTestDao"/></property>               
        </bean>     

        <bean id="usertest" class="pl.ivmx.web.UserTestController">                  
             <property name="userTestDao"><ref bean="userTestDao"/></property>          
        </bean>     

    <bean id="contact" class="pl.ivmx.contact.controller.ContactController">
    </bean>

    <bean id="contactService" class="pl.ivmx.contact.service.ContactServiceImpl">
    </bean>
    <bean id="contactDAO" class="pl.ivmx.contact.dao.ContactDAOImpl">
    </bean>

</beans>

它看起来像是在此处的方法中抛出的 NullPointerException:

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

    return "/contact";
}

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

空指针是第 26 行,如果该行包含contactService.listContact()那么 contactService 为空。如果是上面的行那么map一片空白。

我不确定,但尝试添加:

<context:component-scan base-package="pl.ivmx.contact" />

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java+Spring:SEVERE Servletservice 的相关文章

随机推荐

  • Python 中 iter 函数的第二个参数是什么?

    让我们考虑一个文件 echo e This is a foo bar sentence nAnd this is the first txtfile in the corpus gt test txt cat test txt This i
  • jQuery 中如何查找具有特定 id 的 div 是否存在?

    我有一个附加一个函数 div 到单击时的元素 该函数获取单击元素的文本并将其分配给名为的变量name 然后将该变量用作 div id附加元素的 我需要看看是否 div id with name在我追加元素之前已经存在 但我不知道如何找到它
  • STL容器如何复制对象?

    我知道 STL 容器 比如vector添加对象时复制该对象 push back方法如下 void push back const T x 我很惊讶地发现它把该项目作为参考 我编写了一个示例程序来看看它是如何工作的 struct Foo Fo
  • 将多嵌套 dict/json 加载到 pandas 中

    我正在尝试加载一个非常令人困惑的多重嵌套JSON变成熊猫 我已经在使用了json 规范化 http pandas pydata org pandas docs stable reference api pandas io json json
  • 如何为 ActionBar 的 ActionMode 背景设置动画?

    背景 可以更改操作栏的背景 甚至可以在两种颜色之间设置动画 如下所示 public static void animateBetweenColors final ActionBar actionBar final int colorFrom
  • Intellij IDEA 无法使用 Play 框架解析符号

    我正在使用 IDEA 13 和 Play 2 2 1 并且正在做示例游玩地点 http www playframework com documentation 2 2 x JavaTodoList public static Result
  • Lua :: 如何编写加载多个CPU的简单程序?

    我还无法用 Lua 编写一个可以加载多个 CPU 的程序 自从Lua通过协程支持这个概念 http www lua org pil 9 4 html 我相信这是可以实现的 我失败的原因可能是以下之一 这在Lua中是不可能的 我写不出来 an
  • Android 为多个活动存储 Socket.io 对象

    我正在制作我的第一个基于 Socket io 的 Android 应用程序 套接字从 Web 服务发送和接收数据 应用程序中有许多屏幕用于不同的功能 我如何在这些不同的活动中使用相同的套接字连接 我尝试在 Application 类中设置和
  • 常量正确性和硬件写入

    假设我有以下成员函数 void CFoo regWrite int addr int data reg write addr data driver call to e g write a firmware register 显然 调用此函
  • 附加到 group_vars 中的 Ansible 字典而不使用 hash_behaviour = merge

    我想定义一个字典变量 各个主机组可以将自己的密钥添加到其中在group vars中 不使用set fact 例如 像这样的东西 group vars ftp servers yml important ports ftp 21 group
  • 不可编辑的文本字段

    我是新来的YII 我想知道文本字段是否YII可以设为不可编辑 如果是的话有人可以回答吗 我按照下面的方法 这是行不通的 Use readonly instead http www w3 org TR html401 interact for
  • Python脚本仅在Docker中产生僵尸进程

    我有相当复杂的设置 Luigi https github com spotify luigi https github com spotify luigi https github com kennethreitz requests htm
  • 如何从 ViewController 中的 NSOutlineView 捕获 doubleClick 事件?

    我正在尝试从 NSOutlineView 捕获 doubleClick 事件并将其传递给 ViewController 我的想法是捕获 doubleClick 事件并从 OutlineView 中获取所选行 到目前为止我所做的是子类化 NS
  • 如何使用 CSS 在 HTML H2 之前添加数字?

    我正在努力创造一个好看的H2HTML 和 CSS 中的标题将允许我在实际标题文本之前有一个格式良好的数字 如下图所示 图像中的示例使用如下所示的 CSS 代码 效果很好 只是我无法在 HTML 中设置橙色圆圈中的数字值 h2 before
  • ActiveX 组件无法创建对象

    我收到错误 ActiveX 组件无法创建对象 实际上 我有业务逻辑所在的 VB6 DLL 并且我在 VB NET 应用程序中调用该 DLL 函数 所有 DLL 都依赖于其他 DLL 我从其中一个 DLL 中收到错误 有任何想法吗 通常该错误
  • Eclipse RCP View 在应用程序启动时不显示

    我现在面临这个问题大约一个小时 我不知道我做错了什么 您看到我的plugin xml 代码中的错误了吗
  • (不再寻求答案)消息框内的Python输入框

    有什么方法可以在使用 ctypes 库打开的消息框内输入框吗 到目前为止我有 import ctypes messageBox ctypes windll user32 MessageBoxA title Title text Messag
  • Java方法关键字“final”及其使用

    当我创建复杂类型层次结构 多个级别 每个级别几种类型 时 我喜欢使用final实现某些接口声明的方法上的关键字 一个例子 interface Garble int zork interface Gnarf extends Garble Th
  • 为什么这个标题图形不随世界更新

    对于以下内容 我很高兴组合框默认为世界 但当收音机被点击时 我也希望标题移回 世界 我该怎么做 我有这个笨蛋 http plnkr co edit 9FXJXVqLZLPFdDrmVJez p preview http plnkr co e
  • Java+Spring:SEVERE Servletservice

    我不知道我出了什么问题listContacts在控制器中map put contactList contactService listContact 有人可以帮助我吗 严重 路径 test 上下文中 servlet dispatcher 的