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/
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>
這裡注意,該配置檔案其實歸結起來做了四件事情:
啟用一些註解
定義DispatcherServlet上下文,即剛才所說的搜尋哪些包
啟用springMVC的幾個註解
定義請求和檢視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小白們不妨試試吧。