Spring框架作業(yè)和對應講義PPT,表單處理,視圖解析器,映射處理器,注解【詩書畫唱】
內容導航
Spring?MVC框架的PPT內容
1、SPRING框架_簡介.ppt(Spring MVC部分)
2、SPRING框架_表單處理.ppt
3、SPRING框架_視圖解析器.ppt
4、SPRING框架_映射處理器.ppt
5、SPRING框架_注解.ppt
作業(yè)和講義
個人理解:Spring MVC(form表達提交,contrtoller框架等內容),Spring?Core框架(aop等內容)等框架都是工具,和開發(fā)模式的作用等等差不多。
個人嘗試的經驗:在實體類中聲明了多少個構造方法和別的類作為屬性,就在配置文件要都對應的配置,少了一個配置都會報錯
SPRING框架簡介和構造器注入的作業(yè)
個人給出的代碼答案1
applicationContext.xml中寫bean等的配置,在實體類中聲明了幾個private等的屬性,在bean中包裹的constructor-arg都要對應的有幾對。
單詞注釋:ApplicationContext就是應用上下文的意思
applicationContext.xml中寫bean等的配置
運行效果
Spring MVC框架的PPT內容?START
個人理解:Spring MVC(form表達提交,contrtoller框架等內容),Spring Core框架(aop等內容)等框架都是工具,和開發(fā)模式的作用等等差不多。
1、SPRING框架_簡介.ppt(Spring MVC部分)











SPRINGMVC框架
簡介
什么是SPRINGMVC
? Spring MVC 是一個模型 - 視圖 - 控制器(MVC)的Web框架。它的核心類是一個servlet,叫中央前端控制器DispatcherServlet,它負責發(fā)送每個請求到合適的處理程序,使用視圖來最終返回響應結果的概念。Spring MVC 是 Spring 產品組合的一部分,它享有 Spring IoC容器緊密結合Spring松耦合等特點,因此它有Spring的所有優(yōu)點。
什么是SPRINGMVC
??
創(chuàng)建一個Hello world程序
在創(chuàng)建springmvc項目時,必須下載對應的spring4.0以上的版本,下載地址:
http://maven.springframework.org/release/org/springframework/spring/
導包
在javaweb項目中,將以下包拷貝到項目的lib目錄下:
配置web.xml文件
打開web.xml文件,添加如下的代碼:
添加springmvc的配置文件
在src目錄下創(chuàng)建springmvc-servlet.xml文件。
創(chuàng)建HelloController類
在com.jy.controller包下創(chuàng)建一個java類。
創(chuàng)建index.jsp頁面
在/WEB-INF/my/目錄下創(chuàng)建index.jsp頁面。
調用HelloController類
啟動工程,打開瀏覽器,輸入地址:
http://localhost:8080/springmvc/demo/test
web.xml文件和springmvc配置文件的關系(一)
? 如果不想把springmvc的配置文件放在src目錄下,也可以使用如下的方式進行配置:
? 將springmvc-servlet.xml移到WEB-INF目錄下,修改web.xml文件。
web.xml文件和springmvc配置文件的關系(二)
? 也可以在web.xml文件中通過指定springmvc.xml的路徑進行配置。
2、SPRING框架_表單處理.ppt





SPRINGMVC框架
表單處理
springmvc框架表單處理程序
? 在工程中分別創(chuàng)建com.jy.bean.Student類和com.jy.controller.StudentController類。
創(chuàng)建頁面
? 在WEB-INF/my目錄下創(chuàng)建stu_add.jsp頁面。
創(chuàng)建跳轉到stu_add頁面的方法
? 在StudentController類中添加如下的方法。
創(chuàng)建頁面
? 在WEB-INF/my目錄下創(chuàng)建result.jsp頁面。
運行項目
? 在瀏覽器地址欄輸入地址:
http://localhost:8080/springmvc/demo/toAdd,輸入學生屬性后點擊提交按鈕,觀察后臺打印結果。
3、SPRING框架_視圖解析器.ppt
















SPRINGMVC框架
視圖解析器
視圖View
? 視圖的作用是渲染模型數據,將模型里的數據以某種形式呈現給客戶。
視圖解析器概述
? 視圖解析器的作用是將邏輯視圖轉為物理視圖,所有的視圖解析器都必須實現ViewResolver接口。?
? ?SpringMVC為邏輯視圖名的解析提供了不同的策略,可以在Spring WEB上下文中配置一種或多種解析策略,并指定他們之間的先后順序。每一種映射策略對應一個具體的視圖解析器實現類。程序員可以選擇一種視圖解析器或混用多種視圖解析器。可以通過order屬性指定解析器的優(yōu)先順序,order越小優(yōu)先級越高,SpringMVC會按視圖解析器順序的優(yōu)先順序對邏輯視圖名進行解析,直到解析成功并返回視圖對象,否則拋出ServletException異常。?
視圖解析器類型
? 視圖解析器的作用是將邏輯視圖轉為物理視圖,所有的視圖解析器都必須實現ViewResolver接口。?
? ?
視圖解析器InternalResourceViewResolver
? springmvc在處理器方法中通常返回的是邏輯視圖,如何定位到真正的頁面,就需要通過視圖解析器。springmvc里提供了多個視圖解析器,InternalResourceViewResolver就是其中之一:
視圖解析器InternalResourceViewResolver
order表示視圖解析的優(yōu)先級,數目越小優(yōu)先級越大(即:0為優(yōu)先級最高)。InternalResourceViewResolver在項目中的優(yōu)先級必須設置為最低,也就是order要最大。不然它會阻礙其他視圖解析器。當經過視圖解析器1時,如果能解析就解析而且不會再繼續(xù)往下。如果不能執(zhí)行就返回null,這樣下面的解析器才能繼續(xù)處理。而對于IRVR視圖解析器,不管能不能解析它都不會返回null。
使用mvc:view-controller不經控制器直接跳轉到頁面
? 若希望直接響應通過SpringMVC渲染的頁面,可以使用mvc:view-controller標簽實現
視圖解析器XmlViewResolver
? XmlViewResolver可以根據xml文件中定義的bean來解析視圖名稱。
? ?步驟一:在com.jy.controller包下創(chuàng)建ViewController類。
視圖解析器XmlViewResolver
? 步驟二:修改springmvc-servlet.xml,添加如下配置。
視圖解析器XmlViewResolver
? 步驟三:創(chuàng)建WEB-INF/views.xml文件。
視圖解析器XmlViewResolver
? 步驟四:導入jstl.jar包,同時創(chuàng)建WEB-INF/my/hello.jsp。
? ?
視圖解析器ResourceBundleViewResolver
? ?ResourceBundleViewResolver使用屬性文件(即properties文件)中定義的視圖bean來解析視圖名稱。
? ?步驟一:在con.jy.controller包下創(chuàng)建ResController類。
? ?
視圖解析器ResourceBundleViewResolver
? 步驟二:創(chuàng)建WEB-INF/my/res.jsp。
? ?
視圖解析器ResourceBundleViewResolver
? 步驟三:在src目錄下創(chuàng)建rb.properties文件。
? ?注意:def就是controller類中返回的字符串的值
? ?
視圖解析器ResourceBundleViewResolver
? 步驟四:在springmvc-servlet.xml文件中配置如下的代碼:
? ? ??
視圖解析器ResourceBundleViewResolver
? 步驟五:在項目中導入jstl.jar包,啟動工程。
? ? ??
視圖解析器優(yōu)先級
? 如果想在spring mvc應用程序中使用多個視圖解析器,那么可以使用order屬性設置優(yōu)先級順序。? ? ??
4、SPRING框架_映射處理器.ppt












SPRINGMVC框架
映射處理器
概述
? 如何根據http請求選擇合適的controller是MVC中一項十分關鍵的功能,在spring MVC中,HandlerMapping接口是這一活動的抽象。這四種HandlerMapping的實現叫映射解析器。
? 1、根據controller的name名稱來映射尋找(默認解析器)
? 2、根據URL來映射尋找
? 3、根據controller的類名來映射尋找
? 4、使用注解來映射尋找
根據controller的name屬性映射
? 步驟一:在springmvc配置文件中通過以下的代碼開啟這種形式的映射:
根據controller的name屬性映射
? 步驟二:在com.jy.controller包下創(chuàng)建一個名為BeanNameController類,該類必須實現Controller接口
根據controller的name屬性映射
? 步驟三:在springmvc配置文件中對BeanNameController類進行配置,并且在WEB-INF/my/目錄下創(chuàng)建hello.jsp文件。
根據URL來映射尋找
? 步驟一:在com.jy.controller包下創(chuàng)建一個名為SimpleController的類。該類可以實現Controller接口或者繼承AbstractController類。
根據URL來映射尋找
? 步驟二:在springmvc配置文件中進行以下的配置。
根據controller的類名來映射尋找
? 步驟一:在springmvc配置文件中進行以下的配置。
根據controller的類名來映射尋找
? 步驟二:在com.jy.controller包下創(chuàng)建TestController類。
? ?注意:controller類的類名中不能包含”name”,否則會配置失敗。
根據controller的類名來映射尋找
? 步驟三:在WEB-INF/my目錄下創(chuàng)建cn.jsp頁面。
? ?在瀏覽器地址欄輸入http://localhost:8080/springmvc/test進行測試
使用注解來映射尋找
? 步驟一:在com.jy.controller包下創(chuàng)建MyController類。
使用注解來映射尋找
? 步驟二:在WEB-INF/my目錄下創(chuàng)建success.jsp頁面。
5、SPRING框架_注解.ppt

























SPRINGMVC框架
注解
springmvc中的部分注解
? 1、@Controller 聲明該類為SpringMVC中的Controller
? ?2、@RequestMapping 用于映射Web請求,包括訪問路徑和參數(類或方法上)
? ?3、@RequestParam綁定單個請求參數值。
? ?4、@ResponseBody 支持將返回值放在response內,而不是一個頁面,通常用戶返回json數據(返回值旁或方法上)
? ?5、@RequestBody 允許request的參數在request體中,而不是在直接連接在地址后面。(放在參數前)
? ?6、@PathVariable 用于接收路徑參數,比如@RequestMapping(“/hello/{name}”)申明的路徑,將注解放在參數中前,即可獲取該值,通常作為Restful的接口實現方法。
? ?7、@RestController 該注解為一個組合注解,相當于@Controller和@ResponseBody的組合,注解在類上,意味著,該Controller的所有方法都默認加上了@ResponseBody。
springmvc中的部分注解
? 8、@ControllerAdvice 通過該注解,我們可以將對于控制器的全局配置放置在同一個位置,注解了@Controller的類的方法可使用@ExceptionHandler、@InitBinder、@ModelAttribute注解到方法上, 這對所有注解了 @RequestMapping的控制器內的方法有效。
? ?9、@ExceptionHandler 用于全局處理控制器里的異常
? ?10、@InitBinder 用來設置WebDataBinder,WebDataBinder用來自動綁定前臺請求參數到Model中。
? ?11、@ModelAttribute 本來的作用是綁定鍵值對到Model里,在@ControllerAdvice中是讓全局的@RequestMapping都能獲得在此處設置的鍵值對。
@Controller注解
? @Controller 用于標記在一個類上,使用它標記的類就是一個SpringMVC Controller 對象。
? ? 步驟一:創(chuàng)建net.test.controller包。
? ? 步驟二:在springmvc-servlet.xml文件中添加如下的配置
@Controller注解
? 步驟三:在net.test.controller包下創(chuàng)建Controller類
@RequestMapping注解
? ?RequestMapping是一個用來處理請求地址映射的注解(將請求映射到對應的控制器方法中),可用于類或方法上。用于類上,表示類中的所有響應請求的方法都是以該地址作為父路徑。RequestMapping請求路徑映射,如果標注在某個controller的類級別上,則表明訪問此類路徑下的方法都要加上其配置的路徑;最常用是標注在方法上,表明哪個具體的方法來接受處理某次請求。
@RequestMapping注解
? ?
@RequestParam注解
? ?@RequestParam用于將請求參數區(qū)數據映射到功能處理方法的參數上。
? @RequestParam有以下三個參數:value:參數名字,即入參的請求參數名字,如act表示請求的參數區(qū)中的名字為act的參數的值將傳入;required:是否必須,默認是true,表示請求中一定要有相應的參數,否則將拋出異常;defaultValue:默認值,表示如果請求中沒有同名參數時的默認值,設置該參數時,自動將required設為false。
@RequestParam注解
? ?
@PathVariable注解
? ?@PathVariable用于將請求URL中的模板變量映射到功能處理方法的參數上。
@ModelAttribute注解
? ?@ModelAttribute可以應用在方法參數上或方法上,作用主要是當注解在方法參數上時會將注解的參數對象添加到Model中;當注解在請求處理方法Action上時會將該方法變成一個非請求處理的方法,但其它Action被調用時會首先調用該方法。
? ?注意:被 @ModelAttribute 注解的方法會在Controller類中的每個被@RequestMapping注解的方法執(zhí)行之前都執(zhí)行
@ModelAttribute注解
? ?@ModelAttribute注解在沒有返回值的方法上。
@ModelAttribute注解
?@ModelAttribute注解在有返回值的方法上。
@ModelAttribute注解
? @ModelAttribute和@RequestMapping可以同時注釋一個方法。
@ModelAttribute注解
? 當@ModelAttribute注解用于方法參數時,它有了雙重功能,即“存/取”。首先,它從模型中取出數據并賦予對應的參數,如果模型中尚不存在,則實例化一個,并存放于模型中;其次,一旦模型中已存在此數據對象,接下來一個很重要的步驟便是將請求參數綁定到此對象上(請求參數名映射對象屬性名),這是Spring MVC提供的一個非常便利的機制--數據綁定。
@ModelAttribute注解
??
@SessionAttributes注解
? @SessionAttributes 是用來在 controller 內部共享 model 屬性的。我們可以在需要訪問 Session 屬性的 controller 上加上 @SessionAttributes,然后在 action 需要的 User 參數上加上 @ModelAttribute,并保證兩者的屬性名稱一致。SpringMVC 就會自動將 @SessionAttributes 定義的屬性注入到 ModelMap 對象,在 setup action 的參數列表時,去 ModelMap 中取到這樣的對象,再添加到參數列表。只要我們不去調用 SessionStatus 的 setComplete() 方法,這個對象就會一直保留在 Session 中,從而實現 Session 信息的共享。
? ?注意: @SessionAttributes只能在類上注釋,不能使用在方法上。
@SessionAttributes注解
@SessionAttributes注解
@SessionAttributes 除了可以通過屬性名指定需要放到會話中的屬性外,還可以通過模型屬性的對象類型指定哪些。
@Responsebody注解
@Responsebody表示該方法的返回結果直接寫入HTTP response body中。一般在異步獲取數據時使用,在使用@RequestMapping后,返回值通常解析為跳轉路徑,加上@Responsebody后返回結果不會被解析為跳轉路徑,而是直接寫入HTTP response body中。比如異步獲取json數據,加上@Responsebody后,會直接返回json數據。
@Responsebody注解
@requestBody注解
@requestBody注解常用來處理content-type不是默認的application/x-www-form-urlcoded編碼的內容,比如說:application/json或者是application/xml等。一般情況下來說常用其來處理application/json類型。
@requestBody注解
使用@requestBody先導入以下的jar包:
@requestBody注解
創(chuàng)建jsp頁面:
@requestBody注解
創(chuàng)建Controller類:
Spring?MVC框架的PPT內容 END
作業(yè)和講義?START


個人理解:autowire="byName"代替了ref部分的代碼。
1、創(chuàng)建一個英雄類和一個任務類,英雄類中有一個任務屬性和這個屬性的set方法以及一個探險的方法(調用showText方法),
任務類中有一個任務文本屬性和這個屬性的set方法,另外還有一個顯示任務內容的方法showText,請在spring容器中創(chuàng)建出英雄類,調用他的探險方法(使用byName自動裝配)
2、創(chuàng)建一個接口IFly(飛行能力接口),包含flying方法,創(chuàng)建一個Duck鴨子類和一個Plane飛機類,都實現IFly接口,通過spring容器寫出一段松耦合的代碼,能夠調用Duck和Plane類中的flying方法。
3、創(chuàng)建一個Book類,Pen類,Stu類,stu中包含一個Book屬性和Pen屬性
Book中有一個read方法,Pen中有一個Write方法。Stu中包含一個Perform方法,該方法會調用read和write方法。
通過byName自動裝配調用Stu中的Perform方法

sprinGCore框架就是項目管家,可以管理我們項目中需要new出來的任何的java類。
當引入sprinGCore框架以后,代碼中的new關鍵字幾乎就沒有了。
sprinGCore框架兩種注入方式:就是在配置文件中new出不同的對象的方式
注入方式兩種:
1、構造器注入(相當于在配置文件中調用構造方法)
2、setter方法注入(相當于在配置文件中調用屬性對應的setter方法)
值注入:就是注入的參數都是字符串,數字或者布爾類型
引入注入:就是注入的參數是一個對象
理解注入:設計模式中的一種策略模式
松耦合:目的就是為了便于修改和維護代碼。針對接口編程,盡量不要在代碼中使用new關鍵字
交通工具接口和具體實現類的例子
bean的作用域

1、創(chuàng)建貓類和狗類,都包含eat方法,通過spring aop配置當調用eat方法前調用Person(主人)類中的call(呼喚)方法。調用eat方法之后,調用主人類中的clear(清潔)方法
2、創(chuàng)建UserDao類和ProductDao類,都包含add,delete,update方法,創(chuàng)建日志類Logger,包含記錄操作的log方法,通過spring aop配置當調用Dao類中的add,delete和update方法之后,調用日志類中的log方法。

IOC的實現方式:DI(依賴注入)
AOP:面向切面編程,跟OOP(面向對象編程)
在項目的很多地方都要調用這段代碼(安全驗證)
飯前便后要洗手
吃飯的方法
便便的方法
洗手的方法(切面)
通知:調用吃飯方法之前使用切面(洗手)
? ? ? 調用便便方法之后使用切面(洗手)
? ? ? 調用吃飯方法成功之后使用切面(洗手)
? ? ? 調用吃飯方法發(fā)現沒有筷子時使用切面(洗手)
連接點:(選擇題提供了五個選項供你選擇,這五個選項就可以理解為連接點)
在調用吃飯方法之前調用洗手的方法
在調用吃飯方法之后調用洗手的方法
在調用吃飯方法成功以后調用洗手的方法
在調用吃飯方法拋出異常時調用洗手的方法
在調用吃飯方法之前和之后都調用洗手的方法
切點:(從選項中選出了正確的答案)
在調用吃飯方法之前調用洗手的方法變成了一個切點
亂碼處理的方法
doPost之前亂碼處理
doPost之后亂碼處理
doPost方法調用成功以后亂碼處理
doPost方法拋出異常時調用亂碼處理
doPost方法環(huán)繞處理
切點:doPost方法前調用亂碼處理
學生和老師
當學生考試時,老師鼓勵學生
Student類,考試方法,考駕照方法,創(chuàng)業(yè)方法
Teacher類,鼓勵方法
調用考試方法之前調用鼓勵的方法

1、創(chuàng)建一個Controller類,通過輸入地址http://localhost:8080/JO2/test能夠跳轉到/WEB-INF/index.jsp頁面
2、http://localhost:8080/JO2/pub/toLogin跳轉到/WEB-INF/pub/login.jsp
3、http://localhost:8080/JO2/pub/toReg跳轉到/WEB-INF/pub/reg.jsp
4、http://localhost:8080/JO2/list跳轉到/WEB-INF/product/proinfo.jsp
5、http://localhost:8080/JO2/logo跳轉到/WEB-INF/index.jsp
6、創(chuàng)建一個商品類,包含商品名稱,商品價格,商品類型(多選框),商品單位(下拉框),商品品牌(單選框),生產日期(文本框),在Springmvc中創(chuàng)建一個新增商品的表單,在Controller類中打印出這些輸入值并且跳轉到另外一個result.jsp,在這個頁面顯示所有的輸入值。

MYBATIS框架:通用數據庫框架
SPRINGCORE框架:通用框架,項目粘合劑(管家)
MVC:
Model模型層
View視圖層
Controller控制層
Struts2框架中servlet會升級為Action,而在springmvc框架中servlet就會升級為Controller
Maven工具:jar包管理工具
1、導包
2、修改web.xml,添加servlet的配置
3、導入核心配置文件/WEB-INF/springmvc-servlet.xml
創(chuàng)建一個Controller類,運行這個Controller類中的代碼,打印出Hello world
通過Controller來對表單中提交的數據進行處理:request.getParameter方法
在WEB-INF目錄下的jsp頁面是不能直接通過輸入頁面路徑訪問到的,必須通過控制器來進行跳轉