javascript
(转)SpringMVC学习(三)——SpringMVC的配置文件
http://blog.csdn.net/yerenyuan_pku/article/details/72231527
讀者閱讀過SpringMVC學(xué)習(xí)(一)——SpringMVC介紹與入門這篇文章后,想必都會(huì)寫寫SpringMVC的入門小程序,在這個(gè)小程序中,SpringMVC的核心配置文件——springmvc.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:p="http://www.springframework.org/schema/p" 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-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <context:component-scan base-package="com.itheima.springmvc.controller"/> </beans>讀者可能懷疑這寫的不對(duì)啊!怎么可能只配這點(diǎn)東西呢?SpringMVC的三大組件哪去了,它們不是要配置嗎?且聽我慢慢講解。我們發(fā)現(xiàn)這幾個(gè)組件并沒配置,但卻是好使的,就是因?yàn)樗幸粋€(gè)默認(rèn)配置,DispatcherServlet.properties這個(gè)默認(rèn)配置文件里面默認(rèn)加載了,看圖:?
可以看出我們使用了注解方式的處理器映射器和處理器適配器。
-
默認(rèn)加載的注解方式的處理器映射器
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping -
默認(rèn)加載的注解方式的處理器適配器
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter -
默認(rèn)加載的視圖適配器(默認(rèn)解析JSP視圖的視圖解析器)
org.springframework.web.servlet.view.InternalResourceViewResolver
我們?nèi)绻褂媚J(rèn)加載的注解方式的映射器和適配器,那么對(duì)它們的可控制性是比較小的,所以一般來說,我們都是自己配置的,因?yàn)橛械臅r(shí)候我們需要擴(kuò)展一些其他的組件。
注解映射器和適配器
配置組件掃描器
使用組件掃描器可省去在Spring容器中配置每個(gè)Controller類的繁瑣。使用<context:component-scan>自動(dòng)掃描標(biāo)記@controller注解的控制器類,配置如下:
<context:component-scan base-package="com.itheima.springmvc.controller"/>注意:如果要掃描多個(gè)包,多個(gè)包中間使用半角逗號(hào)分隔。很明顯在入門小程序中我已經(jīng)配置了。
配置RequestMappingHandlerMapping
注解式處理器映射器,對(duì)類中標(biāo)記@ResquestMapping注解的方法進(jìn)行映射,根據(jù)@ResquestMapping注解定義的url匹配@ResquestMapping注解標(biāo)記的方法,匹配成功返回HandlerMethod對(duì)象給前端控制器,HandlerMethod對(duì)象中封裝了url對(duì)應(yīng)的方法Method。?
從Spring3.1版本開始,廢除了DefaultAnnotationHandlerMapping的使用,推薦使用RequestMappingHandlerMapping完成注解式處理器映射。配置如下:
推薦使用最新版本的注解式處理器映射器,如果你想對(duì)其擴(kuò)展,可以在這個(gè)bean里面配置其他的屬性。?
@RequestMapping注解的描述:定義請(qǐng)求url到處理器功能方法的映射。
配置RequestMappingHandlerAdapter
注解式處理器適配器,對(duì)標(biāo)記@ResquestMapping注解的方法進(jìn)行適配。?
從Spring3.1版本開始,廢除了AnnotationMethodHandlerAdapter的使用,推薦使用RequestMappingHandlerAdapter完成注解式處理器適配。配置如下:
推薦使用最新版本的注解式處理器適配器,如果你想對(duì)其擴(kuò)展,可以在這個(gè)bean里面配置其他的屬性。?
當(dāng)我們配置完注解式處理器映射器和注解式處理器適配器之后,SpringMVC的核心配置文件——springmvc.xml就應(yīng)該為:
然后在瀏覽器地址欄中輸入url地址——http://localhost:8080/springmvc-first/itemList.action,回車,也能同樣看到如下效果:?
繼續(xù)優(yōu)化注解,配置<mvc:annotation-driven>
使用注解要注意一個(gè)問題,就是注解適配器和映射器必須配對(duì)使用,也就是說,不能一個(gè)用注解,一個(gè)用非注解。要用一起用,要么都不用。其實(shí)在SpringMVC中還有更加簡(jiǎn)便的注解,SpringMVC使用<mvc:annotation-driven>自動(dòng)加載RequestMappingHandlerMapping和RequestMappingHandlerAdapter,可在springmvc.xml配置文件中使用<mvc:annotation-driven>替代注解處理器和適配器的配置,如下圖所示:?
注意:如果配置一個(gè)注解驅(qū)動(dòng)之后,那么就可以不用配置處理器映射器和處理器適配器了。?
此時(shí)在瀏覽器地址欄中輸入url地址——http://localhost:8080/springmvc-first/itemList.action,回車,同樣也能看到如上效果。
配置視圖解析器
我們也可在springmvc.xml配置文件中自己手動(dòng)配置視圖解析器,如下:
<!-- 配置視圖解析器(對(duì)jsp默認(rèn)解析的視圖解析器) --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- prefix:前綴 --> <property name="prefix" value="/WEB-INF/jsp/"></property> <!-- suffix:后綴 --> <property name="suffix" value=".jsp"></property> </bean>- InternalResourceViewResolver:支持JSP視圖解析。
- viewClass:JstlView表示JSP模板頁面需要使用JSTL標(biāo)簽庫,所以classpath中必須包含jstl的相關(guān)jar 包。此屬性可以不設(shè)置,默認(rèn)為JstlView。
- prefix和suffix:查找視圖頁面的前綴和后綴,最終視圖的址為:前綴+邏輯視圖名+后綴,邏輯視圖名需要在Controller返回的ModelAndView中指定,比如邏輯視圖名為hello,則最終返回的jsp物理視圖地址就為 “WEB-INF/jsp/hello.jsp”。
這樣一來,ItemController類的代碼就要修改為:
@Controller public class ItemController { // .action可以省略 (請(qǐng)求的url地址) @RequestMapping("/itemList.action") public ModelAndView itemList() { // 查詢商品列表,使用靜態(tài)數(shù)據(jù)生成一個(gè)商品列表 List<Items> itemList = new ArrayList<Items>(); itemList.add(new Items(1, "imac", 20000, new Date(), "蘋果本很貴")); itemList.add(new Items(2, "imac1", 20000, new Date(), "蘋果本很貴")); itemList.add(new Items(3, "imac2", 20000, new Date(), "蘋果本很貴")); itemList.add(new Items(4, "imac3", 20000, new Date(), "蘋果本很貴")); itemList.add(new Items(5, "imac4", 20000, new Date(), "臥槽,蘋果本很貴啦!")); // 把商品列表傳遞給jsp ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("itemList", itemList); // 配置完視圖解析器之后只需要返回返回jsp的名稱即可 modelAndView.setViewName("itemList"); // 返回結(jié)果 return modelAndView; } }如果這時(shí)返回全路徑,即/WEB-INF/jsp/itemList.jsp,那就不好使了。?
到這就基本總結(jié)完了SpringMVC中使用注解方式的適配器和映射器了,很明顯,開發(fā)中我們就使用注解配置,那樣非常方便。
總結(jié)
以上是生活随笔為你收集整理的(转)SpringMVC学习(三)——SpringMVC的配置文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle 自己主动内存管理 SGA、
- 下一篇: 【Eclipse提高开发速度-插件篇】安