前幾篇博客已經(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。具體如下所示:

  萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

 

然后選擇我們的工程以及輸入我們的Folder name即可,具體如下所示。

  萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

 

添加完該目錄后,我們需要編輯一下上面創(chuàng)建的目錄的Output folder。我們可以先看一下src/test/java目錄的Output folder, 是taget/test-classes。 我們新添加的src/test/resouces也需要設(shè)置成target/test-classes。我們需要選中該條目然后進行編輯即可,如下所示。

  萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

 

編輯的時候選擇test-classes即可,然后點擊OK完成設(shè)置,具體如下所示:

  萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

 

二、通過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)。

  萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

 

Maven所支持的第三方庫可以在http://mvnrepository.com/中查到,你可以在搜索欄中搜索你想要的庫,并且獲取相應(yīng)的版本。如下所示:

  萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

 

 

首先在pom.xml中添加一些屬性,這些屬性會在配置依賴庫時使用到,大部分是一些依賴庫的版本。這些屬性的作用類似于宏定義的東西,便于我們后期版本變更。下方就是我們本篇博客所涉及工程的所有屬性,如下所示:

  萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

然后添加單元測試的依賴也spring-webmvc的依賴,具體如下所示。下方在配置spring-webmvc是用到了上面我們定義的spring-version。

  萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

然后添加jstl模板庫、servlet以及jsp依賴庫,如下所示。當然不同的庫對應(yīng)這不同的版本屬性值,如下所示:

  萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

 

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

  萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

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

  萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

下方是我們本篇博客所涉及工程的pom.xml的完整內(nèi)容:

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓 pom.xml

 

配置完畢后,我們會在目錄中看到我們工程中所依賴的包,如下所示:

  萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

 

2.配置我們的SpringMVC

首先在src/main/java目錄中創(chuàng)建一個包,用來存放SpringMVC相關(guān)的東西。然后在包中創(chuàng)建一個Java類,我們將該類命名為SpringMVCConfig。然后使用Spring的@Configuration注解將其聲明為配置類,然后使用@EnableWebMvc開啟WebMvc。然后在Java配置文件中配置InternalResourceViewResolver類的Bean。此處簡單的說就是我們配置了一個JSP的View Resolver。如下所示。

  萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

該類中相應(yīng)的代碼如下:

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

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;
    }    
    
}

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

 

3、Web初始化

配置完我們的Spring后,我們還需要創(chuàng)建一個Web初始化的一個類。也就是WebInitalier。下方就是該類的創(chuàng)建過程,我們在創(chuàng)建該類是,需要實現(xiàn)springframework中的WebApplicationInitializer接口,如下所示:

  萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

在該類中所做的事情也是比較簡單的,賦值加載Spring配置的上下文,然后與ServletContext進行關(guān)聯(lián)。然后創(chuàng)建SpringMVC的DispatcherServlet。

  萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

上述類的完整代碼如下:

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

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);

    }

}

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

 

 

4.創(chuàng)建Controller

在配置完畢后,接下來就開始創(chuàng)建我們的Controller了。在springmvc包下面創(chuàng)建一個web包,然后創(chuàng)建一個Controller類。此處我們聲明為FirstController,如下所示。然后使用@Controller注解告訴Spring框架這是一個Controller類。

在這個Controller類中,有一個success()賦值映射,當用戶訪問/index路由時會映射到index.jsp頁面上。如下所示。

  萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

 

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和和樣式。

  萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

 

6.運行

經(jīng)過上面的所有步驟,接下來就是我們最終熱淚盈眶勝利的時刻了。選擇我們的Tomcat服務(wù)器進行項目的運行,如果你看到下方的頁面,說明你之前的配置是正確的,SpringMVC的引入和配置暫時告一段落了。下方就是這個期盼已久的頁面。

  萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓 

關(guān)于日志的配置在此就不做過多贅述了,本篇博客所涉及的Demo依然會在github上進行分享。

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

作者:青玉伏案