JavaEE開發使用Maven管理的SpringMVC工程


前幾篇博客已經陸陸續續的聊了一些Spring的東西,今天博客我們就來聊一下SpringMVCSpringMVC目前在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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM