javascript
非注解和注解的处理器映射器和适配器---SpringMVC学习笔记(三)
非注解的處理器映射器和適配器
非注解的處理器映射器
之前的入門Demo中使用的就是非注解的處理器映射器:
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
另一種非注解的處理器映射器:
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
進行這個配置之后,訪問
http://localhost:8080/SpringMVCFirst/queryItems1.action
和
http://localhost:8080/SpringMVCFirst/queryItems2.action
都會進入商品列表的jsp頁面。
非注解的處理器適配器
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,
查看該適配器的源碼:
可以發現,所有實現了org.springframework.web.servlet.mvc.Controller 接口的Bean通過此適配器進行適配、執行才可以。
org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,
查看該適配器的源碼:
可以發現,所有實現了org.springframework.web.HttpRequestHandler 接口的Bean通過此適配器進行適配、執行才可以。
這種處理器適配器的Handler實現如下:
從上邊可以看出此適配器的handleRequest方法類似于原始的Servlet,通過這種方式可以設置response響應內容,比如返回json數據:
response.setCharacterEncoding("utf-8"); response.setContentType("application/json;charset=utf-8"); response.getWriter().write("json串");DispatcherSerlvet.properties
如果不配置springmvc.xml文件,應用程序照樣可以正常運行。原因是:
在web.xml中配置的前端控制器org.springframework.web.servlet.DispatcherServlet的包中存在DispatcherSerlvet.properties。
前端控制器從上邊的文件中加載處理映射器、適配器、視圖解析器等組件,如果不在springmvc.xml中配置,使用DispatcherSerlvet.properties文件中配置的默認加載的。
注解的處理器映射器和適配器
在spring3.1之前和spring3.1之后的版本中使用的注解方式的處理器映射器和處理器適配器有所不同:
注解方式使用的處理器映射器:
在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping注解映射器。
在spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping注解映射器。
注解方式使用的處理器適配器:
在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter注解適配器。
在spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter注解適配器。
第一步:配置注解的映射器和適配器
<!-- 配置注解方式的處理器映射器 --><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" /><!-- 配置注解方式的處理器適配器 --><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />注意:
springmvc使用<mvc:annotation-driven>自動加載RequestMappingHandlerMapping和RequestMappingHandlerAdapter,可用在springmvc.xml配置文件中使用<mvc:annotation-driven>替代上面配置的注解處理器和適配器的配置。
<mvc:annotation-driven>默認還加載很多的參數綁定方法,比如json轉換解析器就默認加載了。實際開發中我們一般使用<mvc:annotation-driven>。
第二步:開發Handler(使用注解的方式)
使用@Controller注解標識它是一個控制器。也就相當于之前沒有使用注解開發的Hander中的:
第三步:配置Handler
第一種方式:
可以使用與原來的配置Handler的方式一樣,一個一個的在springmvc.xml中配置Handler。
但是這種方式存在一個問題:如果開發了很多個Handler,那么就要挨個在springmvc.xml中進行配置,非常的繁瑣。下面這種方式解決了這個問題。
第二種方式:
組件掃描器可以掃描controller、service……
使用組件掃描器省去在spring容器配置每個controller類的繁瑣。使用<context:component-scan/>自動掃描標記@controller的控制器類,配置如下:
第四步:部署訪問
總結
以上是生活随笔為你收集整理的非注解和注解的处理器映射器和适配器---SpringMVC学习笔记(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 入门Demo---SpringMVC学习
- 下一篇: 跟踪源码运行流程---SpringMVC