1. 程式人生 > >Spring MVC之最簡專案配置(全註解)

Spring MVC之最簡專案配置(全註解)

Environment:

Java 1.8.0_131
maven 3.5.0
InteliJ IDEA 2017.1.4
tomcat 8.5.15

簡介

Spring 的目的在於簡化Java EE應用程式的開發,依賴注入和AOP是它的核心。使用Spring可以大大的簡化開發,提高效率。
這篇文章記錄一下Spring MVC的全java配置方式。
Spring主要有兩種配置方式:

在XML中配置
使用Java配置

個人覺得使用Java配置更加好一些,它更加強大且型別安全。

配置方法

Java配置可以細分為兩種方式:顯示配置和隱式配置。隱式配置中,Spring通過兩個角度實現自動化裝配:

元件掃描:Spring自動發現應用上下文中建立的bean
自動裝配:Spring自動滿足bean之間的依賴。

更詳細的不多說了。

新建工程

  1. 使用mave新建一個工程,並使用模板
    這裡寫圖片描述

  2. 這裡寫圖片描述
  3. 可以根據自己的情況修改maven的配置和倉庫
    這裡寫圖片描述
    4.
    這裡寫圖片描述

  4. 新建工程後,等待模板載入完畢以及maven庫的載入,載入完成後為
    這裡寫圖片描述

  5. 建成後在pom.xml檔案中新增依賴的包
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId
>
spring-webmvc</artifactId> <version>4.3.8.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId
>
javax.servlet-api</artifactId> <version>3.1.0</version> </dependency>

開始配置

Spring的執行流程如下圖所示
這裡寫圖片描述
也就是我們需要配置上面這六個部分:

DispatcherServlet: 可以認為Spring MVC是從這裡開始正式執行的,作為中心
HandlerMapping: 也就是路由,這個在寫控制類的時候使用註解就配置好了,非常簡單
Controller:這個就是MVC中的C,邏輯控制
模型及檢視名:檢視名就是JSP檔名,模型就是向檢視中傳入的資料
ViewResolver:檢視解析器,用來解析檢視
View:也就是所寫的JSP解析後返回瀏覽器的檢視

其中handlerMapping、Controller、模型及檢視名最簡單的情況下都在一個Controller類中配置就可以了,View也就是寫JSP檔案。

配置DispatcherServlet和ViewResolver

新建一個java資料夾用來存放java檔案,並設定為原始檔目錄
這裡寫圖片描述

新建AppInitilizer.java 和WebConfig.java

// AppInitializer .java

public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    protected Class<?>[] getRootConfigClasses() {
        return new Class[0];
    }

    protected Class<?>[] getServletConfigClasses() {
        return new Class[] { WebConfig.class };
    }

    /**
     * 將DispatcherServlet對映到"/"
     */
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }
}

// WebConfig.java

@Configuration
@EnableWebMvc
@ComponentScan("me.firstsnow.controller")
public class WebConfig extends WebMvcConfigurerAdapter {

    /**
     * 配置JSP檢視解析器,根據控制類中返回的檢視名解析檢視
     * @return 檢視解析器
     */
    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();

        // 檢視放在 webapp/WEB-INF/views下
        viewResolver.setPrefix("/WEB-INF/views/");
        viewResolver.setSuffix(".jsp");
        viewResolver.setExposeContextBeansAsAttributes(true);

        return viewResolver;
    }

    /**
     * 配置靜態資源的處理
     */
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}

將檢視放到WEB-INF目錄下,禁止被直接訪問
現在的目錄結構為:
這裡寫圖片描述

配置Controller類

寫一個最簡單的首頁的Controller類放在controller目錄中

@Controller
@RequestMapping(value = "/")
public class HomeController {

    /**
     * GET方法訪問
     * @return index --> WEB_INF/views/index.jsp
     */
    @RequestMapping(method = RequestMethod.GET)
    public String home() {
        return "index";
    }
}

最後配置tomcat部署
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

最後執行,看到index.jsp中渲染的內容就成功了。