javascript
Spring MVC-使用Spring Tool Suite IDE搭建Spring MVC开发环境
- Spring MVC 概述
- 新建Spring MVC Project
- 分析IDE建立的工程
- Maven dependencies configuration
- Spring MVC configuration
- Web deployment descriptor (web.xml)
- 示例controller: HomeController.java
- 示例JSP view: home.jsp
- Deploying and running the application
- modify the project
Spring MVC 概述
正如其名稱所述,Spring MVC框架基于Model - View - Controller(MVC)設(shè)計(jì)模式,將應(yīng)用程序的邏輯分為三層 【模式,視圖和控制器】。 MVC在Spring中由以下組件實(shí)現(xiàn):
Springs dispatcher servlet 作為Spring應(yīng)用程序和其客戶端之間的前臺(tái)控制器。 調(diào)度器servlet攔截到應(yīng)用程序的所有請(qǐng)求,并查詢要調(diào)用哪個(gè)控制器來(lái)處理請(qǐng)求的Handler Mapping。
Handler Mapping:負(fù)責(zé)找到處理特定請(qǐng)求的適當(dāng)控制器。 請(qǐng)求URL和控制器類之間的映射是通過(guò)XML配置或注釋完成的。
Controller:負(fù)責(zé)通過(guò)調(diào)用其他業(yè)務(wù)/服務(wù)類來(lái)處理請(qǐng)求。 輸出可以附加到將發(fā)送到視圖的模型對(duì)象。 要知道將呈現(xiàn)哪個(gè)視圖,控制器將查看View Resolver。
View Resolver:從邏輯名稱中查找物理視圖文件。
View:可以是JSP,HTML,XML,Velocity模板等的物理視圖文件
新建Spring MVC Project
File > New > Spring Project 選擇Spring MVC Project
單擊下一步,下載模板的更新(首次使用此模板或每當(dāng)更新可用時(shí)):
輸入工程包名稱
注意:選擇包名時(shí)要小心,因?yàn)樽詈笠粋€(gè)元素(比如com.artisan.springmvc中的springmvc)將被用作Maven項(xiàng)目文件(pom.xml)中的artifactId以及應(yīng)用程序的上下文路徑。當(dāng)然了,我們也可以在pom.xml文件中進(jìn)行更改。
單擊完成,STS將創(chuàng)建一個(gè)基于Spring MVC的項(xiàng)目,其中有一些默認(rèn)值用于控制器,視圖和配置。
如果碰到以下錯(cuò)誤:
是因?yàn)镸aven還沒(méi)有更新一些依賴關(guān)系
右鍵單擊項(xiàng)目名稱,從上下文菜單中選擇Maven > Update Project…
在更新Maven項(xiàng)目對(duì)話框中,選中Force update of Snapshots/Release
單擊完成,等待Maven下載所需的依賴關(guān)系,然后錯(cuò)誤就會(huì)消失。
分析IDE建立的工程
現(xiàn)在讓我們來(lái)探討Spring MVC Project模板創(chuàng)建的內(nèi)容。 展開(kāi)項(xiàng)目資源管理器視圖中的分支,我們將看到項(xiàng)目的結(jié)構(gòu)如下:
我們可以看到,STS為典型的Spring MVC應(yīng)用程序創(chuàng)建了所需的:XML配置,jar依賴關(guān)系,controller和JSP 視圖。
接下來(lái)我們來(lái)看下更多的細(xì)節(jié)部分
Maven dependencies configuration
生成的pom.xml文件包含Spring核心和Spring MVC的所有必要依賴關(guān)系,以及servlet API,日志記錄等。如上圖紅色矩形。
當(dāng)在IDE中運(yùn)行的服務(wù)器上部署項(xiàng)目時(shí),artifactId元素的值將用作Web應(yīng)用程序的上下文路徑。 這意味著我們將以以下形式訪問(wèn)此應(yīng)用程序:
http://localhost:8080/springmvc如果要更改Spring框架的版本,只需更新org.springframework-version元素的值即可。
比如
只要保存pom.xml文件,Maven就會(huì)立即檢測(cè)到更改并更新所有相關(guān)的依賴項(xiàng)。
Spring MVC configuration
STS創(chuàng)建兩個(gè)Spring MVC的配置文件: root-context.xml 和servlet-context.xml.
root-context.xml:
這個(gè)配置文件被所有的servlet和filters共享。 在應(yīng)用程序啟動(dòng)時(shí), root-context.xml 文件由Spring的ContextLoaderListener加載。 該文件默認(rèn)為空。
servlet-context.xml:
該文件由Spring的DispatcherServlet加載,它接收到進(jìn)入應(yīng)用程序的所有請(qǐng)求,并根據(jù)此servlet-context.xml文件中指定的配置調(diào)度控制器的處理。 我們來(lái)看看一些默認(rèn)配置:
<annotation-driven /> 告訴框架使用基于注釋的方法來(lái)掃描指定包中的文件。 因此,我們可以使用@Controller注釋作為控制器類,而不是聲明XML元素。
<resources mapping=…/>使用HTTP GET請(qǐng)求直接映射靜態(tài)資源。 例如圖像,javascript,CSS等資源不必經(jīng)過(guò)控制器。
Bean InternalResourceViewResolver 此bean聲明告訴Spring如何根據(jù)控制器返回的邏輯視圖名稱查找物理JSP文件,方法是將prefix 和suffix 附加到視圖名稱。 例如,如果控制器的方法返回“home”作為邏輯視圖名稱,則框架將在/ WEB-INF / views目錄下找到一個(gè)物理文件“home.jsp”。
<context:component-scan …/>告訴框架使用基于注釋的策略時(shí)要掃描的包。 這里的框架將掃描所有類下的包c(diǎn)om.artisan.springmvc。
Web deployment descriptor (web.xml)
’
這是基于Spring MVC的應(yīng)用程序的典型配置,其中包含Spring的ContextLoaderListener和DispatcherServlet以及Spring配置文件root-context.xml和servlet-context.xml。 最后,它指定了Spring的DispatcherServlet處理所有請(qǐng)求的URL映射。
示例controller: HomeController.java
我們可以看到,@Controller注釋用于指定此類是Spring控制器,而@RequestMapping注釋指定home()方法將使用URL /(應(yīng)用程序的默認(rèn)頁(yè)面)處理GET請(qǐng)求。 在一個(gè)控制器類中,我們可以編寫許多方法來(lái)處理不同的URL。
在home()方法的內(nèi)部,它創(chuàng)建一個(gè)String對(duì)象,以基于當(dāng)前語(yǔ)言環(huán)境保存當(dāng)前日期,并將該對(duì)象添加到名稱為“serverTime”的模型中:
model.addAttribute(“serverTime”,formattedDate);最后,該方法返回一個(gè)名為“home”的視圖,該視圖將由servlet-context.xml文件中指定的視圖解析器解析,以查找實(shí)際的視圖文件。
示例JSP view: home.jsp
這個(gè)代碼很簡(jiǎn)單,它只是打印出一個(gè)變量“serverTime”的值,它由控制器傳遞,使用EL表達(dá)式:
The time on the server is ${serverTime}.到目前為止,我們已經(jīng)完成了Spring MVC項(xiàng)目模板生成的所有內(nèi)容。 請(qǐng)注意,我們還沒(méi)有編寫任何代碼行,但是應(yīng)用程序現(xiàn)在可以進(jìn)行部署和測(cè)試了。
Deploying and running the application
我們不到到tomcat中
啟動(dòng):
訪問(wèn)
http://localhost:8080/springmvc/modify the project
到目前為止,我們已經(jīng)測(cè)試并看到生成的應(yīng)用程序運(yùn)行。 現(xiàn)在讓我們?yōu)轫?xiàng)目添加一些更改,以進(jìn)一步了解Spring MVC。
HomeController.java 增加如下方法
@RequestMapping(value = "/test", method = RequestMethod.GET)public String test(Model model) {String greetings = "Greetings ,Spring MVC !";model.addAttribute("message", greetings);return "test";}該方法將處理具有URL模式 /test 的請(qǐng)求,并執(zhí)行以下操作:
- 將String對(duì)象作為屬性添加到名為“message”的模型中,值為“Greetings,Spring MVC!”。
- 返回名為“test”的邏輯視圖。
因?yàn)閠est()方法返回“test”視圖名稱,并且遵循視圖解析器指定的配置,我們必須在/ WEB-INF / views目錄下創(chuàng)建一個(gè)名為test.jsp的JPS文件,其中包含以下內(nèi)容:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ page session="false" %> <html> <head><title>Test page</title> </head> <body> <h1>${message} </h1> </body> </html>一個(gè)簡(jiǎn)單的頁(yè)面 ,打印出將由控制器傳遞的變量“message”的值。 現(xiàn)在回到瀏覽器窗口,將URL更改為:
http://localhost:8080/springmvc/test總結(jié)
以上是生活随笔為你收集整理的Spring MVC-使用Spring Tool Suite IDE搭建Spring MVC开发环境的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Spring-AOP @AspectJ进
- 下一篇: Spring-AOP @AspectJ进