为什么我在使用Spring MVC + Hibernate应用程序的控制器中出现NullPointerException

Swikriti

这是我的控制器:

            package com.tec.controller;
            import org.springframework.beans.factory.annotation.Autowired;
            import org.springframework.context.annotation.Configuration;
            import org.springframework.stereotype.Controller;
            import org.springframework.ui.Model;
            import org.springframework.web.bind.annotation.RequestMapping;
            import org.springframework.web.servlet.ModelAndView;

            import com.tec.domain.RegisterDetails;
            import com.tec.service.RegisterServiceIfc;

            @Controller("registerServiceIfc")

            public class LoginRegisterController {


            private RegisterServiceIfc registerServiceIfc;
            @Autowired(required=true)


                @RequestMapping("/home.sahu")
                public ModelAndView helloWorld() {

                 return new ModelAndView();

                }

                 @RequestMapping("/registration.sahu")

                public ModelAndView LoginPage() {

                        return new ModelAndView();

                 }

                @RequestMapping("/registerDetails.sahu")
                public ModelAndView registerDetails(RegisterDetails perDetails,Model model) {

                    model.addAttribute("pb",perDetails);

                    registerServiceIfc.registerPerson(perDetails);// getting exception here.Its showing perDetails object is null

                    return new ModelAndView();

             }

            }

这是我的服务班级:

        package com.tec.service;

        import java.util.List;
        import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.stereotype.Service;
        import org.springframework.transaction.annotation.Transactional;

        import com.tec.dao.RegisterDaoIfc;
        import com.tec.domain.RegisterDetails;

        @Service("registerDaoIfc")

        public class RegisterServiceIfcImpl implements RegisterServiceIfc{


            private RegisterDaoIfc registerDaoIfc ;
            @Autowired(required=true)


            @Override
            @Transactional
            public void registerPerson(RegisterDetails perDetails) {


                registerDaoIfc.registerPerson(perDetails);
            }

            @Override
            @Transactional
            public List<RegisterDetails> getRegAllDetails() {
                return registerDaoIfc.getRegAllDetails();

            }

        }

这是我的道课:

    package com.tec.dao;

    import java.util.List;
    import org.hibernate.SessionFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Repository;
    import org.springframework.transaction.annotation.Transactional;

    import com.tec.domain.RegisterDetails;

    @Repository
    public class RegisterDaoIfcImpl implements RegisterDaoIfc{
        @Autowired(required=true)
        SessionFactory sessionFactory;


        @Override
        @Transactional
        public void registerPerson(RegisterDetails perDetails) {

              this.sessionFactory.getCurrentSession().save(perDetails);

        }

        @Override
        @Transactional
        public List<RegisterDetails> getRegAllDetails() {
            return this.sessionFactory.getCurrentSession().createCriteria(RegisterDetails.class).list();
        }

    }


    This is my POJO class:



    package com.tec.domain;

    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.Table;
    import javax.persistence.Column;


    @Entity
    @Table(name="registerdetails")
    public class RegisterDetails {


        @Id
         @GeneratedValue(strategy=GenerationType.IDENTITY)

       @Column(name = "pid")
       private String pid;

       @Column(name = "firstName")
       private String firstName;

       @Column(name = "lastName")
       private String lastName;

       @Column(name = "mobileNo")
       private String mobileNo;

       @Column(name = "email")
       private String email;

       @Column(name = "address")
       private String address;

       @Column(name = "landmark")
       private String landmark;

       @Column(name = "city")
       private String city;

       @Column(name = "state")
       private String state;

       @Column(name = "country")
       private String country;

       @Column(name = "pinno")
       private String pinno;



    public String getPid() {
        return pid;
    }

    public void setPid(String pid) {
        this.pid = pid;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getMobileNo() {
        return mobileNo;
    }

    public void setMobileNo(String mobileNo) {
        this.mobileNo = mobileNo;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getLandmark() {
        return landmark;
    }

    public void setLandmark(String landmark) {
        this.landmark = landmark;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    public String getPinno() {
        return pinno;
    }

    public void setPinno(String pinno) {
        this.pinno = pinno;
    }

       }



    This is my JSP page:



    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    <link href='http://fonts.googleapis.com/css?family=Pacifico' rel='stylesheet' type='text/css'>
      <link rel="stylesheet" href="css/style.css">

    </head>
    <body>


    <form action="registerDetails.sahu" class="elegant-aero">

    <h1>Registration Form
            <span>Please fill all the texts in the fields.</span>
        </h1>


        <label>
            <span>First Name :</span>

           <input type="text" name="firstName" id="firstName" value="${pb.firstName}">
        </label>


         <label>
            <span>Last Name :</span>
            <input type="text" name="lastName" id="lastName" value="${pb.lastName}">
        </label>

         <label>
            <span>Mobile No :</span>
          <input type="text" name="mobileNo" id="mobileNo" value="${pb.mobileNo}">
        </label>

         <label>
            <span>Email :</span>
          <input type="text" name="email" id="email" value="${pb.email}">
        </label>

         <label>
            <span>Address :</span>
           <input type="text" name="address" id="address" value="${pb.address}">
        </label>

         <label>
            <span>Landmark :</span>
           <input type="text" name="landmark" id="landmark" value="${pb.landmark}">
        </label>


     <label>
            <span>City :</span>
         <input type="text" name="city" id="city" value="${pb.city}">
        </label>

         <label>
            <span>State :</span>
      <input type="text" name="state" id="state" value="${pb.state}">
        </label>

         <label>
            <span>Country :</span>
       <input type="text" name="country" id="country" value="${pb.country}">
        </label>

         <label>
            <span>Pin No :</span>
       <input type="text" name="pinno" id="pinno" value="${pb.pinno}">
        </label>

          <label>
            <span>Register :</span>
       <input type="submit"  value="register"  class="button purple" >
        </label>

    </form>
    </body>
    </html>




This is my XML configuration file:



<?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:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       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.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">


 <context:component-scan base-package="com.tec.controller." />


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




    <!-- For Hibernate -->

    <bean id="propertyConfigurer"
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
          p:location="/WEB-INF/jdbc.properties"></bean>

    <bean id="dataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource"
          p:driverClassName="${jdbc.driverClassName}"
          p:url="${jdbc.databaseurl}" p:username="${jdbc.username}"
          p:password="${jdbc.password}"></bean>

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource"/>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.bytecode.use_reflection_optimizer">true</prop>
            <prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
            <prop key="hibernate.sql_comments">true</prop>
            <prop key="hibernate.format_sql">true</prop>
             <prop key="hibernate.hbm2ddl.auto">update</prop>
            </props>
        </property>

      <property name="annotatedClasses">
             <list> 
                <value>com.tec.domain.RegisterDetails</value>
                <value>com.tec.domain.StudentRegister</value>
            </list>
        </property>
    </bean>

 <tx:annotation-driven/>
    <bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

</beans>




This is my properties file for database:



jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.dialect=org.hibernate.dialect.MySQLDialect
jdbc.databaseurl=jdbc:mysql://localhost:3306/tecnics
jdbc.username=root
jdbc.password=root



This is my web.xml:


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

    <servlet>
        <servlet-name>swikriti</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>swikriti</servlet-name>
        <url-pattern>*.sahu</url-pattern>
    </servlet-mapping>
</web-app>

我收到以下异常:

严重:路径为[/ SpringTest]的上下文中的Servlet [swikriti]的Servlet.service()抛出异常[请求处理失败;嵌套的异常是java.lang.NullPointerException],其根本原因是com.tec.controller.LoginRegisterController.registerDetails(LoginRegisterController.java:48)处的com.tec.controller.LoginRegisterController.registerDetails(LoginRegisterController.java:48)处,sun.reflect处的本地原因org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod上的java.lang.reflect.Method.invoke上的.NativeMethodAccessorImpl.invoke(未知源) (HandlerMethodInvoker.java:710)位于org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:167)位于org.springframework.web.servlet.mvc.annotation。

我添加了以下库:

在此处输入图片说明

尼古拉·鲁塞夫(Nikolay Rusev)

当然perDetails对象会是null你错过了很多东西。

首先,在您的GET请求中,应在show web form方法中添加以下内容。同样在每个请求映射处理程序中,不仅返回相应的html视图ModelAndView()

     @RequestMapping(value= "/registration.sahu",method = RequestMethod.GET)
     public ModelAndView LoginPage(Model model) {
        RegisterDetails perDetails = new RegisterDetails();
        model.addAttribute("perDetailsForm", perDetails);
        return  new ModelAndview(model,"correspondingHtmlView");
     }

其次,您应该更改您的POST请求,以便它可以处理表单提交。添加Modelattribute到您的输入参数,它将html表单绑定到perDetails对象。

    @RequestMapping("/registerDetails.sahu")
    public ModelAndView registerDetails(@ModelAttribute("perDetailsForm") RegisterDetailsperDetails perDetails) {
        registerServiceIfc.registerPerson(perDetails);
        return new ModelAndView("viewname");
}

第三个也是最后一个是将您的表单从干净的html更改为spring表单。还添加spring taglibs!

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>

<form:form method="post" modelAttribute="perDetailsForm" action="actionUrl">
    <form:input path="property" type="text" /> <!-- bind to perDetail.property-->
</form:form>

是一个很好的教程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么在Spring MVC应用程序中创建两个Spring bean控制器实例?

来自分类Dev

构建Spring MVC应用程序,控制器“找不到符号”模型

来自分类Dev

映射到应用程序根目录的spring mvc控制器的操作

来自分类Dev

控制器如何与Extjs应用程序中的MVC一起使用

来自分类Dev

为什么脚手架MVC应用程序在控制器中具有数据访问权限

来自分类Dev

如何通过相同的控制器方法从我的Spring MVC应用程序的每个页面中返回变量?

来自分类Dev

我可以在spring mvc应用程序中合并控制器吗?如果可以,它将如何影响性能?

来自分类Dev

从MVC Web应用程序的MVC控制器获取用户名的代码是什么

来自分类Dev

在服务器上运行但未在devbox上运行的Spring MVC应用程序中出现404错误

来自分类Dev

在IIS7.5上部署mvc3应用程序后未击中我的控制器操作

来自分类Dev

如何将控制器 (MVC) 添加到我用 Java 编写的 JavaFX 应用程序中?

来自分类Dev

在Node.js应用程序(MVC架构)中确切代表控制器的是什么

来自分类Dev

Spring MVC与Web应用程序中的服务,控制器和数据访问层有何关系?

来自分类Dev

Spring MVC控制器未应用

来自分类Dev

如果我们打算继续使用单页面应用程序,为什么我们需要Spring MVC或Struts框架

来自分类Dev

如何在混合的Web API和MVC应用程序中使用Autofac解析Web API控制器?

来自分类Dev

MVC应用程序和控制器设计

来自分类Dev

即使我已登录,我的ASP.NET MVC应用程序也会在我访问家庭控制器时将我带回到登录页面。

来自分类Dev

为什么当我向Spring MVC应用程序提交表单时会获得此HTTP Status 404错误页面?

来自分类Dev

为什么在MVC应用程序中使用JSON?

来自分类Dev

Node应用程序中的MVC控制器,这些是控制器吗?

来自分类Dev

将应用程序启动方法中的Global.asax.cs文件变量传递给我的控制器asp.net mvc4

来自分类Dev

仅当我进入ASP .NET MVC 5.1应用程序中的“人员控制器”索引操作时,ApplicationDbContext种子才会启动

来自分类Dev

为什么我需要在应用程序中注入我想要的控制器?

来自分类Dev

为什么我的KendoGrid不叫我的MVC控制器?

来自分类Dev

为什么我不能在我的 MVC 控制器上声明多个方法?

来自分类Dev

使用Intellij 15创建新的Play应用程序时出现控制器问题

来自分类Dev

为什么我应该在ASP .Net MVC应用程序中使用HTTPContext会话状态移走表单?

来自分类Dev

为什么我应该在ASP .Net MVC应用程序中使用HTTPContext会话状态来移走表格?

Related 相关文章

  1. 1

    为什么在Spring MVC应用程序中创建两个Spring bean控制器实例?

  2. 2

    构建Spring MVC应用程序,控制器“找不到符号”模型

  3. 3

    映射到应用程序根目录的spring mvc控制器的操作

  4. 4

    控制器如何与Extjs应用程序中的MVC一起使用

  5. 5

    为什么脚手架MVC应用程序在控制器中具有数据访问权限

  6. 6

    如何通过相同的控制器方法从我的Spring MVC应用程序的每个页面中返回变量?

  7. 7

    我可以在spring mvc应用程序中合并控制器吗?如果可以,它将如何影响性能?

  8. 8

    从MVC Web应用程序的MVC控制器获取用户名的代码是什么

  9. 9

    在服务器上运行但未在devbox上运行的Spring MVC应用程序中出现404错误

  10. 10

    在IIS7.5上部署mvc3应用程序后未击中我的控制器操作

  11. 11

    如何将控制器 (MVC) 添加到我用 Java 编写的 JavaFX 应用程序中?

  12. 12

    在Node.js应用程序(MVC架构)中确切代表控制器的是什么

  13. 13

    Spring MVC与Web应用程序中的服务,控制器和数据访问层有何关系?

  14. 14

    Spring MVC控制器未应用

  15. 15

    如果我们打算继续使用单页面应用程序,为什么我们需要Spring MVC或Struts框架

  16. 16

    如何在混合的Web API和MVC应用程序中使用Autofac解析Web API控制器?

  17. 17

    MVC应用程序和控制器设计

  18. 18

    即使我已登录,我的ASP.NET MVC应用程序也会在我访问家庭控制器时将我带回到登录页面。

  19. 19

    为什么当我向Spring MVC应用程序提交表单时会获得此HTTP Status 404错误页面?

  20. 20

    为什么在MVC应用程序中使用JSON?

  21. 21

    Node应用程序中的MVC控制器,这些是控制器吗?

  22. 22

    将应用程序启动方法中的Global.asax.cs文件变量传递给我的控制器asp.net mvc4

  23. 23

    仅当我进入ASP .NET MVC 5.1应用程序中的“人员控制器”索引操作时,ApplicationDbContext种子才会启动

  24. 24

    为什么我需要在应用程序中注入我想要的控制器?

  25. 25

    为什么我的KendoGrid不叫我的MVC控制器?

  26. 26

    为什么我不能在我的 MVC 控制器上声明多个方法?

  27. 27

    使用Intellij 15创建新的Play应用程序时出现控制器问题

  28. 28

    为什么我应该在ASP .Net MVC应用程序中使用HTTPContext会话状态移走表单?

  29. 29

    为什么我应该在ASP .Net MVC应用程序中使用HTTPContext会话状态来移走表格?

热门标签

归档