javascript
jsp springmvc 视图解析器_SpringMVC学习笔记
Springmvc
springmvc是spring框架的一個(gè)模塊,springmvc和spring無需通過中間整合層進(jìn)行整合。
springmvc是一個(gè)基于mvc的web框架。
基本概念和執(zhí)行過程
第一步:瀏覽器發(fā)起請(qǐng)求到前端(核心)控制器(DispatcherServlet)
前端控制器決定什么類型的請(qǐng)求會(huì)進(jìn)入springmvc框架。
第二步:前端控制器請(qǐng)求處理器映射器(HandlerMapping)查找處理器(Handler)
映射器作用:根據(jù)特定規(guī)則查找處理器,找不到報(bào)異常。
第三步:處理器映射器(HandlerMapping)向前端控制器返回找到的處理器(Handler)
第四步:前端控制器調(diào)用處理器適配器(HandlerAdapter)去執(zhí)行Handler
適配器作用:執(zhí)行某種特定的Handler
第五步:處理器適配器去執(zhí)行處理器(Handler)
第六步:處理器(Handler)執(zhí)行完成后給處理器適配器返回模型視圖(ModelAndView)
第七步:處理器適配器向前端控制器繼續(xù)返回ModelAndView
第八步:前端控制器請(qǐng)求視圖解析器(ViewReslover)去解析視圖
第九步:視圖解析器向前端控制器返回視圖View
第十步:前端控制器進(jìn)行視圖渲染
第十一步:前端控制器向用戶響應(yīng)結(jié)果
入門程序
l 準(zhǔn)備環(huán)境和jar包
Spring的4+1
Spring的Spring-web
Spring的Spring-webmvc
jstl
l 創(chuàng)建springmvc配置文件
在classpath下創(chuàng)建springmvc的配置文件,文件名習(xí)慣是:springmvc.xml
l 配置前端(核心)控制器
在web.xml文件中配置springmvc的前端控制器DispatcherServlet,且向contextConfigLocation屬性注入springmvc配置文件的路徑。如果不配置contextConfigLocation,默認(rèn)加載WEB-INF/servletname-servlet.xml
url-pattern的值:*.action、/ 。 /*報(bào)錯(cuò)
l 配置處理器適配器
在springmvc的配置文件中,配置處理器適配器類SimpleControllerHandlerAdapter。能執(zhí)行實(shí)現(xiàn)了Controller接口的Handler。
l 編寫和配置處理器
處理器類Handler,其實(shí)功能等價(jià)于strtus2的action動(dòng)作類。需實(shí)現(xiàn)controller接口。才能由SimpleControllerHandlerAdapter適配器執(zhí)行。
向模型視圖填充數(shù)據(jù),相當(dāng)于填充到request域。
在springmvc配置文件中配置處理器類。
<bean name="/hello.action" class="com.springmvc_01.handler.UserHandler"></bean>
l 編寫視圖
在WEB-INF下創(chuàng)建jsp目錄,在目錄中創(chuàng)建index.jsp頁面
l 配置處理器映射器
在springmvc配置文件中配置處理器映射器類BeanNameUrlHandlerMapping,能根據(jù)bean的name屬性作為url查找處理器。
l 配置視圖解析器
在springmvc配置文件中配置視圖解析器InternalResourceViewResolver,解析jsp視圖。
l 部署調(diào)試
http://ip:port/site/動(dòng)作名
映射器和適配器
非注解映射器和適配器(掌握)
l 非注解映射器:
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
作用:根據(jù)bean的name屬性作為url查找。
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
簡(jiǎn)單url映射,配置時(shí),注入mappings指定url和處理器類的映射關(guān)系。
注:多個(gè)映射器可以共存,前端控制器自動(dòng)判斷用哪個(gè)映射器。
l 非注解適配器:
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter
要求編寫的Handler實(shí)現(xiàn)Controller接口。
org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter
要求編寫的Handler實(shí)現(xiàn)HttpRequestHandler接口。
此方法可以通過修改response,設(shè)置響應(yīng)的數(shù)據(jù)格式,比如響應(yīng)json等。
多個(gè)適配器可以共存
l DispatcherSerlvet.properties文件
位置在:/org/springframework/web/servlet/DispatcherServlet.properties,是框架的配置文件。
前端控制器默認(rèn)從DispatcherSerlvet.properties文件中加載映射器、適配器、視圖解析器等組件,如果不在配置文件中配置,使用默認(rèn)的加載。
注解映射器和適配器(掌握)
注解映射器:org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping。
注解適配器:org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter。
l 配置注解映射器適配器
配置主鍵映射器和適配器時(shí),可以用bean配置。
也可以使用<mvc:annotation-driven>配置,默認(rèn)加載參數(shù)綁定方法,json轉(zhuǎn)換解析器等功能。
開發(fā)中使用<mvc:annotation-driven>。
注:注解映射器和適配器必須配對(duì)使用。
l 開發(fā)注解Handler
n 編寫Handler類
使用@Controller標(biāo)識(shí)它是一個(gè)Handler動(dòng)作類
用@RequestMapping實(shí)現(xiàn)方法和url的映射,建議url和方法名一樣
n 配置Handler
可以使用bean單獨(dú)配置Handler
也可以使用<context:component-scan>標(biāo)簽指定掃描的包,自動(dòng)掃描Handler。
小結(jié)
理解springmvc的前端控制器、處理器映射器、處理器適配器、視圖解析器用法。
前端控制器url-pattern的配置:*.action、/
<mvc:annotation-driven>配置注解適配器和映射器
<context:component-scan>配置注解類掃描包
視圖解析器前綴和后綴
配置視圖解析器時(shí),可以注入prefix前綴,和suffix后綴。
用戶訪問的路徑=prefix+用戶url+suffix
Handler詳解
@RequestMapping
l url映射
將handler中的方法映射到url上。
l 窄化請(qǐng)求映射
在動(dòng)作類上用@RequestMapping指定訪問當(dāng)前動(dòng)作類中方法的父路徑。
l 限制請(qǐng)求方式
指定只接受get類型或post類型的請(qǐng)求。
handler方法返回值
l 返回ModelAndView
Handler中的方法可以返回ModelAndView
l 返回String
1. 返回邏輯視圖。
return "/jsp2";真正路徑=前綴+邏輯視圖+后綴
2. 重定向
return "redirect:/index.jsp";
3. 頁面轉(zhuǎn)發(fā)
return "forward:/index.jsp";
l 返回void
當(dāng)方法返回void時(shí),可以使用request轉(zhuǎn)發(fā)頁面,也可以使用response頁面重定向,也可以使用response指定響應(yīng)結(jié)果,例如響應(yīng)json數(shù)據(jù)。
參數(shù)綁定
客戶端發(fā)送的請(qǐng)求是key/value,經(jīng)過參數(shù)綁定,將請(qǐng)求參數(shù)綁定到handler方法的形參上。
l 默認(rèn)參數(shù)綁定
直接在controller方法形參上定義以下類型,可以直接使用。
n HttpServletRequest
n HttpServletResponse
n HttpSession
n Model/ModelMap:Model是一個(gè)接口,ModelMap是一個(gè)接口實(shí)現(xiàn)。
l 簡(jiǎn)單類型參數(shù)綁定
當(dāng)請(qǐng)求參數(shù)名和controller方法的形參名一致,參數(shù)會(huì)自動(dòng)綁定成功。
參數(shù)名和方法形參名可以不一致,可以通過@RequestParam對(duì)參數(shù)進(jìn)行綁定,。
l Pojo類型參數(shù)綁定
頁面中<input>的name屬性的值和handler中的方法的pojo形參中的屬性名一致,自動(dòng)將頁面中數(shù)據(jù)綁定到pojo。
l 包裝pojo類型參數(shù)綁定
Handler方法中形參類型是包裝pojo,pojo的屬性又是pojo。
讓<input>標(biāo)簽name屬性的值是handler中方法形參的pojo對(duì)象中的pojo屬性的屬性。會(huì)自動(dòng)參數(shù)綁定。
集合類型參數(shù)綁定
l 數(shù)組綁定
頁面發(fā)送多個(gè)相同key不同value的數(shù)據(jù)。在handler方法形參中定義數(shù)組接收。
l list綁定
在包裝pojo中定義list類型屬性
<input type="text" name="list[0]" value="b">
l map綁定
在包裝pojo中定義map類型屬性。
<input type="checkbox" name="map[key1]" value="c">
自定義converter
controller形參中的pojo對(duì)象,如果屬性中有日期類型,可能需要自定義參數(shù)綁定。
l 自定義類
自定義類實(shí)現(xiàn)Converter接口,重寫方法。
l 配置轉(zhuǎn)換器
配置自定義參數(shù)綁定bean,對(duì)應(yīng)的類是FormattingConversionServiceFactoryBean類,注入converters,指定轉(zhuǎn)換器類。
在注解配置中用conversion-service引用參數(shù)綁定類。
總結(jié)
以上是生活随笔為你收集整理的jsp springmvc 视图解析器_SpringMVC学习笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用python画钢铁侠_用自动铅笔素描画
- 下一篇: jmeter 取json值_Jmeter