SpringMVC學習筆記(一)

2021-10-02 15:15:26 字數 3257 閱讀 4911

這篇筆記主要記錄我在學習springmvc時遇到的一些問題和我覺得需要記錄的一些重要的知識點。如有錯誤,敬請指正。下面開始正文:

1、前端控制器dispatcherservlet和控制器controllers

在web.xml中對其進行配置,一般將其url-pattern設定為/,這樣dispatcherservlet會截獲所有請求,如圖:

>

>

dispatcherservlet-name

>

>

org.springframework.web.servlet.dispatcherservletservlet-class

>

>

1load-on-startup

>

servlet

>

>

>

dispatcherservlet-name

>

>

/url-pattern

>

>

<

context:component-scan

base-package

="controllers"

/>

這行**的作用是啟用spring內建的元件掃瞄功能,base-packege指定了被掃瞄的包名,所有在這個包下的類都會被掃瞄。接下來需要在controller類上增加注釋來使它被識別為控制器,**如下:

package controllers;

import..

.@controller()

public

class

homecontroller

}

a、@controller注釋表明這個類是乙個控制器,如果spring對contorllers包啟動了元件掃瞄,那麼homecontroller類會被spring掃瞄並註冊為乙個控制器元件。

b、2、視**析器viewresolver

前面說到,controller返回乙個string型別的值,由視**析器來處理這個返回值,那麼我們需要在dispathcer-servlet.xml檔案中手動來配置視**析器,乙個很經典的方案如下:

class

="org.springframework.web.servlet.view.internalresourceviewresolver"

id="viewresolver"

>

name

="prefix"

value

="/web-inf/views/"

>

property

>

name

="suffix"

value

=".jsp"

>

property

>

name

="viewclass"

value

="org.springframework.web.servlet.view.jstlview"

>

property

>

bean

>

我們可以看到上面的**註冊了乙個idviewresolver的bean,類名為internalresourceviewresolver(內部資源視**析器)。當然你也可以更換其它類來充當視**析器,spring也提供了很多的內建視**析器類,但我在專案中使用的檢視大部分是jsp,因此我選擇了internalresourceviewresolver

在我的專案中,我給它配置了三條屬性,其中prefixsuffix屬性分別指定了字首和字尾,其作用就是將controller返回的字串前後分別拼接上字首和字尾,從而形成乙個完整的資源名稱。比如homecontroller返回了"home",viewresolver給它加上字首"/web-inf/views/「和字尾」.jsp",得到了"/web-inf/views/home.jsp"。沒錯,這就是最終所得到的檢視的物理位置,viewresolver會按照這個位址去尋找名為hoem.jsp的檔案,解析這個檢視,並將結果渲染到response中,之後的事情就不用說了,瀏覽器接收到response,渲染出乙個html頁面。

你可能會問,那第三個屬性viewclass是幹嘛用的呢?這並不重要,但如果你需要在jsp中使用jstl標籤,那麼你就要在視**析器的配置裡加上一行,也就是配置viewclass屬性。上面的**將viewclass設定為jstlview,這意味著視**析器將會把視**析為jstlview,如果你不進行這行配置,並且在jsp中使用jstl標籤,那就很可能會產生jsp錯誤。

1、使用jstl標籤庫

我希望在jsp中使用一些能給我帶來方便的標籤,但它們都依賴於乙個第三方標籤庫,也就是jstl標籤庫。所以我需要將jstl標籤庫匯入我的專案中。具體步驟可以去菜鳥教程檢視,有乙個需要注意的小問題,就是匯入標籤庫之後,你還需要在web.xml中配置每乙個tld,將它們的物理位置和uri繫結。如果你要將所有的tld註冊,那麼web.xml檔案將會增加很長一段**,它會變得很難看。但實際上你並不需要這麼做,只要將你會用到的幾個標籤註冊到web.xml中就行了。

2、jsp可以外部引用css嗎?(靜態資源的放行)

答案是絕對可以,只不過springmvc配置有前端控制器,而我又將url-pattern設定為/,這意味著所有請求,包括對靜態資源的請求都會被dispatcherservlet攔截,那麼如果我在jsp檔案中引用了乙個css,如:

rel=

"stylesheet"

type

="text/css"

href

="/resources/css/css1.css"

>

<

mvc:annotation-driven

/>

<

mvc:resources

="/resources/**"

location

="/resources/"

/>

Spring MVC學習筆記 一

ref 1.spring mvc入門 2.理解dispatcherservlet 3.實現登陸註冊功能 4.spring web mvc介紹 5.了解hiberate 三 spring3.0 引入restful 架構風格支援 通過 pathvariable註解和一些其他特性支援 且又引入了 更多的註...

SpringMVC學習筆記一

表單 1.spring標籤庫form的使用需要後台控制器初始化dto物件,一般預設物件為command controller內對應初始化方法內,需要在模型內加入command物件 return new modelandview x command new student or return new ...

SpringMVC學習筆記 一

搭建最基本的spring mvc框架 1.匯入相應的包,附件案例中有相應的包 2.編寫spring servlet.xml配置檔案,這個檔案放在同web.xml同一目錄下即可 3.配置web.xml index.html index.htm index.jsp default.html defaul...