zoukankan      html  css  js  c++  java
  • Spring Data MongoDB example with Spring MVC 3.2

    Spring Data MongoDB example with Spring MVC 3.2

    Here is another example web application built with Spring MVC 3.2 and Spring Data 1.2, integrating with the MongoDB document database.

    STEP 1: Create new webapp project, I will use maven for this. (Note: I am on my macbook with Maven 3 and Java 6 installed.)

    mvn archetype:generate
    -DgroupId=com.manishchhabra.blog
    -DartifactId=HelloSpringWithMongoDB
    -DarchetypeArtifactId=maven-archetype-webapp
    -DinteractiveMode=false

    You could create the maven project directly in your IDE as well. But I usually create it on the terminal and import it in eclipse by using the following command (Note: The following command is run within your newly created project directory, i.e. run -> cd HelloSpringWithMongoDB)

    mvn eclipse:eclipse -Dwtpversion=2.0

    STEP 2: Add Spring Framework 3.2 and Spring Data 1.2 dependencies to your pom.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>3.2.0.RELEASE</version>
    </dependency>
     
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>3.2.0.RELEASE</version>
    </dependency>
     
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-mongodb</artifactId>
        <version>1.2.0.RELEASE</version>
    </dependency>



    STEP 3: Update your web.xml (src/main/webapp/WEB-INF/web.xml) to use Spring’s DispatcherServlet

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <web-app 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_2_5.xsd"
            version="2.5">
     
      <display-name>Spring With MongoDB Web Application</display-name>
     
        <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>/</url-pattern>
        </servlet-mapping>
     
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
        </context-param>
     
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
     
    </web-app>




    STEP 4: Add your spring configuration to the dispatcher-servlet.xml

    • Use MongoFactoryBean to connect to the MongoDB instance.
    • Use MongoTemplate to connect and make queries to the database.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <?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:p="http://www.springframework.org/schema/p"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
     
        <context:component-scan base-package="com.manishchhabra.blog" />
     
        <!-- Factory bean that creates the Mongo instance -->
        <bean id="mongo" class="org.springframework.data.mongodb.core.MongoFactoryBean">
            <property name="host" value="localhost" />
        </bean>
         
        <!-- MongoTemplate for connecting and quering the documents in the database -->
        <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
            <constructor-arg name="mongo" ref="mongo" />
            <constructor-arg name="databaseName" value="test" />
        </bean>
     
        <!-- Use this post processor to translate any MongoExceptions thrown in @Repository annotated classes -->
        <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
         
             
        <bean id="jspViewResolver"
              class="org.springframework.web.servlet.view.InternalResourceViewResolver"
              p:prefix="/WEB-INF/jsp/"
              p:suffix=".jsp" />
     
    </beans>




    STEP 5: Create a model (using Person as an example), service and controller in the new source directory src/main/java
    Model

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    package com.manishchhabra.blog.model;
     
    import org.springframework.data.annotation.Id;
    import org.springframework.data.mongodb.core.mapping.Document;
     
    @Document
    public class Person {
     
        @Id
        private String id;
        private String name;
         
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }

    Service

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    package com.manishchhabra.blog.service;
     
    import java.util.List;
    import java.util.UUID;
     
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.mongodb.core.MongoTemplate;
    import org.springframework.stereotype.Repository;
     
    import com.manishchhabra.blog.model.Person;
     
    @Repository
    public class PersonService {
         
        @Autowired
        private MongoTemplate mongoTemplate;
         
        public static final String COLLECTION_NAME = "person";
         
        public void addPerson(Person person) {
            if (!mongoTemplate.collectionExists(Person.class)) {
                mongoTemplate.createCollection(Person.class);
            }      
            person.setId(UUID.randomUUID().toString());
            mongoTemplate.insert(person, COLLECTION_NAME);
        }
         
        public List<Person> listPerson() {
            return mongoTemplate.findAll(Person.class, COLLECTION_NAME);
        }
         
        public void deletePerson(Person person) {
            mongoTemplate.remove(person, COLLECTION_NAME);
        }
         
        public void updatePerson(Person person) {
            mongoTemplate.insert(person, COLLECTION_NAME);     
        }
    }

    Controller for the CRUD operations

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    package com.manishchhabra.blog.controller;
     
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.ModelMap;
    import org.springframework.util.StringUtils;
    import org.springframework.web.bind.annotation.ModelAttribute;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.servlet.View;
    import org.springframework.web.servlet.view.RedirectView;
     
    import com.manishchhabra.blog.model.Person;
    import com.manishchhabra.blog.service.PersonService;
        
    @Controller   
    public class PersonController { 
        
        @Autowired
        private PersonService personService;
         
        @RequestMapping(value = "/person", method = RequestMethod.GET) 
        public String getPersonList(ModelMap model) { 
            model.addAttribute("personList", personService.listPerson()); 
            return "output"
        
         
        @RequestMapping(value = "/person/save", method = RequestMethod.POST) 
        public View createPerson(@ModelAttribute Person person, ModelMap model) {
            if(StringUtils.hasText(person.getId())) {
                personService.updatePerson(person);
            } else {
                personService.addPerson(person);
            }
            return new RedirectView("/HelloSpringWithMongoDB/person"); 
        }
             
        @RequestMapping(value = "/person/delete", method = RequestMethod.GET) 
        public View deletePerson(@ModelAttribute Person person, ModelMap model) { 
            personService.deletePerson(person); 
            return new RedirectView("/HelloSpringWithMongoDB/person"); 
        }   
    }

    STEP 5: Create a JSP Page in the folder WEB-INF/jsp called output.jsp (This will currently invoke create and delete).

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <html>
    <body>
        <h2>Here is a simple CRUD using Spring MVC and MongoDB.</h2>
     
            <form action="person/save" method="post">
                <input type="hidden" name="id">
                <label for="name">Person Name</label>
                <input type="text" id="name" name="name"/>
                <input type="submit" value="Submit"/>
            </form>
     
        <table border="1">
            <c:forEach var="person" items="${personList}">
                <tr>
                    <td>${person.name}</td><td><input type="button" value="delete" onclick="window.location='person/delete?id=${person.id}'"/></td>
                </tr>
            </c:forEach>
        </table
    </body>
    </html>

    STEP 6: That’s it! Its time to run your project. You could either run directly from eclipse or you could run “mvn package” to build a war file and deploy it to your application server. I tested this on tomcat running on port 8080 (http://localhost:8080/HelloSpringWithMongoDB/person) and I could store and delete person with provided names. Working! yeah.. Here is a picture of me playing with the app :)

    Spring Data MongoDB Spring MVC 3.2 Example App

    Spring Data MongoDB Spring MVC 3.2 Example App


    You can view or download the full project code athttps://github.com/manishchhabra/HelloSpringWithMongoDB
  • 相关阅读:
    【蓝牙音箱】小米小爱蓝牙音箱
    table表格 td设置固定宽度
    VMware ESXi 客户端连接控制台时,提示“VMRC 控制台连接已断开...正在尝试重新连接”的解决方法
    redis-bitmap 命令使用的一些帖子
    TCP11种状态
    nginx--cookies转发
    MQTT协议介绍
    常用链路追踪工具
    常用字符串处理命令
    spring maven repository
  • 原文地址:https://www.cnblogs.com/fx2008/p/4099416.html
Copyright © 2011-2022 走看看