SpringMVC基礎配置的詳細介紹
這篇文章帶給大家的內容是關於SpringMVC基礎配置的詳細介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
今天我們來說說SpringMVC的基礎配置。目前越來越多的主流框架都支援註解,同時我們無敵的Spring也支援基於註解的"零配置"。
註解相比XML的優點:它可以充分利用Java的反射機制來取得類別中的結構信息,這些資訊可以有效減少配置的工作,註解和Java程式碼位於一個檔案中,更有利於維護。
注意:必須在Spring2.5版本之後才可以使用註解方式。
註解方式將Bean的定義資訊和Bean的實作類別結合在一起,Spring提供的註解有。
@Component:宣告一個普通的Bean類別
@Repository:宣告一個持久層Dao類別
@Service:宣告一個業務層類別
@Controller:宣告一個控制器類別
這4個註解相信小夥伴們已經非常的熟悉了,廢話就少說了。我們使用註解千萬不要忘了在類別中掃描! ! !
@RequestMapping(非常核心的註解),這個註解是用來指定控制器的請求URL。
在控制器的類別定義:提供初步的映射訊息,為該類別下所有請求方法添加一個前綴。
在控制器類別中的方法定義:提供進一步的映射訊息,提供方法的請求路徑
DispacherServlet截獲請求後,就透過控制器上的@RequestMapping提供的映射資訊確認請求所對應的處理方法。
@Controller @RequestMapping("user") public class UserController { @RequestMapping("/hello") public String hello(){ return "hello"; } }
這時候我們要求的路徑是http://localhost:8080/SpringMvcDemo2/user/hello
@RequestMapping除了映射請求URL請求,還可以使用請求方法,請求參數和請求頭的請求,註解中有幾個參數:
1)value:表示請求的URL
2)method:表示請求的方式(GET/POST)
3)params:表示請求的參數
4)heads:請求頭
他們之間的是與的關係,聯合使用多個請求可以讓請求更加的精確化。
@RequestMapping(value="hello2",method=RequestMethod.POST,params={"username","userpass"},headers="contentType=text/*") public String hello2(){ return "hello"; }
這段程式碼表示,請求的位址是hello請求方式為Post必須帶username,userpass兩個參數,請求頭contentType必須是text/開頭。我們可以寫兩個URL一樣的方法,請求方式一個POST另一個GET當時會嚴格根據設定進行呼叫
#@RequestMapping同時也支援Ant風格的URL,在Ant中支援3種通配符。
? :表示配置一個字元。
*:符合任意字元
**:符合多層路徑
#在SpringMVC中對參數的處理:
@pathVariable:URL範本方式
用來映射URL中的佔位符,映射的變數名稱必須和占位符中的名稱一致,像這種我們的請求位址就會時http://localhost:8080/SpringMvcDemo2/user/testPathVariable/Miya,這個miya就是我們傳過去的參數,在傳統的URL中testPathVariable? username=miya但是這種不利於百度的收錄。
@RequestMapping("/testPathVariable/{username}") public String hello3(@PathVariable("username")String username){ System.out.println("username : " + username); return "hello"; }
@RequestParam:取得請求參數,如果請求參數名字和類型的名字一致我們可以省略吊這個註解,一樣可以接受到值。
@RequestMapping("/textParam") public String hello4(@RequestParam("username")String username,@RequestParam("userpass")String userpass){ System.out.println("userpass : " + userpass); return "hello"; }
@RequestHeader:取得請求頭的參數
在這裡有三個參數,value:指定參數的名稱,required:指定參數是否為必填,defualtValue:指定參數的預設值。
@RequestMapping("/testRequestHeader") public String hello5(@RequestHeader("Accept-Language") String language){ System.out.println("language=" + language); return "hello"; }
@CookieValue:用來取得客戶端Cookie的資訊。
@RequestMapping("/testCookieValue") public String hello6(@CookieValue("JSESSIONID")String sessionid){ System.out.println("sessionid=" + sessionid); return "hello"; }
SpringMVC可以使用ServletAPI作為請求方法的參數
@RequestMapping("/testServletAPI") public String hello7(HttpServletRequest request,HttpServletResponse response,HttpSession session){ //我们可以在这里使用 return "hello"; }
SpringMVC提供了以下幾種處理模型資料的方式。
1)ModelAndView:將處理方法的傳回類型設定為ModelAndView方法體可透過此模型物件新增模型資料。既包含視圖,也包含模型資訊
@RequestMapping("/testModelAndView") public ModelAndView hello8(){ ModelAndView modelAndView = new ModelAndView("hello"); //添加单个值 modelAndView.addObject("h","Hello Spring MVC"); return modelAndView; }
2)Map及形參:當形參為Map,Model,ModelMap時,處理方法返回時, Map中的資料會自動加入模型中。
Spring MVC在內部使用了一個Model介面儲存資料的數據,在呼叫方法前會建立一個隱含的模型物件作為資料模型的儲存容器。若傳入的參數為Map,Model,當ModelMap時,SpringMVC會自動儲存到容器中
@RequestMapping("/testMap") public String hello9(Map<String,Object> map){ map.put("mapdata", "map data"); return "hello"; }
3)@SessionAttributes:将这个模型中的某个属性存储到Session中,以便多个请求之间共享这个属性,只能用来修饰类。在里面的方法如果参数容器中如map里卖弄保存一个与定义的属性名字相同会保存到容器中共享
4)@ModelAttribute:方法形参标记该注解后,形参对象就会放到模型中。
SpringMVC在调用方法之前会逐个调用方法上标注了这个注解的方法。将@ModelAttribute中的属性保存到map中,可在执行表单提交生成对象之前,替换执行方法名相同的参数。
@ModelAttribute public User getUser(){ User user = new User(); System.out.println("调用 getUser 方法"); //默认保存名字为类名首字母小写的user对象到Request中 return user; } @ModelAttribute public void getUserById(Integer id,Map<String,Object> map){ User myuser = new User(); map.put("myuser", myuser); //手动指定user对象的名称,到Request中 System.out.println("调用 getUser 方法"); }
由@SessionAttributs会引发一个很容易轻视的错误当类使用@SessionAttributes修饰,而方法中使用了和SessionAttributes修饰同名的映射参数,确没有添加@ModelAttribute修饰时,则会报错。
以上是SpringMVC基礎配置的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SpringBoot和SpringMVC都是Java開發中常用的框架,但它們之間有一些明顯的差異。本文將探究這兩個框架的特點和用途,並對它們的差異進行比較。首先,我們來了解一下SpringBoot。 SpringBoot是由Pivotal團隊開發的,它旨在簡化基於Spring框架的應用程式的建立和部署。它提供了一種快速、輕量級的方式來建立獨立的、可執行

SpringBoot與SpringMVC的不同之處在哪裡? SpringBoot和SpringMVC是兩個非常流行的Java開發框架,用於建立Web應用程式。儘管它們經常分別被使用,但它們之間的差異也是很明顯的。首先,SpringBoot可以被看作是一個Spring框架的擴充或增強版。它旨在簡化Spring應用程式的初始化和配置過程,以幫助開發人

spring和springmvc的區別:1、定位和功能;2、核心功能;3、應用領域;4、擴展性。詳細介紹:1、定位和功能,Spring是一個綜合性的應用程式開發框架,提供了依賴注入、面向切面編程、事務管理等功能,旨在簡化企業級應用程式的開發,而Spring MVC是Spring框架中的一個模組,用於Web應用程式的開發,實現了MVC模式;2、核心功能等等。

SpringBoot和SpringMVC是Java開發中常用的兩個框架,它們都是由Spring框架所提供的,但在功能和使用方式上有一些區別。本文將分別介紹SpringBoot和SpringMVC的特點和區別。一、SpringBoot的特點:簡化配置:SpringBoot透過約定優於配置的原則,大大簡化了專案的配置過程。它可以自動配置專案所需的參數,開發人

springboot和springmvc區別是:1、意義不同;2、配置不同;3、依賴項不同;4、開發時間不同;5、生產力不同;6、實現JAR打包功能的方式不同;7、是否提供批次處理功能;8、作用不同;9、社群和文件支援不同;10、是否需要部署描述符。

攔截器(interceptor)的作用SpringMVC的攔截器類似於Servlet開發中的過濾器Filter,用於對處理器進行預處理和後處理。將攔截器依一定的順序聯結成一條鏈,這條鏈稱為攔截器鏈(InterceptorChain)。在存取被攔截的方法或欄位時,攔截器鏈中的攔截器就會依其先前定義的順序被呼叫。攔截器也是AOP思想的具體實作。攔截器和過濾器區別區別過濾器(Filter)攔截器(Intercepter)使用範圍是servlet規格中的一部分,任何JavaWeb工程都可以使用是Spri

隨著網路的發展,Web服務越來越普遍。 JavaAPI作為一種應用程式接口,也不斷地推出新的版本來適應不同的應用場景。而SpringMVC作為一種流行的開源框架,能夠幫助我們輕鬆地建立Web應用程式。本文將詳細講解在JavaAPI開發中,如何使用SpringMVC進行Web服務處理,包括配置SpringMVC、編寫控制器、使用

解析SpringBoot和SpringMVC之間的異同SpringBoot和SpringMVC是Java領域中非常重要的開發架構。雖然它們都屬於Spring框架的一部分,但在使用和功能上有一些明顯的區別。本文將對SpringBoot和SpringMVC進行比較,解析它們之間的異同。首先,讓我們來了解一下SpringBoot。 SpringBo
