前幾篇博客已經(jīng)陸陸續(xù)續(xù)的聊了一些Spring的東西,今天博客我們就來聊一下SpringMVC。SpringMVC目前在JavaEE開發(fā)中可謂占據(jù)一席之地,用起來也是比較順手的。低耦合,高內(nèi)聚,利用一些注解以及Java配置類就能很好的實現(xiàn)解耦。今天我們就來看一下如何使用Maven來配置SpringMVC, 然后在我們的Web工程中進行使用。
本篇博客是上一篇博客的續(xù)寫,在上篇博客中我們詳細的講了Java環(huán)境的配置,Java EE版本的Eclipse的安裝、Maven的安裝與配置,Tomcat的安裝與配置。并且為我們的Eclipse安裝了M2Eclipse以及STS插件。并且創(chuàng)建運行了一個Maven管理的Web App。本篇博客就是基于上篇博客所創(chuàng)建的Web App工程來實現(xiàn)的,關(guān)于上篇博客的詳細內(nèi)容,請移步于《JavaEE開發(fā)基于Eclipse的環(huán)境搭建以及Maven Web App的創(chuàng)建》。
一、引入SpringMVC前的準備
上篇博客我們以及創(chuàng)建了Maven管理的Web App了,下方的內(nèi)容就是我們SpringMVC的東西了。我們創(chuàng)建的工程中,還少一個目錄。在SpringMVC中還有一個src/test/resources目錄,而我們剛才創(chuàng)建的工程中是沒有的,所以我們得創(chuàng)建該目錄,首先右鍵單擊Java Resources -> New -> Source Folder。具體如下所示:
然后選擇我們的工程以及輸入我們的Folder name即可,具體如下所示。
添加完該目錄后,我們需要編輯一下上面創(chuàng)建的目錄的Output folder。我們可以先看一下src/test/java目錄的Output folder, 是taget/test-classes。 我們新添加的src/test/resouces也需要設(shè)置成target/test-classes。我們需要選中該條目然后進行編輯即可,如下所示。
編輯的時候選擇test-classes即可,然后點擊OK完成設(shè)置,具體如下所示:
二、通過Maven配置SpringMVC
上面的準備工作已就緒,接下來我們就該來使用Maven來配置我們的SpringMVC了。本部分我們會在pom.xml中添加SpringMVC以及其依賴的庫,然后就是通過Java配置的形式來引入我們的SpringMVC相關(guān)的東西,最后給出一個簡單的使用實例。
1.在pom.xml中配置依賴庫
關(guān)于Maven的pom.xml的配置在此就不做過多贅述了,Maven官網(wǎng)(http://maven.apache.org/)上有詳細的實例。其中的POM Reference 給出了具體的Pom配置解決方案,特別全。那不會查哪兒,所以本篇博客關(guān)于pom.xml的配置就不做過多贅述了,更詳盡的內(nèi)容請移步與官網(wǎng)。
Maven所支持的第三方庫可以在http://mvnrepository.com/中查到,你可以在搜索欄中搜索你想要的庫,并且獲取相應(yīng)的版本。如下所示:
首先在pom.xml中添加一些屬性,這些屬性會在配置依賴庫時使用到,大部分是一些依賴庫的版本。這些屬性的作用類似于宏定義的東西,便于我們后期版本變更。下方就是我們本篇博客所涉及工程的所有屬性,如下所示:
然后添加單元測試的依賴也spring-webmvc的依賴,具體如下所示。下方在配置spring-webmvc是用到了上面我們定義的spring-version。
然后添加jstl模板庫、servlet以及jsp依賴庫,如下所示。當然不同的庫對應(yīng)這不同的版本屬性值,如下所示:
然后添加SLF4J和LogBack來輸出日志,如下所示:
最后就是添加我們的Maven插件了,該插件的版本就是我們之前安裝的M2Eclipse插件的版本,如下所示:
下方是我們本篇博客所涉及工程的pom.xml的完整內(nèi)容:
pom.xml
配置完畢后,我們會在目錄中看到我們工程中所依賴的包,如下所示:
2.配置我們的SpringMVC
首先在src/main/java目錄中創(chuàng)建一個包,用來存放SpringMVC相關(guān)的東西。然后在包中創(chuàng)建一個Java類,我們將該類命名為SpringMVCConfig。然后使用Spring的@Configuration注解將其聲明為配置類,然后使用@EnableWebMvc開啟WebMvc。然后在Java配置文件中配置InternalResourceViewResolver類的Bean。此處簡單的說就是我們配置了一個JSP的View Resolver。如下所示。
該類中相應(yīng)的代碼如下:
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后,我們還需要創(chuàng)建一個Web初始化的一個類。也就是WebInitalier。下方就是該類的創(chuàng)建過程,我們在創(chuàng)建該類是,需要實現(xiàn)springframework中的WebApplicationInitializer接口,如下所示:
在該類中所做的事情也是比較簡單的,賦值加載Spring配置的上下文,然后與ServletContext進行關(guān)聯(lián)。然后創(chuàng)建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.創(chuàng)建Controller
在配置完畢后,接下來就開始創(chuàng)建我們的Controller了。在springmvc包下面創(chuàng)建一個web包,然后創(chuàng)建一個Controller類。此處我們聲明為FirstController,如下所示。然后使用@Controller注解告訴Spring框架這是一個Controller類。
在這個Controller類中,有一個success()賦值映射,當用戶訪問/index路由時會映射到index.jsp頁面上。如下所示。
5.創(chuàng)建index.jsp
最后就是創(chuàng)建我們的jsp頁面了。我們的jsp頁面是放在src/main/resources目錄下的,在其中創(chuàng)建一個views來容納前端頁面,我們在其中創(chuàng)建一個index.jsp頁面。當然在創(chuàng)建該頁面時,需要將webapp下面的index.jps頁面刪除掉,然后在index.jsp頁面中添加一些div和和樣式。
6.運行
經(jīng)過上面的所有步驟,接下來就是我們最終熱淚盈眶勝利的時刻了。選擇我們的Tomcat服務(wù)器進行項目的運行,如果你看到下方的頁面,說明你之前的配置是正確的,SpringMVC的引入和配置暫時告一段落了。下方就是這個期盼已久的頁面。
關(guān)于日志的配置在此就不做過多贅述了,本篇博客所涉及的Demo依然會在github上進行分享。
github-Demo源碼分享地址:https://github.com/lizelu/SpringMVCWithMaven
作者:青玉伏案