SpringMVC執(zhí)行步驟、Model的使用詳解
第一個(gè)SpringMvc HelloWorld
無啟動(dòng)類
springboot才有啟動(dòng)類
前端操作
訪問項(xiàng)目名進(jìn)入默認(rèn)主頁,顯示一個(gè)鏈接
點(diǎn)擊鏈接后請(qǐng)求helloWorld.do跳轉(zhuǎn)另一個(gè)jsp頁面
后臺(tái)執(zhí)行步驟
*也對(duì)應(yīng)controller的RequestMapping,若要映射多有請(qǐng)求則為/
web.xml負(fù)責(zé)攔截請(qǐng)求并分發(fā)到controller處理
spring-mvc.xml負(fù)責(zé)解析controller的返回值,跳轉(zhuǎn)到相應(yīng)的頁面上。
spring-mvc.xml以及在web.xml中的聲明都可以用Java Configuration來代替
項(xiàng)目實(shí)例:eclipse/SpringMvc01
第二個(gè)SpringMvc項(xiàng)目
項(xiàng)目簡介
訪問首頁,請(qǐng)求后臺(tái)controller初始化學(xué)生列表,裝入ModelAndView后返回list.jsp,顯示學(xué)生列表。
list.jsp點(diǎn)擊“添加學(xué)生”鏈接請(qǐng)求后臺(tái)controller,controller處理頁面跳轉(zhuǎn)為add.jsp。
list.jsp點(diǎn)擊“修改”操作,帶學(xué)生id參數(shù)到后臺(tái)controller處理,controller調(diào)出該id學(xué)生信息,封裝到ModelAndView中并返回update.jsp頁面。
知識(shí)點(diǎn)整合
SpringMvc對(duì)象屬性自動(dòng)封裝。參見add.jsp。
SpringMvc亂碼解決:配置一個(gè)過濾器。參見web.xml。
SpringMvc重定向與轉(zhuǎn)發(fā):轉(zhuǎn)發(fā)能帶參數(shù),但是網(wǎng)址欄不會(huì)改變,重定向會(huì)改變。參見StudentController
SpringMvc對(duì)servlet API的支持:支持request、response等。參見UserController。
SpringMvc自動(dòng)解析json:引入jar包、命名空間、加注解。參見UserController。
代碼實(shí)例:SpringMvc02
SpringMvc對(duì)rest風(fēng)格url的支持
特點(diǎn):請(qǐng)求任何controller都沒有.do后綴,請(qǐng)求前端頁面沒有.jsp;所有的url都沒有后綴(但博主似乎支持帶.html后綴)。
@PathVariable獲取url參數(shù)。
SpringMvc對(duì)靜態(tài)資源的映射
代碼實(shí)例:SpringMvc5Rest
SpringMvc文件上傳
引入jar包、配置bean
SpringMvc文件上傳
引jar包、配置bean
單文件上傳
多文件上傳
代碼實(shí)例:SpringMvc6FileUpload
圖解SpringMvc的執(zhí)行流程
1.用戶發(fā)起請(qǐng)求到前端控制器DispatcherServlet
前端控制器 <!-- 前端控制器--> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:ApplicationContext.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!-- 這里不能使用/* /*要在過濾器中使用--> <url-pattern>/</url-pattern> </servlet-mapping>
2.前端控制器發(fā)送url請(qǐng)求處理器映射器HandlerMapping根據(jù)url查找Handler
3.處理器映射器返回前端控制器一個(gè)執(zhí)行鏈
4.前端控制器請(qǐng)求處理器適配器進(jìn)行Handler
5.處理器適配器選擇合適的處理器(Handler一般是controller)
controller控制器返回ModelandView以及視圖名
//接受路徑名為h1的請(qǐng)求 @RequestMapping("/h1") public String hello(Model model){ //將內(nèi)容Hello,SpringMvc以參數(shù)名msg返回給經(jīng)視圖解析器解析的hello頁面 model.addAttribute("msg","Hello,SpringMvc"); return "hello";//會(huì)被視圖解析器處理 } //這里我使用了Model
6.Handler將ModelAndView返回給處理器適配器
7.處理器適配器將ModelAndView返回給前端控制器
8.前端控制器請(qǐng)求視圖解析器View resolver進(jìn)行視圖解析 根據(jù)邏輯視圖添加前綴和后綴解析成真正的物理視圖(jsp等)
<!-- 4. 視圖解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value="/.jsp"/> </bean>
9.視圖解析器向前端控制器返回view
10.渲染視圖,將模型數(shù)據(jù)填充到request域
11.響應(yīng)視圖
前端控制器,處理器映射器,處理器適配器不需要我們寫
處理器需要我們寫(一般就是Controller)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringMVC MVC架構(gòu)與Servlet使用詳解
MVC設(shè)計(jì)模式一般指 MVC 框架,M(Model)指數(shù)據(jù)模型層,V(View)指視圖層,C(Controller)指控制層。使用 MVC 的目的是將 M 和 V 的實(shí)現(xiàn)代碼分離,使同一個(gè)程序可以有不同的表現(xiàn)形式。其中,View 的定義比較清晰,就是用戶界面2022-10-10Java數(shù)據(jù)結(jié)構(gòu)之鏈表實(shí)現(xiàn)(單向、雙向鏈表及鏈表反轉(zhuǎn))
這篇文章主要給大家介紹了關(guān)于Java數(shù)據(jù)結(jié)構(gòu)之鏈表實(shí)現(xiàn)的相關(guān)資料,其中包括單向鏈表、雙向鏈表及鏈表反轉(zhuǎn)的實(shí)現(xiàn)代碼,需要的朋友可以參考下2021-06-06java分頁攔截類實(shí)現(xiàn)sql自動(dòng)分頁
這篇文章主要為大家詳細(xì)介紹了java分頁攔截類可以實(shí)現(xiàn)sql自動(dòng)分頁,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11Spring的Xml和JavaConfig 擴(kuò)展哪個(gè)好用
今天給大家介紹基于注解的Spring擴(kuò)展,Spring的Xml和JavaConfig 擴(kuò)展的配置方法,關(guān)于Spring的Xml和JavaConfig 擴(kuò)展你會(huì)選哪個(gè)呢,帶著這個(gè)問題一起通過本文學(xué)習(xí)下吧2021-05-05SpringBoot的@RestControllerAdvice作用詳解
這篇文章主要介紹了SpringBoot的@RestControllerAdvice作用詳解,@RestContrllerAdvice是一種組合注解,由@ControllerAdvice,@ResponseBody組成,本質(zhì)上就是@Component,需要的朋友可以參考下2024-01-01如何在Intellij中安裝LeetCode刷題插件方便Java刷題
這篇文章主要介紹了如何在Intellij中安裝LeetCode刷題插件方便Java刷題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08springboot?通過博途獲取plc點(diǎn)位的數(shù)據(jù)代碼實(shí)現(xiàn)
這篇文章主要介紹了springboot?通過博途獲取plc點(diǎn)位的數(shù)據(jù)的代碼實(shí)現(xiàn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08