四、Controller 配置總結、RestFul 風格

文章目錄

  • 一、Controller 配置總結
  • 二、RestFul 風格
    • 2.1 使用 @RequestMapping 的 method 屬性指定請求類型
  • 三、擴展:小黃鴨調試法




一、Controller 配置總結


  • 實現 Controller 控制器的方式

    實現 Controller 接口,重寫 handleRequest 方法實現

    • 控制器實現

      public class ImplementsController implements Controller {@Overridepublic ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("msg", "通過實現關系實現控制器!!!");modelAndView.setViewName("test");return modelAndView;}
      }
      
    • Spring 配置

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 其實不使用映射器和適配器也可以實現,因為 Spring 都給處理了 --><!--<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>--><bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/"/><property name="suffix" value=".jsp"/></bean><bean id="/ImplementsController" class="com.sys.controller.ImplementsController"/>
      </beans>
      

    使用注解實現控制器

    • 控制器實現

      @Controller
      @RequestMapping("/AnnotaionController")
      public class AnnotaionController {@RequestMapping("/annotaion")public String annotaionTest(Model model){model.addAttribute("msg" ,"通過注解實現控制器!!!");return "test";}
      }
      
    • Spring 配置

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttps://www.springframework.org/schema/mvc/spring-mvc.xsd"><!-- 自動掃描包,讓指定包下的注解生效,由IOC容器統一管理 --><context:component-scan base-package="com.sys.controller"/><!-- 讓Spring MVC不處理靜態資源 --><mvc:default-servlet-handler/><!-- 支持mvc注解驅動 --><mvc:annotation-driven /><!-- 視圖解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"id="internalResourceViewResolver"><!-- 前綴 --><property name="prefix" value="/WEB-INF/jsp/" /><!-- 后綴 --><property name="suffix" value=".jsp" /></bean></beans>
      




二、RestFul 風格


RestFul 風格詳解
  • 什么是 RestFul 風格:

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

  • RestFul 風格的作用:

    • 互聯網上所有的內容,都可以別成為資源。而 RestFul 風格可以通過不同的請求方式對資源進行操作。

  • HTTP 的請求方式:POST、DELETE、PUT、GET。

    • RestFul 風格要求每個資源都使用 URI (Universal Resource Identifier) 得到一個唯一的地址。所有資源都共享統一的接口,以便在客戶端和服務器之間傳輸狀態。使用的是標準的 HTTP 方法,比如 GET、PUT、POST 和 DELETE。
      總之就是REST是一種寫法上規范,獲取數據或者資源就用GET,更新數據就用PUT,刪除數據就用DELETE,然后規定方法必須要傳入哪些參數,每個資源都有一個地址。



  • 未使用 RestFul 風格的代碼示例

    • 控制器代碼示例

      @Controller
      @RequestMapping("/AnnotaionController")
      public class AnnotaionController {@RequestMapping("/annotaion")public String annotaionTest(Model model, int a, int b){int result = a + b;model.addAttribute("msg", "結果為" + result);return "test";}
      }
      
    • 訪問網址:http://localhost:8080/AnnotaionController/annotaion?a=1&b=2

  • 使用 RestFul 風格的代碼示例

    • 控制器代碼示例

      @Controller
      public class RestFulController {@RequestMapping("/restFul/{a}/{b}")public String restFul(Model model, @PathVariable int a,@PathVariable int b) {int result = a + b;model.addAttribute("msg", "結果為" + result);return "test";}
      }
      
    • 訪問網址:http://localhost:8080/restFul/1/2

從訪問網址上可以看出,未使用 RestFul 風格的控制器的訪問網址是需要問號拼接的,而使用之后只需要用斜杠拼個參數即可,參數會通過控制器的 @PathVariable 注解進行分配。




2.1 使用 @RequestMapping 的 method 屬性指定請求類型

  • POST

    @RequestMapping(value = “/hello”,method = {RequestMethod.POST})
    可替換為:@PostMapping

  • GET

    @RequestMapping(value = “/hello”,method = {RequestMethod.GET})
    可替換為:@GetMapping

  • PUT

    @RequestMapping(value = “/hello”,method = {RequestMethod.PUT})
    可替換為:@PutMapping

  • DELETE

    @RequestMapping(value = “/hello”,method = {RequestMethod.DELETE})
    可替換為:@DeleteMapping

  • PATCH

    @RequestMapping(value = “/hello”,method = {RequestMethod.PATCH})
    可替換為:@PatchMapping




三、擴展:小黃鴨調試法

  • 場景一:我們都有過向別人(甚至可能向完全不會編程的人)提問及解釋編程問題的經歷,但是很多時候就在我們解釋的過程中自己卻想到了問題的解決方案,然后對方卻一臉茫然。

  • 場景二:你的同行跑來問你一個問題,但是當他自己把問題說完,或說到一半的時候就想出答案走了,留下一臉茫然的你。

其實上面兩種場景現象就是所謂的小黃鴨調試法(Rubber Duck Debuging),又稱橡皮鴨調試法,它是我們軟件工程中最常使用調試方法之一。

在這里插入圖片描述

此概念據說來自《程序員修煉之道》書中的一個故事,傳說程序大師隨身攜帶一只小黃鴨,在調試代碼的時候會在桌上放上這只小黃鴨,然后詳細地向鴨子解釋每行代碼,然后很快就將問題定位修復了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39782.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39782.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39782.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Markdown編輯器 Mac版Typora功能介紹

Typora mac是一款跨平臺的Markdown編輯器&#xff0c;支持Windows、MacOS和Linux操作系統。它具有實時預覽功能&#xff0c;能夠自動將Markdown文本轉換為漂亮的排版效果&#xff0c;讓用戶專注于寫作內容而不必關心格式調整。 Typora Mac版除了支持常見的Markdown語法外&#…

騰訊云輕量服務器測評:2核 2G 4M

騰訊云輕量2核2G4M服務器&#xff0c;4M帶寬下載速度可達512KB/秒&#xff0c;系統盤為50GB SSD盤&#xff0c;300GB月流量&#xff0c;地域節點可選上海、廣州和北京&#xff0c;騰訊云百科分享騰訊云2核2G4M輕量應用服務器配置性能表&#xff1a; 目錄 騰訊云輕量2核2G4M服…

Linux下使用Ffmpeg循環推流

#前臺運行 ffmpeg -stream_loop -1 -re -i "/usr/local/mp4/test.mp4" -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://10.55.134.12/live/test#后臺運行 nohup ffmpeg -stream_loop -1 -re -i "/usr/local/mp4/test.mp4" -vcodec h264 -ac…

爬蟲逆向實戰(十五)--阿某某營登錄

一、數據接口分析 主頁地址&#xff1a;阿某某營 1、抓包 通過抓包可以發現登錄接口是Users/Login 2、判斷是否有加密參數 請求參數是否加密&#xff1f; 通過查看“載荷”模塊可以發現有一個s加密參數 請求頭是否加密&#xff1f; 無響應是否加密&#xff1f; 無cookie是…

【LangChain】P1 LangChain 應用程序的核心構建模塊 LLMChain 以及其三大部分

LangChain 的核心構建模塊 LLMChain LangChain 應用程序的核心構建模塊語言模型 - LLMs提示模板 - Prompt templates輸出解析器 - Output Parsers LLMChain 組合 LangChain 應用程序的核心構建模塊 LangChain 應用程序的核心構建模塊 LLMChain 由三部分組成&#xff1a; 語言…

電腦鍵盤打不了字按哪個鍵恢復?最新分享!

“有沒有朋友知道電腦鍵盤為什么會莫名其妙就打不了字&#xff1f;明明用得好好的&#xff0c;突然就打不了字了&#xff0c;真的讓人很迷惑&#xff01;有什么方法可以解決嗎&#xff1f;” 電腦鍵盤為我們的辦公提供了很大的方便&#xff0c;我們可以利用鍵盤輸入我們需要的文…

安防監控視頻云存儲平臺EasyCVRH.265轉碼功能更新:新增分辨率配置

安防視頻集中存儲EasyCVR視頻監控綜合管理平臺可以根據不同的場景需求&#xff0c;讓平臺在內網、專網、VPN、廣域網、互聯網等各種環境下進行音視頻的采集、接入與多端分發。在視頻能力上&#xff0c;視頻云存儲平臺EasyCVR可實現視頻實時直播、云端錄像、視頻云存儲、視頻存儲…

Python文件操作與輸入輸出:從基礎到高級應用

文章目錄 &#x1f340;引言&#x1f340;文件操作基礎&#x1f340;上下文管理器與文件自動關閉&#x1f340;文件的迭代與逐行讀取&#x1f340;文件的其他常見操作&#x1f340;輸入輸出基礎&#x1f340; 文件輸入輸出&#x1f340;格式化輸出&#x1f340;高級文件操作&am…

【BASH】回顧與知識點梳理(二十七)

【BASH】回顧與知識點梳理 二十七 二十七. 磁盤配額(Quota)27.1 磁盤配額 (Quota) 的應用與實作什么是 QuotaQuota 的一般用途Quota 的使用限制Quota 的規范設定項目 27.2 一個 XFS 文件系統的 Quota 實作范例實作 Quota 流程&#xff1a;設定賬號實作 Quota 流程-1&#xff1a…

jenkins gitlab 安裝

目錄 一 準備安裝環境 二 安裝gitlab軟件 三 配置gitlab 四 重新加載配置啟動gitlab 五 修改密碼 五 創建用戶組 一 準備安裝環境 sudo yum update sudo yum install -y curl policycoreutils-python openssh-server安裝 Postfix 郵件服務器&#xff0c;以便 Git…

qt事件系統源碼-----定時器

qt定時器的使用一般有以下幾種方式&#xff1a; 1、直接使用QTimer對象&#xff0c;綁定定時器的timeout信號&#xff1b; 2、使用QTimer的靜態方法singleshot方法&#xff0c;產生一個一次性的定時事件 3、在QObject子類中&#xff0c;調用startTimer方法&#xff0c;產生定…

矢量繪圖UI設計軟件Sketch mac中文版軟件說明

Sketch mac是一款適用于 UI/UX 設計、網頁設計、圖標制作等領域的矢量繪圖軟件。 Sketch mac軟件特點 1. 簡單易用的界面設計&#xff1a;Sketch 的用戶界面簡潔明了&#xff0c;使得用戶可以輕松上手操作&#xff0c;不需要復雜的學習過程。 2. 強大的矢量繪圖功能&#xff1a…

flinksql實時統計程序背壓延遲優化

問題&#xff1a; flinkcdcflinksql做實時讀取sls日志和實時統計業務指標&#xff0c;今天發現程序背壓了&#xff0c;業務延遲了6個小時。解決辦法&#xff1a; 1、資源優化 作業并發大時&#xff1a;在作業的高級配置的資源配置中&#xff0c;增加JobManager的資源&#xf…

香港服務器三網直連內地線路什么意思?好用嗎?

?  三網直連內地是指香港服務器可以直接連接中國內地的電信、聯通和移動三大運營商網絡&#xff0c;避免了中間網絡干線的支持。這樣可以實現直接、快速、穩定的網絡訪問&#xff0c;提高用戶對網絡訪問的效率&#xff0c;減少網絡訪問問題和擁堵的現象。 香港服務器直連內地…

XSS 跨站腳本攻擊

XSS(DOM) XSS 又稱CSS(Cross Site Scripting)或跨站腳本攻擊&#xff0c;攻擊者在網頁中插入由JavaScript編寫的惡意代碼&#xff0c;當用戶瀏覽被嵌入惡意代碼的網頁時&#xff0c;惡意代碼將會在用戶的瀏覽器上執行。 XSS攻擊可分為三種&#xff1a;分別為反射型(Reflected…

線程|線程的使用、四種實現方式

1.線程的實現方式 1.用戶級線程 開銷小&#xff0c;用戶空間就可以創建多個。缺點是&#xff1a;內核無法感知用戶級多個線程的存在&#xff0c;把其當作只有一個線程&#xff0c;所以只會提供一個處理器。 2.內核級線程 相對于用戶級開銷稍微大一點&#xff0c;可以利用多…

Unity C# 之 Azure 微軟SSML語音合成TTS流式獲取音頻數據以及表情嘴型 Animation 的簡單整理

Unity C# 之 Azure 微軟SSML語音合成TTS流式獲取音頻數據以及表情嘴型 Animation 的簡單整理 目錄 Unity C# 之 Azure 微軟SSML語音合成TTS流式獲取音頻數據以及表情嘴型 Animation 的簡單整理 一、簡單介紹 二、實現原理 三、注意事項 四、實現步驟 五、關鍵代碼 一、簡…

01- vdom 和模板編譯源碼

組件渲染的過程 template --> ast --> render --> vDom --> 真實的Dom --> 頁面 Runtime-Compiler和Runtime-Only的區別 - 簡書 編譯步驟 模板編譯是Vue中比較核心的一部分。關于 Vue 編譯原理這塊的整體邏輯主要分三個部分&#xff0c;也可以說是分三步&am…

《vue3實戰》運用radio單選按鈕或Checkbox復選框實現單選多選的試卷制作

文章目錄 目錄 系列文章目錄 1.《Vue3實戰》使用axios獲取文件數據以及走馬燈Element plus的運用 2.《Vue3實戰》用路由實現跳轉登錄、退出登錄以及路由全局守護 3.《vue3實戰》運用Checkbox復選框實現單選多選的試卷展現&#xff08;本文&#xff09; 文章目錄 前言 radio是什…

Java中List排序的4種方法

開發過程中經常會遇到讀取文件內容的情況&#xff0c;需要判斷文件是否為文本文件&#xff0c;及文件編碼格式&#xff0c;防止無法讀取內容或亂碼出現情況。 我們可以通過 java.io.File 類包找出文件是目錄還是常規文件。java.io.File 類包含兩種方法&#xff0c;它們分別是&…