您的位置:首页 > 博客中心 > 数据库 >

Spring Data MongoDB example with Spring MVC 3.2

时间:2022-03-14 02:33

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 gxlsystem.com,布布扣

 

Spring Data MongoDB Spring MVC 3.2 Example App


You can view or download the full project code at

热门排行

今日推荐

热门手游