




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第14章SpringMVC框架基礎學習目的與要求本章重點講解SpringMVC的工作原理、控制器、數據綁定以及數據庫編程。通過本章的學習,了解Spring
MVC的工作原理,掌握Spring
MVC應用的開發步驟。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
目錄14.1SpringMVC的工作原理14.2SpringMVC的工作環境14.3基于注解的控制器14.4Spring的數據庫編程14.5基于SpringMVC框架的注冊與登錄《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.1SpringMVC的工作原理SpringMVC框架主要由DispatcherServlet、處理器映射、控制器、視圖解析器、視圖組成,其工作原理,如圖14.1所示。從圖14.1可總結出Spring
MVC的工作流程如下:1.客戶端請求提交到DispatcherServlet;2.由DispatcherServlet控制器尋找一個或多個HandlerMapping,找到處理請求的Controller;3.DispatcherServlet將請求提交到Controller;4.Controller調用業務邏輯處理后,返回ModelAndView;5.DispatcherServlet尋找一個或多個ViewResoler視圖解析器,找到ModelAndView指定的視圖;6.視圖負責將結果顯示到客戶端。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.1SpringMVC的工作原理圖14.1中包含4個Spring
MVC接口:DispatcherServlet、HandlerMapping、Controller和ViewResoler。Spring
MVC所有的請求都經過DispatcherServlet來統一分發。DispatcherServlet將請求分發給Controller之前,需要借助于Spring
MVC提供的HandlerMapping定位到具體的Controller。HandlerMapping接口負責完成客戶請求到Controller映射。Controller接口將處理用戶請求,這和Java
Servlet扮演的角色是一致的。一旦Controller處理完用戶請求,則返回ModelAndView對象給DispatcherServlet前端控制器,ModelAndView中包含了模型(Model)和視圖(View)。從宏觀角度考慮,DispatcherServlet是整個Web應用的控制器;從微觀考慮,Controller是單個Http請求處理過程中的控制器,而ModelAndView是Http請求過程中返回的模型(Model)和視圖(View)。ViewResolver接口(視圖解析器)在Web應用中負責查找View對象,從而將相應結果渲染給客戶。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
目錄14.1SpringMVC的工作原理14.2SpringMVC的工作環境14.3基于注解的控制器14.4Spring的數據庫編程14.5基于SpringMVC框架的注冊與登錄《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.2SpringMVC的工作環境在第2章Java
Web開發環境的基礎上,導入Spring
MVC的相關JAR包,即可開發Spring
MVC應用。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.2.1Spring的下載使用Spring框架開發應用程序時,需要引用Spring框架自身的JAR包。Spring
Framework
6.0.0的JAR包可以從Maven
中央庫獲得。Spring的JAR包中,有四個基礎包:spring-core-6.0.0.jar、spring-beans-6.0.0.jar、spring-context-6.0.0.jar和spring-expression-6.0.0.jar,分別對應Spring核心容器的四個模塊:Spring-core模塊、Spring-beans模塊、Spring-context模塊和Spring-expression模塊。對于Spring框架的初學者,開發Spring應用時,只需要將Spring的四個基礎包和Spring
Commons
Logging
Bridge對應的JAR包spring-jcl-6.0.0.jar復制到Web應用的WEB-INF/lib目錄下即可。對于Spring
MVC框架的初學者,開發Spring
MVC應用時,只需要將Spring的4個基礎JAR包、Spring
Commons
Logging
Bridge對應的JAR包spring-jcl-6.0.0.jar、AOP實現JAR包spring-aop-6.0.0.jar以及兩個Web相關的JAR包(spring-web-6.0.0.jar和spring-webmvc-6.0.0.jar)復制到Web應用的WEB-INF/lib目錄下即可。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.2.1Spring的下載Tomcat
10運行Spring
MVC
6.0應用時,DispatcherServlet接口依賴性能監控micrometer-observation和micrometer-commons兩個包進行請求分發。因此,Spring
MVC應用所添加的JAR包如圖14.2所示。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.2.2使用Eclipse開發SpringMVC的Web應用1.創建Web應用并導入JAR包按照1.2.2節的操作步驟,在Eclipse中,創建一個Web項目ch14_1,將如圖14.2所示的JAR包添加到ch14_1的WEB-INF/lib目錄中。2.在web.xml文件中部署DispatcherServlet在開發Spring
MVC應用時,需要在web.xml(webapp/WEB-INF/)中部署DispatcherServlet。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.2.2使用Eclipse開發SpringMVC的Web應用3.創建Web應用首頁在ch14_1應用的webapp目錄下,創建應用的首頁面index.jsp。4.創建Controller類在應用的src目錄下,創建包controller,并在該包中創建基于注解的名為“IndexController”的控制器類,該類中有兩個處理請求方法,分別處理首頁中“注冊”和“登錄”超鏈接請求。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.2.2使用Eclipse開發SpringMVC的Web應用5.創建SpringMVC的配置文件在Spring
MVC中,使用掃描機制找到應用中所有基于注解的控制器類。所以,為了讓控制器類被Spring
MVC框架掃描到,需要在配置文件中聲明spring-context,并使用<context:component-scan/>元素指定控制器類的基本包(請確保所有控制器類都在基本包及其子包下)。另外,需要在配置文件中定義Spring
MVC的視圖解析器(ViewResolver)6.應用的其他頁面IndexController控制器的register方法處理成功后,跳轉到“/WEB-INF/jsp/register.jsp”視圖;IndexController控制器的login方法處理成功后,跳轉到“/WEB-INF/jsp/login.jsp”視圖。因此,應用的“/WEB-INF/jsp”目錄下應有“register.jsp”和“login.jsp”頁面,此兩個JSP頁面代碼略。7.發布并運行Spring
MVC應用在Eclipse中第一次運行Spring
MVC應用時,需要參考2.2.2節將應用發布到Tomcat。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.2.2使用Eclipse開發SpringMVC的Web應用7.發布并運行Spring
MVC應用在Eclipse中第一次運行Spring
MVC應用時,需要將應用發布到Tomcat。例如,運行ch14_1應用時,可以選中應用名稱ch14_1單擊右鍵,選擇【Run
As】/【Run
on
Server】打開如圖14.3所示的對話框,在對話框中單擊【Finish】即完成發布并運行。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
目錄14.1SpringMVC的工作原理14.2SpringMVC的工作環境14.3基于注解的控制器14.4Spring的數據庫編程14.5基于SpringMVC框架的注冊與登錄《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.3基于注解的控制器使用基于注解的控制器,具有如下兩個優點:1.在基于注解的控制器類中,可以編寫多個處理方法,進而可以處理多個請求(動作)。這就允許將相關的操作編寫在同一個控制器類中,從而減少控制器類的數量,方便以后的維護。2.基于注解的控制器不需要在配置文件中部署映射,僅需要使用RequestMapping注解類型注解一個方法進行請求處理。在SpringMVC中,最重要的兩個注解類型是Controller和RequestMapping。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.3.1Controller注解類型在SpringMVC中,使用org.springframework.stereotype.Controller注解類型聲明某類的實例是一個控制器。例如,在應用的src/main/java目錄下,創建controller
包,并在該包中創建Controller注解的控制器類IndexController。/**“@Controller”表示IndexController的實例是一個控制器*@Controller相當于@Controller("indexController")或@Controller(value="indexController")*/@ControllerpublicclassIndexController{ //處理請求的方法}《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.3.2RequestMapping注解類型需要使用RequestMapping注解類型將請求與處理方法一一對應。1.方法級別注解@RequestMapping(value="/index/login")publicStringlogin(){
return"login";}2.類級別注解@RequestMapping("/index")publicclassIndexController{
@RequestMapping("/login") publicStringlogin(){ return"login"; }《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.3.2RequestMapping注解類型為方便程序維護,建議開發者采用類級別注解,將相關處理放在同一個控制器類中,例如,對商品的增、刪、改、查處理方法都可以放在GoodsOperate控制類中。@RequestMapping注解的value屬性表示請求路徑;method屬性表示請求方式。如果方法上的@RequestMapping注解沒有設置method屬性,則get和post請求都可以訪問;如果方法上的@RequestMapping注解設置了method屬性,則只能是相應的請求方式可以訪問。@RequestMapping還有特定于HTTP請求方式的組合注解。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
(1)@GetMapping相當于@RequestMapping(method=RequestMethod.GET),處理get請求。使用@RequestMapping編寫是@RequestMapping(value="requestpath",method=RequestMethod.GET);使用@GetMapping可簡寫為@GetMapping("requestpath")。通常在查詢數據時使用。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
(2)@PostMapping相當于@RequestMapping(method=HttpMethod.POST),處理post請求。使用@RequestMapping編寫是@RequestMapping(value="requestpath",method=RequestMethod.POST);使用@PostMapping可簡寫為@PostMapping("requestpath")。通常在新增數據時使用。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
(3)@PutMapping、@PatchMapping相當于@RequestMapping(method=RequestMethod.PUT/PATCH),處理put和patch請求。使用@RequestMapping編寫是@RequestMapping(value="requestpath",method=RequestMethod.PUT/PATCH);使用@PutMapping可簡寫為@PutMapping("requestpath")。兩者都是更新,@PutMapping為全局更新,@PatchMapping是對put方式的一種補充,put是對整體的更新,patch是對局部的更新。通常在更新數據時使用。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
(4)@DeleteMapping相當于@RequestMapping(method=RequestMethod.DELETE),處理delete請求。使用@RequestMapping編寫是@RequestMapping(value="requestpath",method=RequestMethod.DELETE);使用@PutMapping可簡寫為@DeleteMapping("requestpath")。通常在刪除數據時使用。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.3.3編寫請求處理方法在控制器類中每個請求處理方法可以有多個不同類型的參數,以及一個多種類型的返回結果。如果需要在請求處理方法中使用ServletAPI類型,那么可以將這些類型作為請求處理方法的參數類型。除了ServletAPI參數類型外,還有輸入輸出流、表單實體類、注解類型、與Spring框架相關的類型等等。但特別重要的類型是org.springframework.ui.Model類型,該類型是一個包含Map的Spring框架類型。每次調用請求處理方法時,SpringMVC都將創建org.springframework.ui.Model對象。最常見的返回類型,就是代表邏輯視圖名稱的String類型。除了String類型外,還有Model、View以及其他任意的Java類型。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.3.4Controller接收請求參數的常見方式Controller接收請求參數的方式有很多種,有的適合get請求方式,有的適合post請求方式,有的兩者都適合。下面介紹幾個常用的方式,讀者可根據實際情況選擇合適的接收方式。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
1.通過實體bean接收請求參數通過一個實體bean來接收請求參數,適用于get和post提交請求方式。需要注意的是,bean的屬性名稱必須與請求參數名稱相同。下面通過完善應用ch14_1,講解“通過實體bean接收請求參數”。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
(1)完善視圖文件<formaction="user/register"method="post"name="registForm"> <inputtype="text"name="uname"value="${user.uname}"/> <inputtype="password"name="upass"/> <inputtype="password"name="reupass"/> <inputtype="submit"value="注冊"/></form>《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
(2)創建POJO實體類publicclassUserForm{ privateStringuname;//與請求參數名稱相同
privateStringupass; privateStringreupass; //省略getter和setter方法}《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
(3)創建控制器類@RequestMapping("/user")publicclassUserController{ @PostMapping("/register") publicStringregister(UserFormuser,Modelmodel){ if("zhangsan".equals(user.getUname()) &&"123456".equals(user.getUpass())){
return"login";//注冊成功,跳轉到login.jsp }else{
model.addAttribute("uname",user.getUname()); return"register";//返回register.jsp } }}《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
2.通過處理方法的形參接收請求參數通過處理方法的形參接收請求參數,也就是直接把表單參數寫在控制器類相應方法的形參中,即形參名稱與請求參數名稱完全相同。該接收參數方式適用于get和post提交請求方式。@PostMapping("/register")publicStringregister(Stringuname,Stringupass,Modelmodel){
if("zhangsan".equals(uname)
&&"123456".equals(upass)){
}}《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
3.通過@RequestParam接收請求參數通過@RequestParam接收請求參數,適用于get和post提交請求方式。@PostMapping("/register")publicStringregister(@RequestParamStringuname,@RequestParamStringupass,Modelmodel){
if("zhangsan".equals(uname)
&&"123456".equals(upass)){}}通過@RequestParam接收請求參數與“通過處理方法的形參接收請求參數”的區別是:當請求參數與接收參數名不一致時,“通過處理方法的形參接收請求參數”不會報400錯誤,而“通過@RequestParam接收請求參數”會400錯誤。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
4.通過@ModelAttribute接收請求參數@ModelAttribute注解放在處理方法的形參上時,用于將多個請求參數封裝到一個實體對象,從而簡化數據綁定流程,而且自動暴露為模型數據用于視圖頁面展示時使用。而“通過實體bean接收請求參數”只是將多個請求參數封裝到一個實體對象,并不能暴露為模型數據。通過@ModelAttribute注解接收請求參數,適用于get和post提交請求方式。@RequestMapping("/register")publicStringregister(@ModelAttribute("user")UserFormuser){
if("zhangsan".equals(user.getUname())
&&"123456".equals(user.getUpass())){}}使用@ModelAttribute(“user”)與model.addAttribute(“user”,user)功能相同,在頁面上可以使用EL表達式${user.uname}取出ModelAttribute的uname值。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.3.5重定向與轉發重定向是將用戶從當前處理請求定向到另一個視圖(如JSP)或處理請求,以前的請求(request)中存放的信息全部失效,并進入一個新的request作用域;轉發是將用戶對當前處理的請求轉發給另一個視圖或處理請求,以前的request中存放的信息不會失效。轉發是服務器行為,重定向是客戶端行為。在SpringMVC框架中,控制器類中處理方法的return語句默認就是轉發實現,只不過實現的是轉發到視圖。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.3.5重定向與轉發//轉發到一個請求方法(同一個控制器類中,可省略/index/)return"forward:/index/isLogin";//重定向到一個請求方法(同一個控制器類中,可省略/index/)return"redirect:/index/isRegister";//轉發到一個視圖return"register";在SpringMVC框架中,不管重定向或轉發,都需要符合視圖解析器的配置,如果直接轉發到一個不需要DispatcherServlet的資源,如:return"redirect:/html/my.html";需要使用mvc:resources配置,示例代碼如下。<mvc:resourceslocation="/html/"mapping="/html/**"></mvc:resources>《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.3.6應用@Autowired進行依賴注入在前面學習的控制器中,并沒有體現MVC的M層,這是因為控制器即充當C層,又充當M層。這樣設計程序的系統結構很不合理,應該將M層從控制器中分離出來。SpringMVC框架本身就是一個非常優秀的MVC框架,它具有一個依賴注入的優點。可以通過Autowired注解類型將依賴注入到一個屬性(成員變量)或方法,示例如下。@AutowiredpublicUserServiceuserService;在SpringMVC中,為了能被作為依賴注入,Service類可以使用Service注解類型注明為@Service(一個服務)。另外,還需要在配置文件中使用<context:component-scanbase-package="基本包"/>元素來掃描依賴基本包。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.3.7@ModelAttribute通過ModelAttribute注解類型,可實現如下兩個功能。1.綁定請求參數到實體對象(表單的命令對象)綁定請求參數到實體對象,該用法如14.3.4節內容。publicStringregister(@ModelAttribute("user")UserFormuser)上述代碼中“@ModelAttribute("user")UserFormuser”語句的功能有兩個,一是將請求參數的輸入封裝到user對象中;一是創建UserForm實例,以“user”為鍵值存儲在Model對象中,與“model.addAttribute("user",user)”語句功能一樣。如果沒有指定鍵值,即“@ModelAttributeUserFormuser”,那么創建UserForm實例時,以“userForm”為鍵值存儲在Model對象中,與“model.addAttribute("userForm",user)”語句功能一樣。
《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
2.注解一個非請求處理方法被@ModelAttribute注解的方法,將在每次調用該控制器類的請求處理方法前被調用。這種特性可以用來控制登錄權限,當然控制登錄權限的方法很多,例如攔截器、過濾器等。publicclassBaseController{
@ModelAttributepublicvoidisLogin(HttpSessionsession)throwsException{if(session.getAttribute("user")==null){}}}@Controller@RequestMapping("/admin")publicclassModelAttributeControllerextendsBaseController{ @RequestMapping("/add") publicStringadd(){} @RequestMapping("/update") publicStringupdate(){} @RequestMapping("/delete") publicStringdelete(){}}上述ModelAttributeController類中的add、update、delete請求處理方法執行時,首先執行父類BaseController中的isLogin方法判斷登錄權限。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
目錄14.1SpringMVC的工作原理14.2SpringMVC的工作環境14.3基于注解的控制器14.4Spring的數據庫編程14.5基于SpringMVC框架的注冊與登錄《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.4Spring的數據庫編程數據庫編程是互聯網編程的基礎,Spring框架為開發者提供了JDBC模板模式,即jdbcTemplate,它可以簡化許多代碼,但在實際應用中jdbcTemplate并不常用。工作更多的時候,用的是Hibernate框架和MyBatis框架進行數據庫編程。本節僅簡要介紹Spring
jdbcTemplate的使用方法,而MyBatis框架的相關內容,讀者可學習作者的另一本教程《Java
EE框架整合開發入門到實戰——Spring+Spring
MVC+MyBatis》。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.4.1SpringJDBC的配置本節Spring數據庫編程主要使用SpringJDBC模塊的core和dataSource包。core包是JDBC的核心功能包,包括常用的JdbcTemplate類;dataSource包是訪問數據源的工具類包。使用SpringJDBC操作數據庫,需要對其進行配置。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.4.1SpringJDBC的配置<!--配置數據源--><beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <!--MySQL數據庫驅動--> <propertyname="driverClassName"value="com.mysql.cj.jdbc.Driver"/> <!--連接數據庫的URL--> <propertyname="url"value="jdbc:mysql://:3306/springtest?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8"/> <!--連接數據庫的用戶名--> <propertyname="username"value="root"/> <!--連接數據庫的密碼--> <propertyname="password"value="root"/></bean><!--配置JDBC模板--><beanid="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate"> <propertyname="dataSource"ref="dataSource"/></bean>《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.4.1SpringJDBC的配置上述示例代碼中,配置JDBC模板時,需要將dataSource注入到jdbcTemplate,而在數據訪問層(Dao類)需要使用jdbcTemplate時,也需要將jdbcTemplate注入到對應的bean中。……@Repository("testDao")publicclassTestDaoImplimplementsTestDao{ @Autowired //使用配置文件中的JDBC模板
privateJdbcTemplatejdbcTemplate; ……}《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.4.2SpringJdbcTemplate的常用方法
publicintupdate(Stringsql,Objectargs[])該方法可以對數據表進行增加、修改、刪除等操作。使用args[]設置SQL語句中的參數,并返回更新的行數。示例代碼如下:StringinsertSql="insertintouservalues(null,?,?)";Objectparam1[]={"chenheng1","男"};jdbcTemplate.update(insertSql,param1);
publicList<T>query(Stringsql,RowMapper<T>rowMapper,Objectargs[])該方法可以對數據表進行查詢操作。rowMapper將結果集映射到用戶自定義的類中(前提是自定義類中的屬性與數據表的字段對應)。示例代碼如下:StringselectSql="select*fromuser";RowMapper<MyUser>rowMapper=newBeanPropertyRowMapper<MyUser>(MyUser.class);List<MyUser>list=jdbcTemplate.query(selectSql,rowMapper,null);通過一個實例演示SpringJDBC的使用過程。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
1.導入JAR包將MySQL數據庫的驅動JAR包mysql-connector-java-8.0.29.jar、Spring
JDBC的JAR包spring-jdbc-6.0.0.jar以及Spring事務處理的JAR包spring-tx-6.0.0.jar復制到ch14_1應用的/WEB-INF/lib目錄。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
2.完善配置文件ch14_1的配置文件中,添加如下配置代碼:<!--配置數據源--><beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <!--MySQL數據庫驅動--> <propertyname="driverClassName"value="com.mysql.cj.jdbc.Driver"/> <!--連接數據庫的URL--> <propertyname="url"value="jdbc:mysql://:3306/springtest?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8"/> <!--連接數據庫的用戶名--> <propertyname="username"value="root"/> <!--連接數據庫的密碼--> <propertyname="password"value="root"/></bean><!--配置JDBC模板--><beanid="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate"> <propertyname="dataSource"ref="dataSource"/></bean>《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
3.創建實體類在應用ch14_1的包pojo中創建實體類MyUser。該類的屬性與數據表usertable的字段一致。packagepojo;publicclassMyUser{ privateStringuname; privateStringupwd; //此處省略setter和getter方法
publicStringtoString(){ return"myUser[uname="+uname+",upwd="+upwd+"]"; }}《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
4.創建數據訪問層Dao在應用ch14_1的src目錄中,創建一個名為dao的包,并在該包中創建TestDao接口和TestDaoImpl實現類。在實現類TestDaoImpl中使用JDBC模塊JdbcTemplate訪問數據庫,并將該類注解為@Repository("testDao")。在配置文件中添加<context:component-scanbase-package="dao"/>語句使注解生效。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
5.創建測試類在應用ch14_1的controller包中,創建控制器類TestSpringJDBC。@ControllerpublicclassTestSpringJDBC{
@Autowired privateTestDaotestDao; @RequestMapping("/jdbcTest") publicStringtest(){ StringinsertSql="insertintousertablevalues(?,?)";《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.4.3基于@Transactional注解的聲明式事務管理@Transactional注解可以作用于接口、接口方法、類以及類方法上。當作用于類上時,該類的所有public方法將都具有該類型的事務屬性,同時,也可以在方法級別使用該注解來覆蓋類級別的定義。雖然@Transactional注解可以作用于接口、接口方法、類以及類方法上,但是Spring小組建議不要在接口或者接口方法上使用該注解,因為這只有在使用基于接口的代理時它才會生效。@Transactional注解使用步驟如下:《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
1.為數據源添加事務管理器<!--為數據源添加事務管理器--><beanid="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <propertyname="dataSource"ref="dataSource"/></bean><!--為事務管理器注冊注解驅動--><tx:annotation-driventransaction-manager="txManager"/>《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
2.為Service層添加@Transactional注解在SpringMVC中,通常通過Service層進行事務管理,因此需要為Service層添加@Transactional注解。添加@Transactional注解的示例代碼如下:......@Service("testService")@Transactional//加上注解@Transactional,就可以指定這個類需要受Spring的事務管理//注意@Transactional只能針對public屬性范圍內的方法添加publicclassTestServiceImplimplementsTestService{}......《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
目錄14.1SpringMVC的工作原理14.2SpringMVC的工作環境14.3基于注解的控制器14.4Spring的數據庫編程14.5基于SpringMVC框架的注冊與登錄《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.5.1JSON數據轉換為實現瀏覽器與控制器類之間的JSON數據交互,Spring
MVC提供了MappingJackson2HttpMessageConverter實現類默認處理JSON格式請求響應。該實現類利用Jackson開源包讀寫JSON數據,將Java對象轉換為JSON對象和XML文檔,同時也可以將JSON對象和XML文檔轉換為Java對象。Jackson開源包及其描述如下所示。
jackson-annotations.jar:JSON轉換注解包。
jackson-core.jar:JSON轉換核心包。
jackson-databind.jar:JSON轉換的數據綁定包。以上3個Jackson的開源包在編寫本書時,最新版本是2.14.1,讀者可通過地址“http:///artifact/com.fasterxml.jackson.core”下載得到。在使用注解開發時,需要用到兩個重要的JSON格式轉換注解,分別是@RequestBody和@ResponseBody。
@RequestBody:用于將請求體中的數據綁定到方法的形參中,該注解應用在方法的形參上。
@ResponseBody:用于直接返回JSON對象,該注解應用在方法上。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
14.5.2注冊與登錄創建SpringMVC應用ch14_2,實現以下功能:1.未注冊用戶請運行注冊頁面進行注冊,注冊時檢查用戶名是否已注冊(要求使用Ajax異步提交檢查);2.已注冊的用戶運行登錄頁面進行登錄,登錄成功的用戶,可以查看所有用戶姓名。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
1.創建應用ch14_2,并導入相關JAR文件除了導入ch14_1應用所需要的JAR文件,還需要導入JSTL和JSON需要的JAR文件。《JavaWeb開發從入門到實戰(第2版·微課視頻版)》陳恒
主編,清華大學出版社,2024
2.創建相關JSP文件應用中需要的js和圖片,請參見提供的源代碼
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于語文核心素養的《儒林外史》整本書閱讀教學研究
- 我愛洗澡教案小班健康
- 起重機械安全專題培訓
- 急性上呼吸道感染鑒別診斷
- 安全法律法規專項培訓
- 婦幼健康教育宣傳內容
- 2025年四川省瀘州市中考招生考試數學真題試卷(真題+答案)
- 教職員工食品安全培訓
- 預防電信詐騙班會課件
- 預防兒童被侵害課件
- 高一下學期期末考模擬卷(第一、二冊綜合)(基礎)- 《溫故知新》2025-2026學年高一數學下學期復習課(人教A版2029必修第二冊)(原卷版)
- 《文旅服務信息資源分類及編碼規范》
- 《市域(郊)鐵路設計規范》條文說明
- 2025年四川成都環境投資集團有限公司及下屬公司招聘筆試參考題庫含答案解析
- 2025年安徽省高考化學試卷真題(含答案詳解)
- 2025年行政法與行政訴訟考試試題及答案
- 工傷免責賠協議書
- 考研機構入學協議書
- 廣東省惠州市惠城區2025年八年級物理第二學期期末綜合測試試題含解析
- 公司管理層法律培訓必修課:合規管理與風險防范
- 2025屆廣東省佛山市六校聯考高考語文三模試卷含解析
評論
0/150
提交評論