日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Spring mvc Controller和RestFul原理解析

瀏覽:53日期:2023-09-15 18:58:47

控制器Controller

控制器復雜提供訪問應用程序的行為,通常通過接口定義或注解定義兩種方法實現。 控制器負責解析用戶的請求并將其轉換為一個模型。 在Spring MVC中一個控制器類可以包含多個方法 在Spring MVC中,對于Controller的配置方式有很多種

實現Controller接口

Controller是一個接口,在org.springframework.web.servlet.mvc包下,接口中只有一個方法;

//實現該接口的類獲得控制器功能public interface Controller { //處理請求且返回一個模型與視圖對象 ModelAndView handleRequest(HttpServletRequest var1, HttpServletResponse var2) throws Exception;}

測試

編寫一個Controller類,ControllerTest1

// 定義控制器// 注意點:不要導錯包,實現Controller接口,重寫方法;public class ControllerTest1 implements Controller { public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { //返回一個模型視圖對象 ModelAndView mv = new ModelAndView(); mv.addObject('msg','Test1Controller'); mv.setViewName('test'); return mv; }}

編寫完畢后,去Spring配置文件中注冊請求的bean;name對應請求路徑,class對應處理請求的類

<bean name='/t1' />

編寫前端test.jsp,注意在WEB-INF/jsp目錄下編寫,對應我們的視圖解析器

<%@ page contentType='text/html;charset=UTF-8' language='java' %><html><head> <title>Kuangshen</title></head><body> ${msg}</body></html>

配置Tomcat運行測試,我這里沒有項目發布名配置的就是一個 / ,所以請求不用加項目名,OK!

說明:

實現接口Controller定義控制器是較老的辦法

缺點是:一個控制器中只有一個方法,如果要多個方法則需要定義多個Controller;定義的方式比較麻煩;

使用注解@Controller

@Controller注解類型用于聲明Spring類的實例是一個控制器(在講IOC時還提到了另外3個注解);

Spring可以使用掃描機制來找到應用程序中所有基于注解的控制器類,為了保證Spring能找到你的控制器,需要在配置文件中聲明組件掃描。

<!-- 自動掃描指定的包,下面所有注解類交給IOC容器管理 --><context:component-scan base-package='com.xiaohua.controller'/>

增加一個ControllerTest2類,使用注解實現;

// @Controller注解的類會自動添加到Spring上下文中@Controllerpublic class ControllerTest2{ //映射訪問路徑 @RequestMapping('/t2') public String index(Model model){ //Spring MVC會自動實例化一個Model對象用于向視圖中傳值 model.addAttribute('msg', 'ControllerTest2'); //返回視圖位置 return 'test'; }}

運行tomcat測試

可以發現,我們的兩個請求都可以指向一個視圖,但是頁面結果的結果是不一樣的,從這里可以看出視圖是被復用的,而控制器與視圖之間是弱偶合關系。

RequestMapping@RequestMapping注解用于映射url到控制器類或一個特定的處理程序方法。可用于類或方法上。用于類上,表示類中的所有響應請求的方法都是以該地址作為父路徑。

為了測試結論更加準確,我們可以加上一個項目名測試 myweb

只注解在方法上面

@Controllerpublic class TestController { @RequestMapping('/h1') public String test(){ return 'test'; }}

訪問路徑:http://localhost:8080 / 項目名 / h1

同時注解類與方法

@Controller@RequestMapping('/admin')public class TestController { @RequestMapping('/h1') public String test(){ return 'test'; }}

訪問路徑:http://localhost:8080 / 項目名/ admin /h1 , 需要先指定類的路徑再指定方法的路徑;

RestFul風格Restful就是一個資源定位及資源操作的風格。不是標準也不是協議,只是一種風格。基于這個風格設計的軟件可以更簡潔,更有層次,更易于實現緩存等機制。

功能

資源:互聯網所有的事物都可以被抽象為資源 資源操作:使用POST、DELETE、PUT、GET,使用不同方法對資源進行操作。 分別對應 添加、 刪除、修改、查詢。

傳統方式操作資源 :通過不同的參數來實現不同的效果!方法單一,post 和 get

http://127.0.0.1/item/queryItem.action?id=1 查詢,GET http://127.0.0.1/item/saveItem.action 新增,POST http://127.0.0.1/item/updateItem.action 更新,POST http://127.0.0.1/item/deleteItem.action?id=1 刪除,GET或POST

使用RESTful操作資源 : 可以通過不同的請求方式來實現不同的效果!如下:請求地址一樣,但是功能可以不同!

http://127.0.0.1/item/1 查詢,GET http://127.0.0.1/item 新增,POST http://127.0.0.1/item 更新,PUT http://127.0.0.1/item/1 刪除,DELETE

學習測試

在新建一個類 RestFulController

@Controllerpublic class RestFulController {}

在Spring MVC中可以使用 @PathVariable 注解,讓方法參數的值對應綁定到一個URI模板變量上。

@Controllerpublic class RestFulController { //映射訪問路徑 @RequestMapping('/commit/{p1}/{p2}') public String index(@PathVariable int p1, @PathVariable int p2, Model model){ int result = p1+p2; //Spring MVC會自動實例化一個Model對象用于向視圖中傳值 model.addAttribute('msg', '結果:'+result); //返回視圖位置 return 'test'; }}

我們來測試請求查看下

使用路徑變量的好處?

使路徑變得更加簡潔; 獲得參數更加方便,框架會自動進行類型轉換。 通過路徑變量的類型可以約束訪問參數,如果類型不一樣,則訪問不到對應的請求方法,如這里訪問是的路徑是/commit/1/a,則路徑與方法不匹配,而不會是參數轉換失敗。

我們來修改下對應的參數類型,再次測試

//映射訪問路徑@RequestMapping('/commit/{p1}/{p2}')public String index(@PathVariable int p1, @PathVariable String p2, Model model){ String result = p1+p2; //Spring MVC會自動實例化一個Model對象用于向視圖中傳值 model.addAttribute('msg', '結果:'+result); //返回視圖位置 return 'test';}

使用method屬性指定請求類型

用于約束請求的類型,可以收窄請求范圍。指定請求謂詞的類型如GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE等

我們來測試一下:

增加一個方法

//映射訪問路徑,必須是POST請求@RequestMapping(value = '/hello',method = {RequestMethod.POST})public String index2(Model model){ model.addAttribute('msg', 'hello!'); return 'test';}

我們使用瀏覽器地址欄進行訪問默認是Get請求,會報錯405:

如果將POST修改為GET則正常了;

//映射訪問路徑,必須是Get請求@RequestMapping(value = '/hello',method = {RequestMethod.GET})public String index2(Model model){ model.addAttribute('msg', 'hello!'); return 'test';}

小結:

Spring MVC 的 @RequestMapping 注解能夠處理 HTTP 請求的方法, 比如 GET, PUT, POST, DELETE 以及 PATCH。

所有的地址欄請求默認都會是 HTTP GET 類型的。

方法級別的注解變體有如下幾個: 組合注解

@GetMapping @PostMapping @PutMapping @DeleteMapping @PatchMapping @GetMapping 是一個組合注解

它所扮演的是 @RequestMapping(method =RequestMethod.GET) 的一個快捷方式。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久精品二区亚洲w码| 99久久99视频只有精品| 久久99伊人| 欧美日韩视频一区二区三区| 久久久成人网| 久久久久国产精品一区二区| 成人自拍av| 亚洲福利免费| 婷婷丁香综合| av不卡在线| 蜜桃久久av一区| 亚洲制服少妇| 一区二区三区国产盗摄| 日韩欧美精品一区二区综合视频| 亚洲毛片网站| 欧美偷窥清纯综合图区| 国产日产精品_国产精品毛片| 国产精品二区影院| 成人在线免费观看网站| 欧美日韩尤物久久| 亚洲深夜av| 亚洲另类黄色| 国产精品久久久一区二区| 精品视频一二| 欧美日韩99| 精品久久网站| 日韩欧美不卡| 午夜欧美在线| 亚洲精品影视| 国产精品1luya在线播放| 国产传媒在线观看| 欧美日韩国产高清| 日韩精品亚洲aⅴ在线影院| 国产乱人伦丫前精品视频| 丰满少妇一区| 亚洲高清二区| 日本伊人久久| 美日韩一区二区三区| 日韩一区二区三区在线免费观看| 99国产精品| 日本aⅴ精品一区二区三区| 国产精品亚洲综合在线观看| 日韩欧美精品一区| 亚洲无线观看| 精品视频黄色| 激情五月综合网| 日本不卡视频在线观看| 久久毛片亚洲| 老色鬼久久亚洲一区二区| 国产免费av一区二区三区| 丝袜美腿诱惑一区二区三区| 免费看日韩精品| 国产精品多人| 伊人精品在线| 国产精品久久久久久久免费软件| 亚洲va中文在线播放免费| 久久成人国产| 国产精品地址| 一本一本久久| 免费在线观看一区| 噜噜噜久久亚洲精品国产品小说| 欧美日韩a区| 欧美91精品| 国产精品久久久久久妇女| 欧美日韩尤物久久| 欧美视频一区| 伊人影院久久| 久久精品国内一区二区三区| 久久亚洲影院| 91精品xxx在线观看| 日韩成人一级| 欧美一区二区性| 国产日韩亚洲| 国产亚洲精品v| 国产成人精品一区二区三区视频| 模特精品在线| 黄色在线观看www| 日本一区福利在线| 欧美jjzz| 成人精品视频| 欧美在线黄色| 精品91福利视频| 青青草视频一区| 日韩午夜免费| 综合日韩av| 国产图片一区| 亚洲免费精品| 91精品啪在线观看国产爱臀| 亚洲大全视频| 蜜桃av在线播放| 国产精品色在线网站| 视频在线观看91| 欧美一区二区三区激情视频| 精品中文字幕一区二区三区四区| 亚洲天堂免费| 九色精品91| 日韩国产在线| 国语精品一区| 国产精品jk白丝蜜臀av小说| 亚洲九九精品| 午夜一区在线| 久久久精品网| 亚洲精品**中文毛片| 国产精品99精品一区二区三区∴| 日韩国产在线观看一区| 视频一区在线播放| 亚洲激情偷拍| 国产偷自视频区视频一区二区| 日韩精品免费一区二区在线观看| 久久亚洲精品中文字幕| 欧美日韩一区自拍| 日韩精品中文字幕一区二区| 综合国产精品| 日av在线不卡| 噜噜噜久久亚洲精品国产品小说| 不卡中文字幕| 久久国产精品成人免费观看的软件| 鲁鲁在线中文| 国产精品不卡| 亚洲深夜视频| 欧美日韩视频网站| 午夜av不卡| 日韩在线不卡| 91精品韩国| 波多野结衣一区| 99综合视频| 亚洲一区成人| 亚洲视频二区| 日韩欧美中文字幕一区二区三区| 免费观看在线综合色| 欧美中文字幕| 亚洲人成网77777色在线播放| 免费久久99精品国产自在现线| 亚洲一区欧美激情| 视频一区二区欧美| 日韩精品乱码av一区二区| 日韩精品一页| 久久国产精品美女| 97精品一区| 久久精品高清| 黄色在线一区| 蜜桃一区二区三区在线| 日韩精品视频中文字幕| 国产精品探花在线观看| 精品久久久亚洲| 国产综合色区在线观看| 欧美亚洲精品在线| 蜜臀久久久99精品久久久久久| 亚洲性视频在线| 日本欧美在线| 麻豆极品一区二区三区| 欧美亚洲网站| 精品中文字幕一区二区三区| 日韩国产综合| 欧美日韩国产高清| 天堂av一区| 美女视频黄 久久| 久久香蕉国产| 一区二区三区网站| 国产精品一区二区三区四区在线观看 | 亚洲一区日本| 日本欧美韩国一区三区| 精品三级国产| 亚洲婷婷免费| 亚洲精品婷婷| 国产一区二区三区四区二区| 婷婷精品视频| 少妇精品久久久一区二区三区| 国产精品男女| 亚洲国内精品| 日韩高清一区| 成人黄色av| 丝袜诱惑制服诱惑色一区在线观看 | 欧美精品中文| 九九精品调教| 亚洲精品动态| 亚洲风情在线资源| 免费在线观看日韩欧美| 欧美91在线| 亚洲欧洲午夜| 欧美激情视频一区二区三区在线播放| 三级在线看中文字幕完整版| 丝瓜av网站精品一区二区| 麻豆国产精品一区二区三区| 久久精品国产大片免费观看| 日韩不卡在线观看日韩不卡视频| 91亚洲国产| 天海翼精品一区二区三区| 97精品在线| 日本成人在线一区| 亚洲天堂黄色| 国产精品白丝久久av网站| 1024精品久久久久久久久| 国产精品久一| 国产偷自视频区视频一区二区| 欧美经典一区| 日本 国产 欧美色综合| 中文字幕一区久| 日韩激情av在线| 在线日韩电影|