前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring 4 MVC example with Maven - [Source Code Download]

Spring 4 MVC example with Maven - [Source Code Download]

作者头像
Hongten
发布2018-09-13 10:37:49
3520
发布2018-09-13 10:37:49
举报
文章被收录于专栏:HongtenHongten

In this tutorial, we show you a Spring 4 MVC example, using Maven build tool.

Technologies used :

  1. Spring 4.3.0.RELEASE
  2. Maven 3
  3. JDK 1.8
  4. Eclipse Mars.2 Release (4.5.2)
  5. Boostrap 3

1. Project Structure

Download the project source code and review the project folder structure :

2. Maven

pom.xml template to quick start a Spring MVC project, it defines Spring 4 dependencies and Eclipse workspace configuration.

代码语言:javascript
复制
 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 3 
 4     <modelVersion>4.0.0</modelVersion>
 5     <groupId>com.b510.hongten</groupId>
 6     <artifactId>springmvc</artifactId>
 7     <packaging>war</packaging>
 8     <version>0.0.1-SNAPSHOT</version>
 9     <name>springmvc Maven Webapp</name>
10     <url>http://maven.apache.org</url>
11 
12 
13     <properties>
14         <project-name>springmvc</project-name>
15         <project-version>0.0.1-SNAPSHOT</project-version>
16         <java-version>1.8</java-version>
17         <org.springframework-version>4.3.0.RELEASE</org.springframework-version>
18     </properties>
19 
20 
21     <dependencies>
22         <!-- Spring MVC dependency -->
23         <dependency>
24             <groupId>org.springframework</groupId>
25             <artifactId>spring-webmvc</artifactId>
26             <version>${org.springframework-version}</version>
27         </dependency>
28         <dependency>
29             <groupId>javax.servlet</groupId>
30             <artifactId>javax.servlet-api</artifactId>
31             <version>3.0.1</version>
32             <scope>provided</scope>
33         </dependency>
34         <dependency>
35             <groupId>javax.servlet</groupId>
36             <artifactId>jstl</artifactId>
37             <version>1.2</version>
38         </dependency>
39 
40         <!-- log4j dependency-->
41         <dependency>
42             <groupId>log4j</groupId>
43             <artifactId>log4j</artifactId>
44             <version>1.2.17</version>
45         </dependency>
46 
47     </dependencies>
48 
49 
50     <build>
51         <finalName>${project-name}-${project-version}</finalName>
52         <pluginManagement>
53             <plugins>
54                 <plugin>
55                     <!-- Maven plugin -->
56                     <groupId>org.apache.maven.plugins</groupId>
57                     <artifactId>maven-compiler-plugin</artifactId>
58                     <version>2.3.2</version>
59                     <configuration>
60                         <source>${java-version}</source>
61                         <target>${java-version}</target>
62                     </configuration>
63                 </plugin>
64                 <plugin>
65                     <groupId>org.apache.maven.plugins</groupId>
66                     <artifactId>maven-war-plugin</artifactId>
67                     <version>2.4</version>
68                     <configuration>
69                         <warSourceDirectory>src/main/webapp</warSourceDirectory>
70                         <warName>${project-name}</warName>
71                         <failOnMissingWebXml>false</failOnMissingWebXml>
72                     </configuration>
73                 </plugin>
74             </plugins>
75         </pluginManagement>
76     </build>
77 </project>

3. Controller & Mapping

The @RequestMapping has been available since 2.5, but now enhanced to support REST style URLs.

代码语言:javascript
复制
 1 package com.b510.hongten.demo.web;
 2 
 3 import org.apache.log4j.Logger;
 4 import org.springframework.stereotype.Controller;
 5 import org.springframework.ui.Model;
 6 import org.springframework.web.bind.annotation.PathVariable;
 7 import org.springframework.web.bind.annotation.RequestMapping;
 8 import org.springframework.web.bind.annotation.RequestMethod;
 9 
10 import com.b510.hongten.demo.entity.Demo;
11 
12 /**
13  * @author Hongten
14  * @date Nov 19, 2017
15  */
16 @Controller
17 @RequestMapping("/demo")
18 public class DemoController {
19 
20     private static final Logger logger = Logger.getLogger(DemoController.class);
21     
22     @RequestMapping(value = "/show/{name}", method = RequestMethod.GET)
23     public String show(@PathVariable("name") String name, Model model) {
24         logger.info("name is " + name);
25         Demo demo = new Demo();
26         demo.setTitle("Spring MVC Demo");
27         demo.setName(name);
28         
29         model.addAttribute(demo);
30         return "demo/show";
31     }
32 
33     @RequestMapping(value = "/show", method = RequestMethod.GET)
34     public String show(Model model) {
35         logger.info("show method...");
36         Demo demo = new Demo();
37         demo.setTitle("Spring MVC Demo");
38         demo.setName("Hongten");
39         model.addAttribute("demo", demo);
40         return "demo/show";
41     }
42 
43 }

4. JSP Views

A JSP page(show.jsp) to display the value, and include bootstrap css and js.

代码语言:javascript
复制
 1 <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
 2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 3 <!DOCTYPE html>
 4 <html lang="en">
 5 <jsp:include page="/WEB-INF/views/common/common-libs.jsp" />
 6 <head>
 7 <title>Spring MVC Demo</title>
 8 </head>
 9 
10 <nav class="navbar navbar-inverse navbar-fixed-top">
11   <div class="container">
12     <div class="navbar-header">
13         <a class="navbar-brand" href="#">Spring MVC Demo</a>
14     </div>
15   </div>
16 </nav>
17 
18 <div class="jumbotron">
19   <div class="container">
20     <h1>${demo.title}</h1>
21     <p>
22         <c:if test="${not empty demo.name}">
23             Hello <font color='red'>${demo.name}</font>
24         </c:if>
25 
26         <c:if test="${empty demo.name}">
27             Welcome Welcome!
28         </c:if>
29     </p>
30     <p>
31     <a class="btn btn-primary btn-lg" href="./demo/show" role="button">Home</a>
32     </p>
33   </div>
34 </div>
35 
36 <div class="container">
37 
38   <div class="row">
39     <div class="col-md-4">
40         <h2>Heading</h2>
41         <p>Totoro</p>
42         <p>
43         <a class="btn btn-default" href="./demo/show/Totoro" role="button">View details</a>
44         </p>
45     </div>
46     <div class="col-md-4">
47         <h2>Heading</h2>
48         <p>Tome James</p>
49         <p>
50         <a class="btn btn-default" href="./demo/show/Tome James" role="button">View details</a>
51         </p>
52     </div>
53     <div class="col-md-4">
54         <h2>Heading</h2>
55         <p>John Mohanmode</p>
56         <p>
57         <a class="btn btn-default" href="./demo/show/John Mohanmode" role="button">View details</a>
58         </p>
59     </div>
60   </div>
61 
62   <hr>
63   <footer>
64     <p>© Hongten 2017</p>
65   </footer>
66 </div>
67 </body>
68 </html>

5. Spring XML Configuration

5.1. Enable component scanning, view resolver and resource mapping.

代码语言:javascript
复制
 1 <beans xmlns="http://www.springframework.org/schema/beans"
 2     xmlns:context="http://www.springframework.org/schema/context"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
 4     xsi:schemaLocation="
 5         http://www.springframework.org/schema/beans
 6         http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
 7         http://www.springframework.org/schema/mvc
 8         http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
 9         http://www.springframework.org/schema/context
10         http://www.springframework.org/schema/context/spring-context-3.2.xsd">
11 
12     <!-- Enable component scanning -->
13     <context:component-scan base-package="com.b510.hongten" />
14 
15     <!-- Enable annotation -->
16     <mvc:annotation-driven />
17 
18     <!-- Enable view resolver -->
19     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
20         <property name="prefix">
21             <value>/WEB-INF/views/</value>
22         </property>
23         <property name="suffix">
24             <value>.jsp</value>
25         </property>
26     </bean>
27 
28     <!-- Enable resource mapping -->
29     <mvc:resources mapping="/resources/**" location="/resources/" />
30 
31 </beans>

5.2. Declares a DispatcherServlet in web.xml. If the Spring XML configuration file is NOT specified, Spring will look for the {servlet-name}-servlet.xml.

In this example, Spring will look for the spring-web-servlet.xml file.

代码语言:javascript
复制
 1 <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 2     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 3           http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
 4     version="3.0">
 5 
 6     <servlet>
 7         <servlet-name>spring-web</servlet-name>
 8         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 9         <load-on-startup>1</load-on-startup>
10     </servlet>
11 
12     <servlet-mapping>
13         <servlet-name>spring-web</servlet-name>
14         <url-pattern>/</url-pattern>
15     </servlet-mapping>
16 
17 </web-app>

6. Build Project

6.1 Build the project in eclipse with maven

代码语言:javascript
复制
Right click project -> Run As -> Maven build...

6.2.Enter 'clean install' to build project.

代码语言:javascript
复制
clean install

6.3.Should see the 'BUILD SUCCESS' result.

7. Run Project on Tomcat Server

7.1.Select Servers tab and right click Tomcat v7.0 and select Add and Remove...

7.2.Add springmvc project to Tomcat.

7.3. Start Tomcat server.

8. Demo

The result like this:

代码语言:javascript
复制
http://localhost:8080/springmvc/

Click 'Home' button to go show page.

9. Source Code Download

The source code download below:

springmvc.zip

Good Luck!

E | hongtenzone@foxmail.com  B | http://www.cnblogs.com/hongten

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-11-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Project Structure
  • 2. Maven
  • 8. Demo
  • 9. Source Code Download
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档