摘要
通過對使用者表的管理,更加深入地講解SpringMVC的操作。
目錄[-]
<a href="#OSC_h4_1">文章已針對IDEA 15做了一定的更新,部分更新較為重要,請重新閱讀文章并下載下傳最新源碼。</a>
<a href="#OSC_h3_2">七、使用者管理</a>
<a href="#OSC_h4_3">1、JPA操作定義</a>
<a href="#OSC_h4_4">2、背景管理</a>
<a href="#OSC_h5_5">(1)檢視所有使用者</a>
<a href="#OSC_h5_6">(2)添加使用者</a>
<a href="#OSC_h5_7">(3)檢視使用者詳情</a>
<a href="#OSC_h5_8">(4)修改使用者資訊</a>
<a href="#OSC_h5_9">(5)删除使用者</a>
注:在閱讀本文前,請先閱讀:
<a href="http://my.oschina.net/gaussik/blog/385697">使用IntelliJ IDEA開發SpringMVC網站(一)開發環境</a>
<a href="http://my.oschina.net/gaussik/blog/513353">使用IntelliJ IDEA開發SpringMVC網站(二)架構配置</a>
<a href="http://my.oschina.net/gaussik/blog/513444">使用IntelliJ IDEA開發SpringMVC網站(三)資料庫配置</a>
既然我們要做一個部落格管理系統,當然要首先實作我們的使用者管理。在上一文中,我們已經配置好了資料庫。接下來,就要實作網站的一些業務邏輯。
在實作使用者管理操作之前,需要講解一下JPA的開發工作。
首先,在com.gaussic.repository包内建立一個UserRepository接口:
讓該接口繼承 JpaRepository:
在JpaRepository中,定義了幾個簡化的操作資料庫的方法:
(1) findAll():查找表中所有記錄;
(2)findOne(Integer id):按id來查找某一條記錄;
(3)findByXXX(Object xxx):在這裡XXX是一個字段名,根據該字段的值開查找所有記錄;
(4)save()和delete():添加一條記錄以及删除一條記錄。
除此之外,我們還可以在該repository中自定義新的方法,這将在稍後實際開發中提及。
為了盡可能的在省去篇幅的情況下,在此省去管理者操作的開發。預設在通路 /admin 時,進入背景管理。
将MainController補充為如下形式:
講解:
自動裝配:相當于資料庫操作的極簡化,隻要定義了就可以直接進行資料庫操作,不用再去管開啟連接配接、關閉連接配接等問題
找到所有記錄:使用JpaRepository的預設方法findAll()。
modelMap:用于将controller方法裡面的參數傳遞給所需的jsp頁面,以進行相關顯示。
現在,需要在pages下建立目錄admin,并建立users.jsp頁面,以進行使用者的管理:
<c>标簽:在jsp中使用了jstl文法,可以友善地進行一些判斷<c:if>與周遊操作<c:forEach>;
頁面使用了Bootstrap,部分功能将在之後實作。
由于目前資料庫中沒有資料,因而顯示為空,現在需要向資料庫中添加使用者。
在MainController中增加兩個方法:
/admin/users/add請求:get請求轉到添加使用者頁面
/admin/users/addP請求:post請求收集資料并存庫
@ModelAttribute注解:收集post過來的資料(在此,相當于post過來了一整個userEntity,不用一個一個地取)
save()和saveAndFlush():save()方法處理完畢後,資料依然在緩沖區未寫入資料庫,使用saveAndFlush()可以立即重新整理緩沖區,寫入資料庫
redirect:/admin/users:這裡使用重定向,可以讓該方法重定向通路一個請求,ruturn之後,将跳轉到 :/admin/users 所通路的頁面。
現在,在pages目錄下建立一個addUser.jsp:
<form:form>标簽:使用Spring的form标簽,可以友善的收集整塊資料,commondName=“user”說明form内的内容都儲存在這個user執行個體中,然後将整個user執行個體傳遞給controller處理。在所有的input标簽中,name一定要與UserEntity中的成員相同,不然無法找到。
在送出之後,背景将會處理 /admin/users/addP 請求。
輸入資料,點選送出,資料庫中将會寫入新的使用者,重新跳轉到使用者管理頁面:
在MainController中加入檢視詳情操作:
在pages目錄下建立 userDetail.jsp:
講解:如何通路一個執行個體内的資料?
使用${}文法,在{}内可以使用類似Java的方法友善地通路資料。
從url可以看出,通路的是ID=1的使用者的詳細情況,這樣的URL采用了REST風格設計,看起來更加簡便。
現在我們要對使用者資訊做一定的修改,那該如何做呢。假設我們要能夠修改全部的資料(除了id),JpaRepository未定義update方法,需要我們自己定義。
打開UserRepository,添加updateUser()接口方法:
在MainController中定義update操作方法:
然後,在pages目錄下,建立updateUser.jsp檔案:
送出後,重新跳轉回使用者管理頁面,可發現修改完成:
現在,新添加一個使用者:
現在我們需要删掉新加入的使用者,打開MainController,加入以下方法:
這樣,增删該查基本完成了。
其實,更到這裡,基本就可以開始開發工作了,還有一些其他的功能,都需要通過平時的積累以及多查資料來完成。例如JSON資料的處理,異步請求的處理,以及相關外鍵等操作。
要知道的是,讀者所閱讀的三十分鐘,需要寫這篇文章的人數個小時的努力,整理确實不易。讀文章要有舉一反三地态度,才能真正的把東西學精學全。