【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。
相關推薦
【Java】SpringMVC 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
【java】this()與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
【Java】SpringMVC整合mybatis 連線池c3p0和druid分別實驗
1.pom.xmlSpring框架包 mybatis包 AOP包 aspectj包 aopalliance包<!-- mysql start --> <dependency> <groupId>mysql</groupId
【Java】SpringMVC整合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
【Java】SpringMVC專案正式環境測試環境切換方案
之前同事在專案裡面正式環境測試環境配置檔案都放在一起,每次釋出都得註釋一部分,讓另一部分啟用,隨著配置檔案內容的越來越多,很容易在釋出時候出錯,我摸索了半天實驗出來一個方案,可供大家參考。本方案基於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在接口和架構上做了巨大的變動, 但是基於眾所周知的原因