1. 程式人生 > >【Java】SpringMVC Controller介面控制器詳解

【Java】SpringMVC Controller介面控制器詳解

1、ParameterizableViewController

引數化檢視控制器,不進行功能處理(即靜態檢視),根據引數的邏輯檢視名直接選擇需要展示的檢視。

Java程式碼   
<bean name="/parameterizableView"  
class="org.springframework.web.servlet.mvc.ParameterizableViewController">  
<property name="viewName" value="success"/>  
</bean>

該控制器接收到請求後直接選擇引數化的檢視,這樣的好處是在配置檔案中配置,從而避免程式的硬編碼,比如像幫助頁面等不需要進行功能處理,因此直接使用該控制器對映到檢視。

2、AbstractUrlViewController

提供根據請求URL路徑直接轉化為邏輯檢視名的支援基類,即不需要功能處理,直接根據URL計算出邏輯檢視名,並選擇具體檢視進行展示:

urlDecode  是否進行url解碼,不指定則預設使用伺服器編碼進行解碼(如Tomcat預設ISO-8859-1);

urlPathHelper  用於解析請求路徑的工具類,預設為org.springframework.web.util.UrlPathHelper。

UrlFilenameViewController是它的一個實現者,因此我們應該使用UrlFilenameViewController。

3、UrlFilenameViewController

將請求的URL路徑轉換為邏輯檢視名並返回的轉換控制器,即不需要功能處理,直接根據URL計算出邏輯檢視名,並選擇具體檢視進行展示:

根據請求URL路徑計算邏輯檢視名;

Java程式碼   
<bean name="/index1/*"   
class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/>  
<bean name="/index2/**"   
class="org.springframework.web.servlet.mvc.UrlFilenameViewController"
/>
<bean name="/*.html" class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/> <bean name="/index3/*.html" class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/>

/index1/*  可以匹配/index1/demo,但不匹配/index1/demo/demo,如/index1/demo邏輯檢視名為demo;

/index2/**  可以匹配/index2路徑下的所有子路徑,如匹配/index2/demo,或/index2/demo/demo,“/index2/demo”的邏輯檢視名為demo,而“/index2/demo/demo”邏輯檢視名為demo/demo;

/*.html  可以匹配如/abc.html,邏輯檢視名為abc,字尾會被刪除(不僅僅可以是html);

/index3/*.html  可以匹配/index3/abc.html,邏輯檢視名也是abc;

上述模式為 spring Web MVC使用的Ant-style 模式進行匹配的:

Java程式碼   
?    匹配一個字元,如/index? 可以匹配 /index1 , 但不能匹配 /index 或 /index12  
*    匹配零個或多個字元,如/index1/*,可以匹配/index1/demo,但不匹配/index1/demo/demo 
**   匹配零個或多個路徑,如/index2/**:可以匹配/index2路徑下的所有子路徑,如匹配/index2/demo,或/index2/demo/demo 

如果我有如下模式,那Spring該選擇哪一個執行呢?當我的請求為“/long/long”時如下所示: 
/long/long 
/long/**/abc  
/long/** 
/** 
Spring的AbstractUrlHandlerMapping使用:最長匹配優先; 
如請求為“/long/long” 將匹配第一個“/long/long”,但請求“/long/acd” 則將匹配 “/long/**”,如請求“/long/aa/abc”則匹配“/long/**/abc”,如請求“/abc”則將匹配“/**”

UrlFilenameViewController還提供瞭如下屬性:

prefix  生成邏輯檢視名的字首;

suffix  生成邏輯檢視名的字尾;

Java程式碼   
protected String postProcessViewName(String viewName) {  
        return getPrefix() + viewName + getSuffix();  
}
Java程式碼   
<bean name="/*.htm" class="org.springframework.web.servlet.mvc.UrlFilenameViewController">  
        <property name="prefix" value="test"/>  
        <property name="suffix" value="test"/>  
</bean>

當 prefix= “test ”,suffix= “test ” ,如上所示的 /*.htm : 可以匹配如/abc.htm,但邏輯檢視名將變為testabctest。

相關推薦

JavaSpringMVC Controller介面控制器

1、ParameterizableViewController 引數化檢視控制器,不進行功能處理(即靜態檢視),根據引數的邏輯檢視名直接選擇需要展示的檢視。 Java程式碼    <bean name="/parameterizableView" class

跟開濤學SpringMVC(4.4):Controller介面控制器(4)

4.12、ParameterizableViewController 引數化檢視控制器,不進行功能處理(即靜態檢視),根據引數的邏輯檢視名直接選擇需要展示的檢視。 Java程式碼   1 2 3 4 <bean name="/par

第四章 Controller介面控制器(6)

4.16.2、資料驗證 1、資料繫結失敗:比如需要數字卻輸入了字母; 2、資料不合法:可以認為是業務錯誤,通過自定義驗證器驗證,如使用者名稱長度必須在5-20之間,我們卻輸入了100個字元等; 3、錯誤物件:當我們資料繫結失敗或驗證失敗後,錯誤資訊存放的物件,我們叫錯誤物件,在S

第四章 Controller介面控制器(5)

4.16、資料型別轉換和資料驗證 流程: 1、首先建立資料繫結器,在此此會建立ServletRequestDataBinder類的物件,並設定messageCodesResolver(錯誤碼解析器); 2、提供第一個擴充套件點,初始化資料繫結器,在此處我們可以覆蓋該方法註

第四章 Controller介面控制器(4)

4.15、MultiActionController 之前學過的控制器如AbstractCommandController、SimpleFormController等一般對應一個功能處理方法(如新增),如果我要實現比如最簡單的使用者增刪改查(CRUD Create-Read-Update-Del

第四章 Controller介面控制器(3)

4.11、AbstractWizardFormController 嚮導控制器類提供了多步驟(嚮導)表單的支援(如完善個人資料時分步驟填寫基本資訊、工作資訊、學校資訊等) 假設現在做一個完善個人資訊的功能,分三個頁面展示: 1、頁面1完善基本資訊; 2、頁面2完善學校資訊;

第四章 Controller介面控制器(2)

4.5、ServletForwardingController 將接收到的請求轉發到一個命名的servlet,具體示例如下:   java程式碼: Java程式碼  

Controller介面控制器(2)

4.5、ServletForwardingController 將接收到的請求轉發到一個命名的servlet,具體示例如下: package cn.javass.chapter4.web.servlet; public class ForwardingServle

javathis()與super()使用

原文地址:http://www.cnblogs.com/hasse/p/5023392.html this三大作用: this呼叫屬性、呼叫方法、利用this表示當前物件。 this this是自身的一個物件,代表物件本身,可以理解為:指向物件本身的一個指

Java定時任務Timer排程器 原始碼分析(圖文版)

就以鬧鐘的例子開頭吧(後續小節皆以鬧鐘為例,所有原始碼只列關鍵部分)。 public class ScheduleDemo { public static void main(String[] args) throws InterruptedException {

java實現Comparable介面和Comparator介面,並重寫compareTo方法和compare方法

實現Comparable介面和Comparator介面,並重寫compareTo方法和compare方法 2016年08月11日 14:39:25 蘇尹 閱讀數:10772更多 個人分類: 學習筆記 實體類:java.lang.Comparable(介面) + coma

JavaSpringMVC整合mybatis 連線池c3p0和druid分別實驗

1.pom.xmlSpring框架包 mybatis包 AOP包 aspectj包 aopalliance包<!-- mysql start --> <dependency> <groupId>mysql</groupId

JavaSpringMVC整合poi實現excel的匯入匯出

2.特點:結構: HSSF - 提供讀寫Microsoft Excel格式檔案的功能。 XSSF - 提供讀寫Microsoft Excel OOXML格式檔案的功能。 HWPF - 提供讀寫Microsoft Word格式檔案的功能。 HSLF - 提供讀寫Microsof

Java繼承、介面、抽象類、多型之間的關係和區別

時間對於一個追夢的人來說就是黃金,沒有什麼能阻擋前行的腳步。--致所有和我一樣追逐明天太陽的人介面的理解:介面是對動作的抽象說動作還不如說功能   抽象類理解:抽象類是對根源的抽象  多型的理解:類載入執行時父類的引用指向子類的物件 抽象大小關係:介面>抽象類先通過一個

Java繼承、介面、抽象類、多型之間的關係和區別

多型:執行時引用指向子元素的例項物件【jvm記憶體模型很重要,也是入門的基礎】 接著上面繼續理解,建立一個老師類   package com.physical; public class Teacher extends Person{ String profession

Java呼叫http介面獲取資料

方法如下:import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnecti

JavaSpringMVC專案正式環境測試環境切換方案

之前同事在專案裡面正式環境測試環境配置檔案都放在一起,每次釋出都得註釋一部分,讓另一部分啟用,隨著配置檔案內容的越來越多,很容易在釋出時候出錯,我摸索了半天實驗出來一個方案,可供大家參考。本方案基於maven的spring.profiles.active功能,用的最簡單粗暴方

轉載Linux下chkconfig命令

name scrip 再次 http 缺省 重新 禁止 level pool chkconfig命令主要用來更新(啟動或停止)和查詢系統服務的運行級信息。謹記chkconfig不是立即自動禁止或激活一個服務,它只是簡單的改變了符號連接。 使用語法:chkconfig [--

轉載s19文件格式

strong 模式 blog 包含 需要 概述 摩托羅拉 csdn lec 來源:http://blog.csdn.net/xxxl/article/details/19494187 1.概述 為了在不同的計算機平臺之間傳輸程序代碼和數據,摩托羅拉將程序和數據文件以一種可打

Android Camera 相機開發

exc troy start 當前 container rac google getconf 對比度 在Android 5.0(SDK 21)中,Google使用Camera2替代了Camera接口。Camera2在接口和架構上做了巨大的變動, 但是基於眾所周知的原因