1. 程式人生 > >SpringMVC 處理器對映器詳解

SpringMVC 處理器對映器詳解

歡迎加我微信:fageweiketang一起交流討論,一起學習進步。

0x00:介紹

關於 SPring MVC 的詳細介紹可參考之前的文章,SpringMVC 工作原理

在 SpringMVC 中,處理器對映器有兩種配置方式,一種是基於 XML 的資源配置,也就是常說的非註解方式。另外一種方式是基於 Annotation 註解方式的配置。

註解是程式碼裡的特殊標記,這些標記可以在程式編譯、類載入和執行的時候被讀取,然後去執行相應的處理。具體使用哪一種配置方式,要根據程式的具體情況而定。

0x01:非註解的處理器類

1,非註解處理器類 BeanNameUrlHandlerMapping,這個類的對映規則是將 bean 的 name 作為 url 進行查詢,需要在配置 Handler 時指定 beanname,其示例程式碼如下:

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
<bean name="/test.do" class="com.fageweiketang.controller.TestController"/>

這時的 url 地址就會根據 bean 的 name 去查詢,也就是示例中配置的 name 的值 test.do,且這個必須以 / 開頭。

2,非註解處理器類 SimpleUrlHandlerMapping,它可以通過內部引數去配置請求的 url 和 handler 之間的對映關係,其示例配置如下:

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="interceptors">
        <list>
            <ref bean="someCheckInterceptor1"/>
            <ref bean="someCheckInterceptor2"/>
        </list>
    </property>
<property name="mapping"> <props> <prop key="user.action">userController</prop> <prop key="product.action">productController</prop> <prop key="other.action">otherController</prop> </props> </property> </bean>

其中 property 屬性可以配置 interceptors 攔截器,也可以配置 mapping(Handler 處理器和 url 的對映關係)。

3,非註解處理器類 ControllerClassNameHandlerMapping,它是將 Controller 控制器的名字作為對映的 url 地址,例如 TestController 控制器則對映的地址就為 / test*,如果是 test 控制器下的 test 方法,則 url 為 test/test.action,示例程式碼如下:

<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>

0x02:註解處理器對映器

註解處理方式不需要在 xml 中進行配置,只需要在指定的地方宣告一些註解資訊即可。SpringMVC3.1 版本之後預設的處理器對映器是 RequestMappingHandlerMapping,位於 SpringMVC 的核心 jar 包 org.springframework.web.servlet.mvc.method.annotation 中。

註解配置方式有兩種,第一種是在 springmvc.xml 中配置,宣告相關的 bean 和實現即可,示例程式碼如下:

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

第二種是使用 <mvc:annotation-driven/> 標籤來配置,這個標籤是一種簡寫方式,它會自動去註冊處理器對映器,配置示例如下:

<mvc:annotation-driven></mvc:annotation-driven>

當使用了註解方式後,就不需要在 xml 配置中配置任何資訊了,只需要在作為 Handler 處理器的 Java 類中新增相應的註解即可,示例如下:

//使用Controller來標識它是一個控制器
@Controller
public class TestControllerTest{
    @RequestMapping("/testurl")
    public ModelAndView testurl() throws Exception{
        //邏輯程式碼
    }
}

在以上程式碼中 @Controller 是註解資訊,表示該類是一個控制器類,可以被註解的處理器介面卡找到,而 TestControllerTest 類中的 testurl 方法上有一個 @RequestMapping 註解資訊,作用是指定一個 url 與該方法繫結。

這時為了讓註解的處理器對映器能找到 Handler 控制器,需要在 springmvc.xml 做下配置,方式有兩種:

1,在 springmcv.xml 中宣告 bean 資訊,示例程式碼如下:

<bean class="com.fageweiketang.controller.TestController"></bean>

第二種是掃描配置,對某一個包下的所有類進行掃描,找出所有使用 @Controller 註解的 Handler 控制器類,示例程式碼如下:

<context:component-scan base-package="com.fageweiketang.controller"></context:component-scan>

0x03:總結

SpringMVC 中處理器對映器 HandlerMapping 根據配置找到相應的 Handler,返回給前端控制器 DispatcherServlet,這個 Handler 可能包含 N 個 Interceptor 攔截器。

其配置方式有兩種,一個是非註解方式配置,也就是基於 xml 配置檔案。第二個就是註解配置,在類中做相應的註解即可。

更多關於程式碼審計、WEB滲透、網路安全的運維的知識,請關注微信公眾號:發哥微課堂。

相關推薦

SpringMVC 處理器對映

歡迎加我微信:fageweiketang一起交流討論,一起學習進步。 0x00:介紹 關於 SPring MVC 的詳細介紹可參考之前的文章,SpringMVC 工作原理。 在 SpringMVC 中,處理器對映器有兩種配置方式,一種是基於 XML 的資源配置,也就是常

SpringMVC處理器攔截

處理器攔截器簡介 Spring Web MVC的處理器攔截器(如無特殊說明,下文所說的攔截器即處理器攔截器) 類似於Servlet開發中的過濾器Filter,用於對處理器進行預處理和後處理。   5.1.1、常見應用場景 1、日誌記錄:記錄請求資訊的日誌,以便進行資訊監

第五章 處理器攔截

5.1、處理器攔截器簡介 Spring Web MVC的處理器攔截器(如無特殊說明,下文所說的攔截器即處理器攔截器) 類似於Servlet開發中的過濾器Filter,用於對處理器進行預處理和後處理。   5.1.1、常見應用場景 1、日誌記錄:記錄請求資訊的

SpringMVC 處理器對映處理器介面卡

一、非註解處理器對映器和介面卡1.非註解的處理器對映器1)org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping2)org.springframework.web.servlet.handler.S

SpringMVC攔截

div isp username edi ice post 標簽 rop after 攔截器是每個Web框架必備的功能,也是個老生常談的主題了。 本文將分析SpringMVC的攔截器功能是如何設計的,讓讀者了解該功能設計的原理。 重要接口及類介紹 1. HandlerExe

SpringMVC框架(1)之(1.2 入門程式—處理器對映處理器介面卡(註解方式))

1.DispatcherServlet載入時會預設載入 DispatcherServlet.properties 檔案,目的是為了載入裡面的處理器對映器、處理器介面卡、檢視解析器等各個元件;(所以 springmvc.xml 中 兩種處理器介面卡、兩種處理器介面卡、檢視解析器都可以省略;)

SpringMVC框架(1)之(1.2 入門程式—常用的處理器對映處理器介面卡)

1. 程式結構: 建立一個Web專案,匯入 Spring的 jar包: 使用 Spring3.2.0(帶SpringMVC模組) web.xml 檔案中配置 DispatcherServlet前端控制器 (DispatcherServlet作為 springmvc的中央排程

springmvc(4)--註解的處理器對映和介面卡

1.我們在springmvc.xml中配置的介面卡和對映器,如果不配置,那麼將會載入預設的對映器和介面卡。 如圖 但是上面兩種註解方式的介面卡和對映器,是已經過時的,是spring2.5的。 ps: 在spring3.1之前使用的註解對映器是:org

springmvc(三)註解的處理器對映和介面卡

在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping註解對映器。 在

SpringMVC框架】註解的處理器對映和介面卡配置

下面我們來探討註解的處理器對映器和介面卡 1.註解的處理器對映器和介面卡 在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping註解對映器。 在

SpringMVC第四篇——處理器對映處理器介面卡,檢視解析的配置

這兩個註解的作用和來源: <mvc:annotation-driven/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&

springmvc 的請求流程二】:(springmvc 的三大元件之一)處理器對映的配置和通過處理器對映返回請求鏈的原始碼流程

總結 策略模式,每一種對映器方案都提供了對url 的解析的方案都是不同的 DispatcherServlet 拿著執行鏈去尋找對應的處理器介面卡(HandlerAdapter)為什麼要引入介面卡?因為處理器(Handler)有很多種,DispatcherServlet

SpringMVC框架】非註解的處理器對映和介面卡

非註解的處理器對映器和介面卡 1.非註解的處理器對映器 之前的處理器對映器: org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping<!-- 配置Handler --> <bea

springMVC對映規則

6.5、請求對映 處理器定義好了,那接下來我們應該定義功能處理方法,接收使用者請求處理並選擇檢視進行渲染。首先我們看一下圖6-1: http請求資訊包含六部分資訊: ①請求方法,如GET或POST,表示提交的方式; ②URL,請求的地址資訊; ③協議及版本; ④請求頭資訊

springmvc三個處理器對映(三)

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframewo

springmvc DispatcherServlet和攔截

1,程式例項 把程式貼下來:web.xml <servlet> <!--既然DispatcherServlet 寫在這說明 DispatcherServlet也是servlet--> <servlet-name>mvc</s

SpringMVC 三種處理器對映配置方式

       當用戶通過URL發來請求、在Controller 層 springmvc 要根據配置檔案來決定哪一個Controller 物件處理該請求。該過程是通過處理器對映器HandlerMappi

jquery選擇

orm visible type nbsp line style .html box con 一、基本選擇器 #box .box1 div $("#box, .box1"); 二、層級選擇器 $("div p"); //div中的所有p $("div > p");

python--裝飾

blog 內容 class align fun turn strip 叠代器 ros Python---裝飾器詳解 定義: 本質上是一個函數。作用是用來裝飾另一個函數(即被裝飾函數),給被裝飾函數添加功能。前提是不能改變被裝飾函數的源代碼和調用方式。這樣的一個函數稱之為裝飾

Python裝飾

def 功能 style out return 裝飾器 代碼 方法 情況 首先是不使用裝飾器的情況,又需要在不修改原函數的情況話修改函數結果 1 def outer(func): 2 def inner(): 3 print("Hello")