前几篇博客已经陆陆续续的聊了一些Spring的东西,今天博客我们就来聊一下SpringMVC。SpringMVC目前在JavaEE开发中可谓占据一席之地,用起来也是比较顺手的。低耦合,高内聚,利用一些注解以及Java配置类就能很好的实现解耦。今天我们就来看一下如何使用Maven来配置SpringMVC, 然后在我们的Web工程中进行使用。

本篇博客是上一篇博客的续写,在上篇博客中我们详细的讲了Java环境的配置,Java EE版本的Eclipse的安装、Maven的安装与配置,Tomcat的安装与配置。并且为我们的Eclipse安装了M2Eclipse以及STS插件。并且创建运行了一个Maven管理的Web App。本篇博客就是基于上篇博客所创建的Web App工程来实现的,关于上篇博客的详细内容,请移步于《JavaEE开发基于Eclipse的环境搭建以及Maven Web App的创建》。

一、引入SpringMVC前的准备

上篇博客我们以及创建了Maven管理的Web App了,下方的内容就是我们SpringMVC的东西了。我们创建的工程中,还少一个目录。在SpringMVC中还有一个src/test/resources目录,而我们刚才创建的工程中是没有的,所以我们得创建该目录,首先右键单击Java Resources -> New -> Source Folder。具体如下所示:

  

然后选择我们的工程以及输入我们的Folder name即可,具体如下所示。

  

添加完该目录后,我们需要编辑一下上面创建的目录的Output folder。我们可以先看一下src/test/java目录的Output folder, 是taget/test-classes。 我们新添加的src/test/resouces也需要设置成target/test-classes。我们需要选中该条目然后进行编辑即可,如下所示。

  

编辑的时候选择test-classes即可,然后点击OK完成设置,具体如下所示:

  

二、通过Maven配置SpringMVC

上面的准备工作已就绪,接下来我们就该来使用Maven来配置我们的SpringMVC了。本部分我们会在pom.xml中添加SpringMVC以及其依赖的库,然后就是通过Java配置的形式来引入我们的SpringMVC相关的东西,最后给出一个简单的使用实例。

1.在pom.xml中配置依赖库

关于Maven的pom.xml的配置在此就不做过多赘述了,Maven官网(http://maven.apache.org/)上有详细的实例。其中的POM Reference 给出了具体的Pom配置解决方案,特别全。那不会查哪儿,所以本篇博客关于pom.xml的配置就不做过多赘述了,更详尽的内容请移步与官网。

  

Maven所支持的第三方库可以在http://mvnrepository.com/中查到,你可以在搜索栏中搜索你想要的库,并且获取相应的版本。如下所示:

  

首先在pom.xml中添加一些属性,这些属性会在配置依赖库时使用到,大部分是一些依赖库的版本。这些属性的作用类似于宏定义的东西,便于我们后期版本变更。下方就是我们本篇博客所涉及工程的所有属性,如下所示:

  

然后添加单元测试的依赖也spring-webmvc的依赖,具体如下所示。下方在配置spring-webmvc是用到了上面我们定义的spring-version。

  

然后添加jstl模板库、servlet以及jsp依赖库,如下所示。当然不同的库对应这不同的版本属性值,如下所示:

  

然后添加SLF4J和LogBack来输出日志,如下所示:

  

最后就是添加我们的Maven插件了,该插件的版本就是我们之前安装的M2Eclipse插件的版本,如下所示:

  

下方是我们本篇博客所涉及工程的pom.xml的完整内容:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zeluli</groupId>
<artifactId>SpringMVCWithMaven</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>SpringMVCWithMaven Maven Webapp</name>
<url>http://maven.apache.org</url> <properties>
<!-- Generic properties -->
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!-- web -->
<jsp.version>2.2</jsp.version>
<jstl.version>1.2</jstl.version>
<servlet.version>3.1.0</servlet.version> <!-- Spring -->
<spring.version>4.3.6.RELEASE</spring.version> <!-- Logging -->
<logback.version>1.2.1</logback.version>
<slf4j.version>1.7.21</slf4j.version>
</properties> <dependencies> <!--单元测试的依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency> <!-- Spring MVC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency> <!-- Web依赖 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency> <dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet.version}</version>
<scope>provided</scope>
</dependency> <dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>${jsp.version}</version>
<scope>provided</scope>
</dependency> <!-- 添加对象向json或xml转换的支持 -->
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-xml -->
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.8.6</version>
</dependency> <!-- 添加json数据绑定支持 -->
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.6</version>
</dependency> <!-- 使用SLF4J和LogBack作为日志 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>${logback.version}</version>
</dependency> </dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-complier-plugin</artifactId>
<version>3.3.9</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
<finalName>SpringMVCWithMaven</finalName>
</build>
</project>

pom.xml

配置完毕后,我们会在目录中看到我们工程中所依赖的包,如下所示:

  

2.配置我们的SpringMVC

首先在src/main/java目录中创建一个包,用来存放SpringMVC相关的东西。然后在包中创建一个Java类,我们将该类命名为SpringMVCConfig。然后使用Spring的@Configuration注解将其声明为配置类,然后使用@EnableWebMvc开启WebMvc。然后在Java配置文件中配置InternalResourceViewResolver类的Bean。此处简单的说就是我们配置了一个JSP的View Resolver。如下所示。

  

该类中相应的代码如下:

package com.zeluli.springmvc;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView; @Configuration
@EnableWebMvc
@ComponentScan("com.zeluli.springmvc")
public class SpringMVCConfig extends WebMvcConfigurerAdapter { @Bean
public InternalResourceViewResolver viewResolver(){
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/classes/views/");
viewResolver.setSuffix(".jsp");
viewResolver.setViewClass(JstlView.class);
return viewResolver;
} }

3、Web初始化

配置完我们的Spring后,我们还需要创建一个Web初始化的一个类。也就是WebInitalier。下方就是该类的创建过程,我们在创建该类是,需要实现springframework中的WebApplicationInitializer接口,如下所示:

  

在该类中所做的事情也是比较简单的,赋值加载Spring配置的上下文,然后与ServletContext进行关联。然后创建SpringMVC的DispatcherServlet。

  

上述类的完整代码如下:

package com.zeluli.springmvc;

import javax.servlet.ServletRegistration.Dynamic;
import javax.servlet.ServletContext;
import javax.servlet.ServletException; import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet; public class WebInitializer implements WebApplicationInitializer { public void onStartup(ServletContext servletContext) throws ServletException { AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.register(SpringMVCConfig.class);
context.setServletContext(servletContext); Dynamic servlet = (Dynamic) servletContext.addServlet("dispatcher", new DispatcherServlet(context));
servlet.addMapping("/");
servlet.setLoadOnStartup(1); } }

4.创建Controller

在配置完毕后,接下来就开始创建我们的Controller了。在springmvc包下面创建一个web包,然后创建一个Controller类。此处我们声明为FirstController,如下所示。然后使用@Controller注解告诉Spring框架这是一个Controller类。

在这个Controller类中,有一个success()赋值映射,当用户访问/index路由时会映射到index.jsp页面上。如下所示。

  

5.创建index.jsp

最后就是创建我们的jsp页面了。我们的jsp页面是放在src/main/resources目录下的,在其中创建一个views来容纳前端页面,我们在其中创建一个index.jsp页面。当然在创建该页面时,需要将webapp下面的index.jps页面删除掉,然后在index.jsp页面中添加一些div和和样式。

  

6.运行

经过上面的所有步骤,接下来就是我们最终热泪盈眶胜利的时刻了。选择我们的Tomcat服务器进行项目的运行,如果你看到下方的页面,说明你之前的配置是正确的,SpringMVC的引入和配置暂时告一段落了。下方就是这个期盼已久的页面。

  

关于日志的配置在此就不做过多赘述了,本篇博客所涉及的Demo依然会在github上进行分享。

github-Demo源码分享地址:https://github.com/lizelu/SpringMVCWithMaven

JavaEE开发使用Maven管理的SpringMVC工程的更多相关文章

  1. 什么是maven与maven的使用过程(例如在idea创建maven工程(重点讲讲idea创建使用maven管理的web工程,并且部署到tomcat上))

    什么是maven与maven的使用过程(例如在idea创建maven工程) (重点讲讲idea创建使用maven管理的web工程项目,并且部署到tomcat服务器上) 一.什么是maven? 1, M ...

  2. Spring-在IDEA2016中创建maven管理的SpringMVC项目

    这是一套我自己摸索出来的创建项目方法,基本是用在创建用maven管理的 Spring+SpringMVC+Mybatis的J2EE项目时. 创建一个maven管理的webapp项目 在创建项目时,选择 ...

  3. JavaEE开发基于Eclipse的环境搭建以及Maven Web App的创建

    本篇博客就完整的来聊一下如何在Eclipse中创建的Maven Project.本篇博客是JavaEE开发的开篇,也是基础.本篇博客的内容干货还是比较多的,而且比较实用,并且都是采用目前最新版本的工具 ...

  4. JavaEE开发之基于Eclipse的环境搭建以及Maven Web App的创建

    本篇博客就完整的来聊一下如何在Eclipse中创建的Maven Project.本篇博客是JavaEE开发的开篇,也是基础.本篇博客的内容干货还是比较多的,而且比较实用,并且都是采用目前最新版本的工具 ...

  5. 从零开始新建一个Maven 、springMVC工程

    相关代码:http://pan.baidu.com/s/1jIBUr1G 目标: 新建一个名为testSpringMvc的spring MVC工程,maven管理jar包: 1.新建maven管理的w ...

  6. Eclipse中发布Maven管理的Web项目时找不到类的问题根源和解决办法(转)

    转自:http://blog.csdn.net/lvguanming/article/details/37812579?locationNum=12 写在前面的话 现在是越来越太原讨厌Eclipse这 ...

  7. eclipse 创建maven 项目 动态web工程完整示例 maven 整合springmvc整合mybatis

    接上一篇: eclipse 创建maven 项目 动态web工程完整示例 eclipse maven工程自动添加依赖设置 maven工程可以在线搜索依赖的jar包,还是非常方便的 但是有的时候可能还需 ...

  8. 使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(二)

    前言:在使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(一)中已经介绍了如何对web基础环境进行搭建,这里主要演示,如何对spring环境进行搭建,然后 ...

  9. IntelliJ IDEA 开发工具项目maven管理

    今天自己重新部署一下intellij下的项目开发环境,顺便把maven管理项目jar包的方法梳理一下 (1)首先下载apache-maven-3.0.4版本的maven,我自己解压在D:\maven\ ...

随机推荐

  1. 第22篇 js中的this指针的用法

    前面把js的相关知识总结了下,今天把js中的上下文的this,对于强类型语言,this的用法非常的单一,因为他们没有js特有的动态绑定. 首先看下面代码: function funcA() { thi ...

  2. 深入理解 JavaScript 异步系列(1)—— 什么是异步

    前言 2014年秋季写完了<深入理解javascript原型和闭包系列>,已经帮助过很多人走出了 js 原型.作用域.闭包的困惑,至今仍能经常受到好评的留言. 很早之前我就总结了JS三座大 ...

  3. KoaHub.js是基于 Koa.js 平台的 Node.js web 快速开发框架

    koahubjs KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Function, Class, A ...

  4. WeMall微信商城源码插件会员卡代码详情

    WeMall微信商城源码插件会员卡代码是用于商业推广的比较有效的方式,分享了部分比较重要的代码,供技术员学习参考 Index_index.html <html> <head> ...

  5. 1687: [Usaco2005 Open]Navigating the City 城市交通

    1687: [Usaco2005 Open]Navigating the City 城市交通 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 94  Sol ...

  6. node插件http-proxy实现反向代理

    最近自己动手做了一个微信小程序,是直接买的腾讯云的小程序解决方案,怎么说那,用起来还是会遇到不少问题的,不过在交流群里还是会有很多人帮助你的. 闲话少说,因为要再做一个别的服务,就想直接用这台小程序的 ...

  7. C++类对象大小的计算

    (一)常规类大小计算 C++类对象计算需要考虑很多东西,如成员变量大小,内存对齐,是否有虚函数,是否有虚继承等.接下来,我将对此举例说明. 以下内存测试环境为Win7+VS2012,操作系统为32位 ...

  8. JavaWeb之Ajax

    一.什么是Ajax 1.1.Ajax的定义 Ajax:(Asynchronous JavaScript And XML)指异步 JavaScript 及 XML 不是一种新的编程语言,而是一种用于创建 ...

  9. android:layout_gravity和android:gravity属性的区别1

    一.介绍: gravity的中文意思就是"重心",就是表示view横向和纵向的停靠位置 (1).android:gravity:是对view控件本身来说的,是用来设置view本身的 ...

  10. JS Math.round()方法原理

    请先测试代码: <!doctype html> <html lang="en"> <head> <meta charset="U ...