1. 程式人生 > >springMVC筆記系列(17 特別篇的開始)——springMVC要點回顧及idea開發環境搭建

springMVC筆記系列(17 特別篇的開始)——springMVC要點回顧及idea開發環境搭建

這次文章是springMVC筆記系列時隔一年之後的繼續,但是我想先就其中的資料繫結寫一串博文。

首先,這裡做個插曲。之前的部落格文章用的IDE是STS(eclipse的子子孫孫),這次springMVC資料繫結的幾篇部落格文章,我的示例用的是intellj idea,所以,給不熟悉這個IDE工具的同學做個把屎把尿的插曲介紹。

這裡需要特別注意的是,idea和eclipse在一些概念上有區別,十分容易混淆,這裡做個說明:

eclipse idea
workspace project
project module
idea中的project相當於eclipse中的workspace,而idea中的module相當於eclipse中的project。但是在組織形式上也會有些許的不同,這個我們後面再說。

我們先在idea下把Maven webapp專案建好,步驟如圖,文字自行腦補。

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

(這裡說明一下,由於當中idea版本升過級,重新建了個專案所以這裡截圖看到的是ideaSpringMVC,其實應該是ideaSpringMVC2。)

idea新建maven webapp沒有src,要自己建,T T。

這裡寫圖片描述

這裡寫圖片描述
這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

idea建立的資料夾可以做用處標記,原始檔資料夾、資原始檔夾等等。不然右擊資料夾新建的時候會找不到相應的模板。

這裡寫圖片描述

方便還是挺方便的。

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

我們在com.happyBKs.controller下定義一個類TestController,用@Controller註解標記為一個控制器。我

package com.happyBKs.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * Created by happyBKs on 2016/5/24.
 */

@Controller
@RequestMapping("/hello")
public class TestController {

    //localhost:8080/home/mvc或localhost:8080/web應用名稱/home/mvc
@RequestMapping("/world") public String helloMVC(){ return "first"; } }

當然,springMVC在搜尋控制器的時候需要定義搜尋包的範圍,所以,我們需要定義一個springMVC的配置檔案。而定義springMVC的配置檔案之前,需要在中定義好前端控制器DispatcherServlet,以及相應的配置檔案路徑。

web.xml如下:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>

  <!-- DispatcherServlet, Spring MVC的核心 -->
  <servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- DispatcherServlet對應的上下文配置, 預設為/WEB-INF/$servlet-name$-servlet.xml
     -->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/configs/spring/mvc-dispatcher-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <!-- mvc-dispatcher攔截所有的請求-->
    <url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>

注意:雖然springMVC的配置檔案(其實是定義的相應的DispatcherServlet的對應的配置檔案)是可以通過初始化引數contextConfigLocation來指定的,如果不配置指定,那就按照約定:DispatcherServlet對應的上下文配置, 預設為/WEB-INF/servletname-servlet.xml

DispatcherServlet對應的上下文配置

/WEB-INF/configs/spring/mvc-dispatcher-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- 本配置檔案是工名為mvc-dispatcher的DispatcherServlet使用, 提供其相關的Spring MVC配置 -->

    <!-- 啟用Spring基於annotation的DI, 使使用者可以在Spring MVC中使用Spring的強大功能。 啟用 @Required
        @Autowired,JSR 250's @PostConstruct, @PreDestroy and @Resource 等標註 -->
    <context:annotation-config />

    <!-- DispatcherServlet上下文, 只管理@Controller型別的bean, 忽略其他型的bean, 如@Service -->
    <context:component-scan base-package="com.happyBKs.controller">
        <context:include-filter type="annotation"  expression="org.springframework.stereotype.Controller" />
    </context:component-scan>

    <!-- HandlerMapping, 無需配置, Spring MVC可以預設啟動。 DefaultAnnotationHandlerMapping
        annotation-driven HandlerMapping -->

    <!-- 擴充了註解驅動,可以將請求引數繫結到控制器引數 -->
    <mvc:annotation-driven />

    <!-- 靜態資源處理, css, js, imgs -->
    <!--<mvc:resources mapping="/resources/**" location="/resources/" />-->


    <bean
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsps/" />
        <property name="suffix" value=".jsp" />
    </bean>


</beans>

這裡注意,該配置檔案其實歸結起來做了四件事情:

  1. 啟用一些註解

  2. 定義DispatcherServlet上下文,即剛才所說的搜尋哪些包

  3. 啟用springMVC的幾個註解

  4. 定義請求和檢視View資源之間對映

接下來,定義檢視View,我們在\WEB-INF\jsps\下定義了first.jsp
這裡寫圖片描述

\WEB-INF\jsps\first.jsp如下:

<html>
<body>
<h2>Hello! I am developing a springMVC project with intellj idea!</h2>
<h2>HappyBKs</h2>
</body>
</html>

最後,我們在idea下配置如何將webapp釋出到tomcat上執行:

點選【Run | Edit Configurations…】
這裡寫圖片描述

點選左上角的綠色加號。選擇Tomcat server 的 local
這裡寫圖片描述
然後配置Server
這裡寫圖片描述

然後選擇選項卡Deployment,配置部署方式
這裡寫圖片描述
點加號,選擇Artifact。
這裡寫圖片描述

注意,這裡我們還可以為應用配置一個請求中的web應用名稱,預設是 “/”

如果我們不配置,請求的是localhost:8080/【Controller對映路徑】

這裡,我們為應用去個名字叫/mvc。一臺伺服器畢竟一般會部署很多個應用嘛!

請求的url則是localhost:8080/【web應用配置的名稱】/【Controller對映路徑】,即localhost:8080/mvc/hello/world

好,最好儲存,點選執行。
這裡寫圖片描述
這裡寫圖片描述
webapp的首頁會自動在預設瀏覽器中開啟(用哪個瀏覽器,idea也可以配置的)。

這裡寫圖片描述

好了,這篇博文雖然是承接springMC筆記系列,但是畢竟時隔一年了,我將springMVC的原理性的東西,尤其是前端控制器等重新整理了一遍。還有便是,算是把在intellj idea下如何配置你的第一個springMVC方法一步一步講清楚了,用慣了eclipse的idea小白們不妨試試吧。