Java應(yīng)用開發(fā)(中、高級)課件 任務(wù)3.2 實(shí)現(xiàn)用戶管理模塊_第1頁
Java應(yīng)用開發(fā)(中、高級)課件 任務(wù)3.2 實(shí)現(xiàn)用戶管理模塊_第2頁
Java應(yīng)用開發(fā)(中、高級)課件 任務(wù)3.2 實(shí)現(xiàn)用戶管理模塊_第3頁
Java應(yīng)用開發(fā)(中、高級)課件 任務(wù)3.2 實(shí)現(xiàn)用戶管理模塊_第4頁
Java應(yīng)用開發(fā)(中、高級)課件 任務(wù)3.2 實(shí)現(xiàn)用戶管理模塊_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

任務(wù)2.實(shí)現(xiàn)用戶管理模塊任務(wù)描述本任務(wù)是基于前后端分離架構(gòu)完成用戶管理模塊及相關(guān)功能。知識準(zhǔn)備1.跨域介紹

跨域是指從一個(gè)域名的網(wǎng)頁去請求另一個(gè)域名的資源。比如從頁面去請求的資源。跨域的嚴(yán)格一點(diǎn)的定義是:只要協(xié)議、域名、端口有任何一個(gè)的不同,就被當(dāng)作是跨域。2.前后端分離與跨域

前后端分離就是前端代碼一個(gè)服務(wù)器,后端代碼一個(gè)服務(wù)器,兩個(gè)不同的服務(wù)之間需要互相請求對方的資源進(jìn)行交互一般情況下是禁止的,就需要使用跨域來解決前后端分離的項(xiàng)目交互。3.跨域訪問需要的技術(shù):

由于瀏覽器一般不對script,img等進(jìn)行跨域限制,所以我們有機(jī)會通過script的方式來實(shí)現(xiàn)跨域訪問。

跨域訪問需要用到兩樣技術(shù),一個(gè)是JSON,一種基于文本的傳輸協(xié)議;另一種是JSONP跨域解決方案。任務(wù)實(shí)施步驟1:實(shí)現(xiàn)用戶管理模塊后臺在“com.chinasofti.ordersys.api.admin”包中,新建AdminUserController類,用于實(shí)現(xiàn)用戶管理模塊接口。包含方法見表4-3。表4-3任務(wù)2AdminUserController類方法表方法名說明adminModify(UserInfoinfo)管理員修改用戶信息的方法。deleteUser(IntegeruserId)刪除用戶。getUser(IntegeruserId)根據(jù)用戶ID獲取對應(yīng)用戶信息。getUserByPage(intpage)獲取用戶分頁數(shù)據(jù)。modifyMyInfo(UserInfoinfo)修改個(gè)人信息。addUser(UserInfoinfo)新增用戶。checkAddUser(StringuserAccount)檢驗(yàn)用戶是否存在。?代碼如下:packagecom.chinasofti.ordersys.api.admin;

importmon.result.PageResults;importmon.result.Results;importcom.chinasofti.ordersys.model.UserInfo;importcom.chinasofti.ordersys.service.admin.UserService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.security.access.prepost.PreAuthorize;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.RestController;

importjava.util.List;importjava.util.stream.Collectors;

@PreAuthorize("hasRole('1')")@RestController@RequestMapping("/admin/user")publicclassAdminUserController{ @AutowiredUserServiceservice;

publicUserServicegetService(){ returnservice; } publicvoidsetService(UserServiceservice){ this.service=service; } @RequestMapping("/adminmodifyuser") publicResults<UserInfo>adminModify(UserInfoinfo){ if(info.getUserPass().isEmpty()){ info.setUserPass("1"); }

//執(zhí)行修改操作 service.adminModify(info); returnResults.success(info); }

@RequestMapping("/deleteuser") publicResults<UserInfo>deleteUser(IntegeruserId){ service.deleteUser(userId); returnResults.success(); } @GetMapping("/get") publicResults<UserInfo>getUser(IntegeruserId){ UserInfouser=service.getUserById(userId); user.setUserPass(""); returnResults.success(user); }

@RequestMapping("/getuserbypage") publicPageResults<UserInfo>getUserByPage(intpage){

//獲取最大頁碼數(shù) intmaxPage=service.getMaxPage(10);

//對當(dāng)前的頁碼數(shù)進(jìn)行糾錯(cuò),如果小于1,則直接顯示第一頁的內(nèi)容 page=page<1?1:page;

//對當(dāng)前的頁碼數(shù)進(jìn)行糾錯(cuò),如果大于最大頁碼,則直接顯示最后一頁的內(nèi)容 page=page>maxPage?maxPage:page;

//進(jìn)行分頁數(shù)據(jù)查詢 List<UserInfo>list=service.getByPage(page,10);

//過濾掉密碼信息 list=list.stream().map(item->{item.setUserPass("");returnitem;}).collect(Collectors.toList());

//嘗試將結(jié)果結(jié)構(gòu)化 returnPageResults.success(list,page,maxPage); }

@RequestMapping("/modifyuser") publicResults<UserInfo>modifyMyInfo(UserInfoinfo){ service.modify(info);

//修改信息后需要自動(dòng)注銷 returnResults.success(info); }

@RequestMapping("/adduser") publicResults<UserInfo>addUser(UserInfoinfo){

//添加用戶 service.addUser(info);

//跳轉(zhuǎn)到用戶管理界面 returnResults.success(info); }

@RequestMapping("/checkuser")

//獲取請求參數(shù)中的用戶名信息 publicResults<UserInfo>checkAddUser(@RequestParam("name")StringuserAccount){

//查詢對應(yīng)用戶名的用戶信息 List<UserInfo>list=service.findUserByName(userAccount);

//如果數(shù)據(jù)庫中無數(shù)據(jù) if(list.isEmpty()){

//輸出可以添加標(biāo)識 returnResults.success();

//如果數(shù)據(jù)庫中有數(shù)據(jù) }else{

//輸出不能添加標(biāo)識 returnResults.failure(); } }}在“com.chinasofti.ordersys.service.admin”包中,新建UserService類,用于實(shí)現(xiàn)用戶管理模塊服務(wù)。包含方法見表4-4。表4-4任務(wù)2UserService類方法表方法名說明adminModify(UserInfoinfo)管理員修改用戶信息的方法。deleteUser(IntegeruserId)刪除用戶。getUserById(IntegeruserId)根據(jù)用戶ID獲取對應(yīng)用戶信息。findUserByName(StringuserAccount)根據(jù)用戶名獲取對應(yīng)用戶信息。getByPage(intpage,intpageSize)獲取用戶分頁數(shù)據(jù)。getMaxPage(intpageSize)獲取用戶信息的最大頁數(shù)。modify(UserInfoinfo)修改個(gè)人信息。addUser(UserInfoinfo)新增用戶。checkPass(UserInfoinfo)驗(yàn)證用戶用戶名密碼是否正確的方法?代碼如下:packagecom.chinasofti.ordersys.service.admin;

importcom.chinasofti.ordersys.mapper.UserInfoMapper;importcom.chinasofti.ordersys.model.UserInfo;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;importorg.springframework.stereotype.Service;

importjava.util.List;

@ServicepublicclassUserService{ @AutowiredUserInfoMappermapper;

publicUserInfoMappergetMapper(){ returnmapper; }

publicvoidsetMapper(UserInfoMappermapper){ this.mapper=mapper; } /** *分頁獲取用戶數(shù)據(jù)的方法 * *@parampage *要獲取數(shù)據(jù)的頁號 *@parampageSize *每頁顯示的條目數(shù) *@return當(dāng)前頁的用戶數(shù)據(jù)列表 **/ publicList<UserInfo>getByPage(intpage,intpageSize){ //獲取帶有連接池的數(shù)據(jù)庫模版操作工具對象 intfirst=(1)*pageSize; //返回結(jié)果 returnmapper.getUserByPage(first,pageSize); }

/** *獲取用戶信息的最大頁數(shù) * *@parampageSize *每頁顯示的條目數(shù) *@return當(dāng)前數(shù)據(jù)庫中數(shù)據(jù)的最大頁數(shù) **/ publicintgetMaxPage(intpageSize){

//獲取最大頁數(shù)信息 Longrows=mapper.getMaxPage(); //返回最大頁數(shù) return(int)((rows.longValue()-1)/pageSize+1); } /** *添加用戶的方法 * *@paraminfo *需要添加的用戶信息 **/ publicvoidaddUser(UserInfoinfo){

//創(chuàng)建加密工具

info.setUserPass(newBCryptPasswordEncoder().encode(info.getUserPass())); //執(zhí)行用戶信息插入操作 mapper.addUser(info); }

/** *刪除用戶的方法 * *@paramuserId *待刪除用戶的Id **/ publicvoiddeleteUser(IntegeruserId){ //獲取帶有連接池的數(shù)據(jù)庫模版操作工具對象 mapper.deleteUser(userId); } /** *修改用戶自身信息的方法 * *@paraminfo *需要修改的用戶信息,其中userId屬性指明需要修改的用戶ID,其他信息為目標(biāo)值,本人修改信息只能修改密碼和頭像 **/ publicvoidmodify(UserInfoinfo){ //獲取帶有連接池的數(shù)據(jù)庫模版操作工具對象 info.setUserPass(newBCryptPasswordEncoder().encode(info.getUserPass())); //修改本人信息 mapper.modify(info);

}

/** *管理員修改用戶信息的方法 * *@paraminfo *需要修改的用戶信息,其中userId屬性指明需要修改的用戶ID,其他信息為目標(biāo)值 **/ publicvoidadminModify(UserInfoinfo){ info.setUserPass(newBCryptPasswordEncoder().encode(info.getUserPass())); //修改本人信息 mapper.adminModify(info);

} /** *根據(jù)ID獲取用戶詳細(xì)信息的方法 * *@paramuserId *需要獲取詳細(xì)信息的用戶ID *@return返回查詢到的用戶詳細(xì)信息 **/ publicUserInfogetUserById(IntegeruserId){

returnmapper.getUserById(userId); }

publicList<UserInfo>findUserByName(StringuserAccount){ returnmapper.findUsersByName(userAccount); }

/** *驗(yàn)證用戶用戶名密碼是否正確的方法 * *@paraminfo *用于判定用戶名、密碼的用戶對象 *@return用戶名、密碼是否驗(yàn)證通過,true表示用戶名密碼正確、false表示用戶名或密碼錯(cuò)誤 **/ publicbooleancheckPass(UserInfoinfo){

//根據(jù)給定的用戶名查詢用戶信息 List<UserInfo>userList=mapper.checkPass(info); //判定查詢結(jié)果集合 //如果沒有查詢到任何數(shù)據(jù) if(userList.isEmpty()){ //返回驗(yàn)證失敗 returnfalse; } //如果查詢到一條記錄則判定密碼是否一致 //構(gòu)建加密對象 BCryptPasswordEncoderencoder=newBCryptPasswordEncoder(); //判定用戶給定的密碼和數(shù)據(jù)庫中的密碼是否一致 //如果一致,則返回true //如果不一致 //返回用戶名、密碼不匹配 //其他情況下返回驗(yàn)證失敗 returnencoder.matches(info.getUserPass(),userList.get(0).getUserPass()); }}在“com.chinasofti.ordersys.mapper”包中,新建UserInfoMapper類,用于實(shí)現(xiàn)用戶管理模塊映射類。包含方法見表4-5。表4-5任務(wù)2UserInfoMapper類方法表方法名說明getAllUser()管理員修改用戶信息的方法。addUser(UserInfoinfo)新增用戶。getUserByPage(intfirst,intmax)獲取用戶分頁數(shù)據(jù)。getMaxPage()獲取用戶信息的最大頁數(shù)。deleteUser(IntegeruserId)刪除用戶。modify(UserInfoinfo)修改個(gè)人信息。adminModify(UserInfoinfo)管理員修改用戶信息的方法。getUserById(IntegeruserId)根據(jù)用戶ID獲取對應(yīng)用戶信息。findUserByName(StringuserAccount)根據(jù)用戶名獲取對應(yīng)用戶信息。checkPass(UserInfoinfo)驗(yàn)證用戶用戶名密碼是否正確的方法?代碼如下:packagecom.chinasofti.ordersys.mapper;

importcom.chinasofti.ordersys.model.UserInfo;importorg.apache.ibatis.annotations.*;

importjava.util.List;

@MapperpublicinterfaceUserInfoMapper{

@Select("selectuserId,userAccount,userPass,locked,roleId,roleName,faceimgfromuserinfo,roleinfowhereuserinfo.role=roleinfo.roleIdorderbyuserId") publicList<UserInfo>getAllUser();

@Insert("insertintouserinfo(userAccount,userPass,role,faceImg)values(#{info.userAccount},#{info.userPass},#{info.roleId},#{info.faceimg})") @Options(useGeneratedKeys=true,keyProperty="info.userId") publicIntegeraddUser(@Param("info")UserInfouser);

@Select("selectuserId,userAccount,userPass,locked,roleId,roleName,faceimgfromuserinfo,roleinfowhereuserinfo.role=roleinfo.roleIdorderbyuserIdlimit#{first},#{max}") publicList<UserInfo>getUserByPage(@Param("first")intfirst,@Param("max")intmax);

@Select("selectcount(*)fromuserinfo") publicLonggetMaxPage();

@Delete("deletefromuserinfowhereuserId=#{userId}") publicvoiddeleteUser(@Param("userId")IntegeruserId); @Update("updateuserinfosetuserPass=#{info.userPass},faceimg=#{info.faceimg}whereuserId=#{info.userId}") publicvoidmodify(@Param("info")UserInfoinfo);

@Update("updateuserinfosetuserPass=#{info.userPass},faceimg=#{info.faceimg},role=#{info.roleId}whereuserId=#{info.userId}") publicvoidadminModify(@Param("info")UserInfoinfo);

@Select("selectuserId,userAccount,userPass,locked,roleId,roleName,faceimgfromuserinfo,roleinfowhereuserinfo.role=roleinfo.roleIdanduserId=#{userId}") publicUserInfogetUserById(@Param("userId")IntegeruserId);

@Select("selectuserId,userAccount,userPass,locked,roleId,roleNamefromuserinfo,roleinfowhereuserinfo.role=roleinfo.roleIdanduserinfo.userId=#{info.userId}") publicList<UserInfo>checkPass(@Param

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論