springmvc-02(配置版與註解版區別)
首先,我們來看配置版和註解版的相同步驟:
1.新建一個Moudle , springmvc-02-hello , 新增web的支援!
2.確定匯入了SpringMVC 的依賴!
3.配置web.xml , 註冊DispatcherServlet
4.編寫SpringMVC 的 配置檔案!名稱:springmvc-servlet.xml : [servletname]-servlet.xml
說明,這裡的名稱要求是按照官方來的
在springmvc.xml檔案中也就是配置版和註解版不同的點:
我們先來看看配置版:
配置版:
1)新增處理器對映器
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
2)新增處理器介面卡
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
3)新增檢視解析器
<!--檢視解析器:DispatcherServlet給他的ModelAndView-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
<!--字首-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--字尾-->
<property name="suffix" value=".jsp"/>
</bean>
4)
編寫我們要操作業務Controller ,要麼實現Controller介面,要麼增加註解;需要返回一個ModelAndView,裝資料,封檢視;
5)將自己的類交給SpringIOC容器,註冊bean
6)寫要跳轉的jsp頁面,顯示ModelandView存放的資料,以及我們的正常頁面;
註解版:註解版的xml檔案的處理器對映器和處理器介面卡的處理方式變得很方便:
<!-- 自動掃描包,讓指定包下的註解生效,由IOC容器統一管理 -->
<context:component-scan base-package="com.kuang.controller"/>
<!-- 讓Spring MVC不處理靜態資源 -->
<mvc:default-servlet-handler />
<!--
支援mvc註解驅動
在spring中一般採用@RequestMapping註解來完成對映關係
要想使@RequestMapping註解生效
必須向上下文中註冊DefaultAnnotationHandlerMapping
和一個AnnotationMethodHandlerAdapter例項
這兩個例項分別在類級別和方法級別處理。
而annotation-driven配置幫助我們自動完成上述兩個例項的注入。
-->
<mvc:annotation-driven />
可以看到,僅僅這一行程式碼註解,就將處理器對映器與處理器介面卡為我們自動注入,省去我們很多時間
並且他們的方便不僅如此,還體現在我們接下來的Controller類中
因為我們已經寫入了自動掃描包,所以不需要向springmvc.xml中註冊bean,
返回jsp頁面直接可以return"hello",檢視解析器會為我們自動識別
注意
@Controller是為了讓Spring IOC容器初始化時自動掃描到;
@RequestMapping是為了對映請求路徑,這裡因為類與方法上都有對映所以訪問時應該是/HelloController/hello;
方法中宣告Model型別的引數是為了把Action中的資料帶到檢視中;
方法返回的結果是檢視的名稱hello,加上配置檔案中的前後綴變成WEB-INF/jsp/hello.jsp。
總結:
通過註解方式,我們只需要手動配置檢視解析器,而處理器對映器和處理器介面卡只需要開啟註解驅動即可,而省去了大段的xml配置
(強烈推薦大家種草)