-
用Spring MVC開發(fā)一個(gè)課程管理模塊
配置文件:
【配置1】——web應(yīng)用的部署描述文件web.xml,當(dāng)前的web.xml是由maven自動(dòng)生成的,它用到web-app_2_3的版本,這個(gè)標(biāo)準(zhǔn)之下,JSP頁面會(huì)默認(rèn)將EL表達(dá)式語言關(guān)閉,所以要將它替換掉,使用web_app_2_4以上版本,如下圖,這樣Web應(yīng)用就可以使用EL表達(dá)式。
【配置2】——web.xml中加入Spring和SpringMVC的聲明,以及所需Spring配置文件和SpirngMVC所需路徑,如下圖,所以現(xiàn)在有兩個(gè)上下文環(huán)境一個(gè)是SpringMVC的上下文環(huán)境,一個(gè)是Spring的上下文環(huán)境(提供了所有應(yīng)用公共使用的一些組件、一些服務(wù),有service層、dao層等等,這些服務(wù)是被整個(gè)應(yīng)用所共享的,沒有局限在某一個(gè)DispatcherServlet上下文環(huán)境之中),另外一個(gè)則是與DispatcherServlet上下文相關(guān)的WebApplicationContext上下文,該上下文包含Controllers、HandlerMapping、ViewResolver,這里通常指的是配置文件,可以有多個(gè)DispatcherServlet,多個(gè)DispatcherServlet可以使用公共的WebApplicationContext,可以使用不同的DispathcerServlet進(jìn)行不同的分發(fā),更好進(jìn)行不同類型的請求。
【配置3】——DispatcherServlet配置文件的配置。
【配置4】——Spring配置文件的配置。
查看全部 -
Controller——傳統(tǒng)方式
Controller中使用HttpServletRequest對象(方法中使用HttpServletRequest對象)
【步驟1】pom文件中引入Servlet的API
【步驟2】通過request把邏輯數(shù)據(jù)放入域?qū)ο髍equest對象中
課程總結(jié):
1、通過@Controller的annotation聲明了一個(gè)Controller
2、通過@RequestMapping的annotation映射了URL和方法,通常出現(xiàn)在類級別和方法級別,二者共同組合完成了對一個(gè)URL映射請求的攔截。
3、通過URL template結(jié)合使用(@Requestparam and @PathVariable)兩個(gè)標(biāo)記可以將URL路徑之中的參數(shù)綁定到方法參數(shù)中
4、可以通過使用HttpServletRequest或者HttpSession之類的對象來獲取想要的結(jié)果。
查看全部 -
Binding:將請求中的字段按照名字匹配的原則填入對象模型(模型對象和頁面數(shù)據(jù)的綁定)。
案例:課程添加及保存的維護(hù)界面。
描述:創(chuàng)建增加課程的方法,并跳轉(zhuǎn)課程增加的界面,設(shè)定訪問該方法的路徑為admin,請求限定為request,限制有一個(gè)請求參數(shù)add(意思是瀏覽器訪問時(shí)候路徑后+?add),注意:edit.jsp中標(biāo)簽的name屬性應(yīng)當(dāng)和模型對象中的Course屬性名稱一致,
隨后Controller中添加增加課程的方法,該方法通過在方法里設(shè)置Course對象來獲取前端form表單提交的數(shù)據(jù),這里通過返回"redirect:view2/"+course.getCourseId();就可以重定向到viewCourse2的方法并進(jìn)行添加課程的展示,添加日志信息確定是否攔截到了表單的數(shù)據(jù)信息,并把它綁定到了模型對象中l(wèi)og.debug("Info of Course:");log.debug(ReflectionToStringBuilder.toString(course)),ReflectionToStringBuilder是apache.lang包中Builder的一個(gè)類,進(jìn)行日志輸出進(jìn)行程序的調(diào)試很常見,將課程的內(nèi)容以鍵值對的形式,輸出在日志當(dāng)中,這樣就可以查看是否映射到了Course對象中。
映射多目錄結(jié)構(gòu)JSP:相對路徑即可。
@ModelAttribute:放在方法參數(shù)的注解,也可以完成數(shù)據(jù)綁定的功能,當(dāng)@ModelAttribute放在方法參數(shù)上時(shí),和使用這個(gè)標(biāo)簽沒有區(qū)別。當(dāng)將@ModelAttribute放在方法上標(biāo)識的時(shí)候,表示執(zhí)行這個(gè)controller類中的@RequestMapping標(biāo)注的方法前都要先執(zhí)行標(biāo)有@ModelAttribute的方法。
查看全部 -
SpringMVC中啟動(dòng)對JSON的支持:
步驟1:SpringMVC的上下文環(huán)境mvc-dispatcher-serlver.xml中配置ContentNegotiatingViewResolver,具體參數(shù)不做詳細(xì)講解,只需要知道它可以將SpringMVC相同的數(shù)據(jù)呈現(xiàn)不同的數(shù)據(jù)表現(xiàn)形式,由于這里主要講解JSON數(shù)據(jù)格式,這里使用MappingJackson2JsonView工具類庫,將模型數(shù)據(jù)轉(zhuǎn)化稱JSON格式。如下圖配置,其中JsonView類的作用是將模型數(shù)據(jù)轉(zhuǎn)化成JSON格式。
步驟2:Maven的pom文件引入依賴,使用jackson提供工程的javaBean的JSON的轉(zhuǎn)換。
案例:Controller中編寫支持JSON的方法,其它同之前課程一樣,只不過方法的返回參數(shù)Course前添加了@ResponseBody注解(并不是唯一的方式,它是簡潔的方式,不需要其他配置),返回的數(shù)據(jù)將以JSON格式進(jìn)行呈現(xiàn),可以把數(shù)據(jù)復(fù)制到具有JSON功能的文本編輯器,并使用JSON的視圖進(jìn)行展示。數(shù)據(jù)轉(zhuǎn)換為JSON的格式2:方法返回值前使用@ResponseEntity注解(該注解是SpringMVC抽象的實(shí)體,它用泛型包裹了實(shí)體類),只需要返回這個(gè)類的實(shí)例。如下圖(了解)
查看全部 -
網(wǎng)頁503,可能是 mvc.xml中 包名未填寫正確,按視頻添加HelloMVCController,正確的包名如下
<context:component-scan base-package="com.imooc.mvcdemo.controller" use-default-filters="false">
查看全部 -
POM:Project Object Model
查看全部 -
Spring MVC的模塊劃分
查看全部 -
Spring MVC基本概念(動(dòng)圖)
去掉黑色字,斜體,其余都是配置,真正需要寫的只有Controller
查看全部 -
View:呈現(xiàn)頁面。
查看全部 -
ViewResolver:視圖解析器,根據(jù)配置找出需要的視圖對象。
查看全部 -
ModelAndView
查看全部 -
HandlerExecutionChain
查看全部 -
HandlerMapping
查看全部 -
HandlerInterceptor:攔截器的意思,是一個(gè)接口,有三個(gè)方法分別是preHandle、postHandle、afrerCompletion??稍谡嬲{(diào)用Controller之前、之后、以及最終在Model發(fā)送到頁面View完全呈現(xiàn)去做很多事情。
查看全部 -
HandlerAdapter:是Controller的一種表現(xiàn)形式。
查看全部
舉報(bào)