javascript
jsp调用controller方法_SpringMVC五大核心组件及调用过程
Spring Web MVC 五大核心組件
DispatcherServlet 控制器入口 負責分發請求
HandlerMapping 負責根據請求 找到對應的控制器
Controller 真正處理請求的控制器
ModelAndView 封裝數據信息和視圖信息的
ViewResolver 視圖處理器 通過處理找到對應的頁面
DispatcherServlet
DispatcherServlet是前置控制器,配置在web.xml文件中的。攔截匹配的請求,Servlet攔截匹配規則要自己定義,把攔截下來的請求,依據相應的規則分發到目標Controller來處理,是配置spring MVC的第一步。
DispatcherServlet是前端控制器設計模式的實現,提供Spring Web MVC的集中訪問點,而且負責職責的分派,而且與Spring IoC容器無縫集成,從而可以獲得Spring的所有好處。
HandlerMapping
HandlerMapping 是處理器映射,它的作用是請求派發,負責請求和控制器建立對應的關系。它是由 DispatcherServlet 調用,DispatcherServlet 會從容器中取出所有 HandlerMapping 實例并遍歷,讓 HandlerMapping 實例根據自己實現類的方式去嘗試查找 Handler。也就是說,DispatcherServlet要將一個請求交給哪個特定的Controller,它需要咨詢一個Bean,這個Bean的名字為“HandlerMapping”。
Controller
控制器,負責處理由DispatcherServlet 分發的請求,它把用戶請求的數據經過業務處理層處理之后封裝成一個Model ,然后再把該Model 返回給對應的View 進行展示。
ModelAndView
封裝數據信息和視圖信息的模型。使用ModelAndView類用來存儲處理完后的結果數據,以及顯示該數據的視圖。從名字上看ModelAndView中的Model代表模型,View代表視圖,這個名字就很好地解釋了該類的作用。業務處理器調用模型層處理完用戶請求后,把結果數據存儲在該類的model屬性中,把要返回的視圖信息存儲在該類的view屬性中,然后讓該ModelAndView返回該Spring MVC框架。框架通過調用配置文件中定義的視圖解析器,對該對象進行解析,最后把結果數據顯示在指定的頁面上。
ViewResolver
視圖解析器,ViewResolver 的主要作用是把一個邏輯上的視圖名稱解析為一個真正的視圖。
五大組件的關系
DispatcherServlet收到請求后,依據HandlerMapping的配置,調用相應的Controller來處理,Controller將處理結果封裝成ModelAndView對象,返回給DispatcherServlet,DispatcherServlet依據ViewResolver的解析,調用相應的視圖對象,(如jsp)來生成相應的頁面。
一言概之,request請求到中央控制器——>傳到映射處理器——>轉發到指定controller——>獲取數據和view ,組成成ModelAndView組件——>通過ViewResolver返回到特定的前臺頁面。
SpringMVC原理
請求到來時,第一個接受這個請求的前端控制器叫DispatcherServlet(這個需要在web.xml中配置),后端控制器叫Controller。負責處理請求URL和后端控制器映射的叫HandMapping,它有多種類型,比較靈活,也是在一個xml文件上進行配置。負責業務邏輯處理的模型對象一般也是我們平常寫的DAO/DTO組件。只是它最后的返回更靈活,Controller返回一個ModelAndView對象給DispatcherServlet,ModelAndView可以攜帶一個視圖對象,也可以攜帶一個視圖對象的邏輯名。如果攜帶的是一個視圖對象的邏輯名,那DispatcherServlet需要一個ViewResolver來查找用于渲染回應的視圖對象。最后,DispatcherServlet將請求分派給ModelAndView對象指定的視圖對象。視圖對象負責渲染返回給客戶的回應。
更具體的工作流程是:
①當用戶在瀏覽器中點擊一個鏈接或者提交一個表單時,那么就會產生一個請求(request)。當請求離開瀏覽器時,它會攜帶用戶請求的信息(比如說請求的URL信息,用戶名,密碼什么的)。
②請求的第一站到達的是Spring的DispatcherServlet,它是一個前端控制器,工作是將用戶的請求委托給其他的組件(這里是交給Spring MVC的控制器)去處理。這里DispatcherServlet要決定將請求傳給哪一個控制器(Controller)去處理,那么這時就需要處理器映射(Handler Mapping)了。處理器映射會看請求的URL信息,然后決定將請求交給哪一個控制器去處理。比如說有兩個控制器ControllerA和ControllerB,分別處理后綴名為.html和.jsp送來的請求,那么當請求者的后綴名為.html時,那么DispatcherServlet就將請求交給ControllerA進行處理。
③當選擇了一個合適的控制器后,DispatcherServlet就會將請求交給這個控制器去處理。在這個控制器上,用戶的請求將會將用戶提交的一些信息交由控制器處理并等待。然而設計的比較好的控制器本身對信息做很少的處理或者根本不做處理,而是將業務邏輯交給一個或多個服務器對象(Model)去處理。
④當控制器對用戶請求所攜帶的信息進行處理(或交給模型層處理)后,經常會產生一些其他的需要返回給瀏覽器進行顯示的數據。這些原始數據直接顯示出來顯然是不友好的,那么就需要視圖(View)來對這些數據進行顯示了。控制器的最后一件事就是將模型數據打包,并且指定產生輸出的視圖的特定名稱,然后它將模型、視圖名稱以及request請求一起發送給DispatcherServlet。所以控制器并沒有與視圖進行耦合,因為傳遞給DispatcherServlet的視圖名稱并不是某一個指定的特殊的文件名稱(如后綴名一定是JSP或其他什么名稱),它只要是一個可以產生輸出和展示結果的邏輯名稱就可以了。
⑤DispatcherServlet會向一個視圖解析器(ViewResolver)進行請求,視圖解析器可以將邏輯視圖名稱映射到一個特定的視圖顯示文件上面。
⑥現在DispatcherServlet知道哪一個視圖文件可以顯示結果了。該視圖將會利用模板數據產生輸出,這些輸出通過response對象返回給客戶端進行顯示。
總結
以上是生活随笔為你收集整理的jsp调用controller方法_SpringMVC五大核心组件及调用过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ssm框架重定向_Java SSM 框架
- 下一篇: 数据结构中缀表达式转后缀表达式与后缀表达