Java實(shí)戰(zhàn)房屋租賃網(wǎng)的實(shí)現(xiàn)流程
一、項(xiàng)目簡(jiǎn)述
功能包括: 前臺(tái):系統(tǒng)首頁(yè),酒店介紹,系統(tǒng)公告,客房信息,客房類(lèi)型,用 戶(hù)預(yù)等等。 用戶(hù):注冊(cè)登陸修改我的信息客房預(yù)訂等等。 管理員修改登錄密碼,添加客房,會(huì)員信息管理等等。
二、項(xiàng)目運(yùn)行
環(huán)境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
項(xiàng)目技術(shù): JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等。
用戶(hù)控制器:
/** * 控制器層 * */ @RestController @CrossOrigin @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @Autowired private RedisTemplate redisTemplate; @Autowired private HttpServletRequest request; @Autowired BCryptPasswordEncoder encoder; /** * 查詢(xún)?nèi)繑?shù)據(jù) * * @return */ @RequestMapping(value = "userList",method = RequestMethod.GET) public Result findAll() { List<User> all = userService.findAll(); return new Result(true, StatusCode.OK, "查詢(xún)成功",all,all.size()); } /** * 根據(jù)ID查詢(xún) * * @param id ID * @return */ @RequestMapping(value = "/{id}", method = RequestMethod.GET) public Result findById(@PathVariable Long id) { return new Result(true, StatusCode.OK, "查詢(xún)成功", userService.findById(id)); } /** * 分頁(yè)+多條件查詢(xún) * @param searchMap 查詢(xún)條件封裝 * @param page 頁(yè)碼 * @param size 頁(yè)大小 * @return 分頁(yè)結(jié)果 */ @RequestMapping(value="/search/{page}/{size}",method=RequestMethod.POST) public Result findSearch(@RequestBody Map searchMap , @PathVariable int page, @PathVariable int size){ Page<User> pageList = userService.findSearch(searchMap, page, size); return new Result(true,StatusCode.OK,"查詢(xún)成功", new PageResult<User>(pageList.getTotalElements(), pageList.getContent()) ); } /** * 根據(jù)條件查詢(xún) * @param searchMap * @return */ @RequestMapping(value="/search",method = RequestMethod.POST) public Result findSearch( @RequestBody Map searchMap){ return new Result(true,StatusCode.OK,"查詢(xún)成功",userService.findSearch(searchMap)); } /** * 增加 * @param user */ @RequestMapping(method=RequestMethod.POST) public Result add(@RequestBody User user ){ userService.add(user); return new Result(true,StatusCode.OK,"增加成功"); } /** * 修改 * @param user */ @ResponseBody @RequestMapping(value="/{id}",method= RequestMethod.PUT) public Result update(User user, @PathVariable Long id ){ User oldUser=userService.findById(id); user.setId(id); user.setPassword(oldUser.getPassword()); userService.update(user); return new Result(true,StatusCode.OK,"修改成功"); } /** * 修改 * @param user */ @RequestMapping(value="/change",method= RequestMethod.POST,consumes = "application/json") public Result update(@RequestBody User user, HttpSession session){ User us= (User) session.getAttribute("user"); user.setId(us.getId()); user.setPassword(us.getPassword()); userService.update(user); return new Result(true,StatusCode.OK,"修改成功"); } /** * 刪除 * @param id */ @RequestMapping(value="/{id}",method= RequestMethod.DELETE) public Result delete(@PathVariable String id ){ userService.deleteById(id); return new Result(true,StatusCode.OK,"刪除成功"); } /** * 用戶(hù)注冊(cè) * @param code * @param user * @return */ @ResponseBody @RequestMapping(value = "/register/",method = RequestMethod.POST) public Result regist(@RequestParam(name = "code") String code,User user,HttpServletRequest request){ String sCode = (String) request.getSession().getAttribute("user_register_email_code"); if(!sCode.equalsIgnoreCase(code)){ return new Result(false,StatusCode.ERROR,"驗(yàn)證碼錯(cuò)誤!"); } userService.add(user); return new Result(true,StatusCode.OK,"注冊(cè)成功"); } /** *判斷賬號(hào)是否存在 * @param user * @return */ @RequestMapping(value = "/checkPhone",method = RequestMethod.POST) @ResponseBody public Result checkPhone(User user){ String phone = user.getMobile(); if(!StringUtil.isMobile(phone)){ return new Result(false,StatusCode.ERROR,"請(qǐng)?zhí)顚?xiě)正確的手機(jī)號(hào)!"); } User userphone= userService.findByMobile(phone); if (userphone == null){ return new Result(true,StatusCode.OK,"該手機(jī)號(hào)可以注冊(cè)"); } return new Result(false,StatusCode.ERROR,"該手機(jī)號(hào)已經(jīng)被注冊(cè)"); } /** * 郵箱驗(yàn)證 * @param user * @return */ @RequestMapping(value = "/email",method = RequestMethod.POST) @ResponseBody public Result findemail(User user){ String email = user.getEmail(); if(!StringUtil.emailFormat(email)){ return new Result(true,StatusCode.ERROR,"請(qǐng)?zhí)顚?xiě)正確的郵箱格式"); } User useremail= userService.findByEmail(email); if (useremail == null){ return new Result(true,StatusCode.OK,"該郵箱可以注冊(cè)"); } return new Result(false,StatusCode.ERROR,"該郵箱已經(jīng)被注冊(cè)"); } /** * 用戶(hù)登錄 * @param loginMap * @return */ @ResponseBody @RequestMapping(value="/login",method=RequestMethod.POST) public Result login(@RequestParam Map<String,String> loginMap,HttpServletRequest request){ String mobile = loginMap.get("login"); if (StringUtil.isMobile(mobile)){ User user = userService.findByMobileAndPassword(loginMap.get("login"),loginMap.get("password")); if(user!=null){ request.getSession().setAttribute("user",user); Map map=new HashMap(); return new Result(true,StatusCode.OK,"登陸成功"); }else{ return new Result(false,StatusCode.LOGINERROR,"用戶(hù)名或密碼錯(cuò)誤"); } }else { User user = userService.findByNameAndPassword(loginMap.get("login"),loginMap.get("password")); if(user!=null){ request.getSession().setAttribute("user",user); Map map=new HashMap(); map.put("name",user.getName());//姓名 return new Result(true,StatusCode.OK,"登陸成功",map); }else{ return new Result(false,StatusCode.LOGINERROR,"用戶(hù)名或密碼錯(cuò)誤"); } } } /** * 用戶(hù)注銷(xiāo) * @param request * @param response * @throws IOException */ @RequestMapping(value="/logout",method=RequestMethod.GET) public void logout(HttpServletRequest request,HttpServletResponse response) throws IOException { request.getSession().setAttribute("user", null); response.sendRedirect(request.getContextPath() + "/dist/view"); } }
酒店房屋控制器:
/** * 控制器層 * */ @Controller @CrossOrigin @RequestMapping("/hotel") public class HotelController { @Autowired private HotelService hotelService; @Autowired private ScenicService scenicService; /** * 查詢(xún)?nèi)烤频晷畔? * @return */ @ResponseBody @RequestMapping(value = "/list",method= RequestMethod.GET) public Result findAll(){ List<Hotel> all = hotelService.findAll(); return new Result(true, StatusCode.OK,"查詢(xún)成功",all,all.size()); } /** * 根據(jù)ID查詢(xún) * @param id ID * @return */ @ResponseBody @RequestMapping(value="/{id}",method= RequestMethod.GET) public Result findById(@PathVariable Long id){ return new Result(true,StatusCode.OK,"查詢(xún)成功",hotelService.findById(id)); } /** * 酒店添加操作 * @param hotel */ @ResponseBody @RequestMapping(value = "/add",method=RequestMethod.POST) public Result add(Hotel hotel){ if(StringUtils.isEmpty(hotel.getName())){ return new Result(false,StatusCode.ERROR,"請(qǐng)?zhí)顚?xiě)酒店名稱(chēng)"); } if(StringUtils.isEmpty(hotel.getImg())){ return new Result(false,StatusCode.ERROR,"請(qǐng)上傳酒店封面圖片"); } if(StringUtils.isEmpty(hotel.getAddr())){ return new Result(false,StatusCode.ERROR,"請(qǐng)?zhí)顚?xiě)酒店地址"); } if(StringUtils.isEmpty(hotel.getMiaoshu())){ return new Result(false,StatusCode.ERROR,"請(qǐng)?zhí)顚?xiě)酒店描述"); } hotel.setCommentCount(0); hotel.setStar(0); if(hotelService.add(hotel)==null){ return new Result(false,StatusCode.ERROR,"酒店添加失敗"); } return new Result(true,StatusCode.OK,"添加成功"); } /** * 分頁(yè)+多條件查詢(xún) * @param searchMap 查詢(xún)條件封裝 * @param page 頁(yè)碼 * @param size 頁(yè)大小 * @return 分頁(yè)結(jié)果 */ @ResponseBody @RequestMapping(value="/search/{page}/{size}",method=RequestMethod.POST) public Result findSearch(@RequestBody Map searchMap , @PathVariable int page, @PathVariable int size){ Page<Hotel> pageList = hotelService.findSearch(searchMap, page, size); return new Result(true,StatusCode.OK,"查詢(xún)成功", new PageResult<Hotel>(pageList.getTotalElements(), pageList.getContent()) ); } /** * 根據(jù)條件查詢(xún) * @param searchMap * @return */ @ResponseBody @RequestMapping(value="/search",method = RequestMethod.POST) public Result findSearch( @RequestBody Map searchMap){ return new Result(true,StatusCode.OK,"查詢(xún)成功",hotelService.findSearch(searchMap)); } /** * 修改 * @param hotel */ @ResponseBody @RequestMapping(value="/edit",method= RequestMethod.PUT) public Result update(Hotel hotel){ Hotel hotelById = hotelService.findById(hotel.getId()); if(hotelById==null){ return new Result(false,StatusCode.ERROR,"該酒店信息不存在"); } if(StringUtils.isEmpty(hotel.getName())){ return new Result(false,StatusCode.ERROR,"請(qǐng)?zhí)顚?xiě)酒店名稱(chēng)"); } BeanUtils.copyProperties(hotel,hotelById,"id","img","miaoshu","day","startdate","addr","commentCount"); if(hotelService.update(hotelById)==null){ return new Result(false,StatusCode.ERROR,"酒店編輯失敗"); } return new Result(true,StatusCode.OK,"修改成功"); } /** * 刪除 * @param id */ @ResponseBody @RequestMapping(value="/{id}",method= RequestMethod.DELETE) public Result delete(@PathVariable String id ){ hotelService.deleteById(id); return new Result(true,StatusCode.OK,"刪除成功"); } /** * 酒店列表跳轉(zhuǎn)路徑 * @return */ @RequestMapping(value = "/hotelList") public String hotelList(){ return "admin/hotelmanage/hotelList"; } @RequestMapping(value = "/hotelAdd") public String hotelAdd(){ return "admin/hotelmanage/hotelAdd"; } /** * 查詢(xún)單個(gè)酒店 * @param model * @param id * @return */ @RequestMapping("/oneAttr") public String One_attr(Model model, Long id){ Hotel scenic=hotelService.findById(id); model.addAttribute("oneAttr",scenic); return "page/hotelDetail"; } @RequestMapping("/local") public String localRefresh(Model model,Long id) { Hotel hotel=hotelService.findById(id); // Sort sort=new Sort(Sort.Direction.DESC,"star"); System.out.println("1111"+hotel.toString()); List<Scenic> scenics=scenicService.findByCountryLike(hotel.getAddr()); System.out.println("2222"+scenics.toString()); Collections.sort(scenics, new Comparator<Scenic>() { @Override public int compare(Scenic o1, Scenic o2) { if (o1.getStart()<o2.getStart()){ return 2; } if (o1.getStart().equals(o2.getStart()) ){ return 1; } return -1; } }); if (scenics.size()>=4){ List newList=scenics.subList(0,3); model.addAttribute("scenics",newList); }else { model.addAttribute("scenics",scenics); } return "page/hotelDetail::table_refresh"; } }
后臺(tái)管理員控制器:
/** * 控制器層 * @author yy * */ @Controller @CrossOrigin @RequestMapping("/admin") public class AdminController { @Autowired private AdminService adminService; @Autowired BCryptPasswordEncoder encoder; /** * 查詢(xún)?nèi)繑?shù)據(jù) * @return */ @ResponseBody @RequestMapping(method= RequestMethod.GET) public Result findAll(){ return new Result(true, StatusCode.OK,"查詢(xún)成功",adminService.findAll()); } /** * 根據(jù)ID查詢(xún) * @param id ID * @return */ @ResponseBody @RequestMapping(value="/{id}",method= RequestMethod.GET) public Result findById(@PathVariable Long id){ return new Result(true,StatusCode.OK,"查詢(xún)成功",adminService.findById(id)); } /** * 分頁(yè)+多條件查詢(xún) * @param searchMap 查詢(xún)條件封裝 * @param page 頁(yè)碼 * @param size 頁(yè)大小 * @return 分頁(yè)結(jié)果 */ @ResponseBody @RequestMapping(value="/search/{page}/{size}",method=RequestMethod.POST) public Result findSearch(@RequestBody Map searchMap , @PathVariable int page, @PathVariable int size){ Page<Admin> pageList = adminService.findSearch(searchMap, page, size); return new Result(true,StatusCode.OK,"查詢(xún)成功", new PageResult<Admin>(pageList.getTotalElements(), pageList.getContent()) ); } /** * 根據(jù)條件查詢(xún) * @param searchMap * @return */ @ResponseBody @RequestMapping(value="/search",method = RequestMethod.POST) public Result findSearch( @RequestBody Map searchMap){ return new Result(true,StatusCode.OK,"查詢(xún)成功",adminService.findSearch(searchMap)); } /** * 增加 * @param admin */ @ResponseBody @RequestMapping(method=RequestMethod.POST) public Result add(@RequestBody Admin admin ){ adminService.add(admin); return new Result(true,StatusCode.OK,"增加成功"); } /** * 修改 * @param admin */ @ResponseBody @RequestMapping(value="/{id}",method= RequestMethod.PUT) public Result update(@RequestBody Admin admin, @PathVariable Long id ){ admin.setId(id); adminService.update(admin); return new Result(true,StatusCode.OK,"修改成功"); } /** * 刪除 * @param id */ @ResponseBody @RequestMapping(value="/{id}",method= RequestMethod.DELETE) public Result delete(@PathVariable String id ){ adminService.deleteById(id); return new Result(true,StatusCode.OK,"刪除成功"); } /** * 管理員跳轉(zhuǎn) * @return */ @RequestMapping(value = "/adminlogin") public String adminlogin() { return "admin/login/login"; } /** * admin登錄 * @param loginMap * @param request * @return */ @ResponseBody @RequestMapping(value="/login",method= RequestMethod.POST) public Result login(@RequestParam Map<String,String> loginMap,HttpServletRequest request){ Admin admin = adminService.finbyNameAndPassword(loginMap.get("name"),loginMap.get("password")); if (admin!=null){ request.getSession().setAttribute("admin",admin); Map map=new HashMap(); map.put("name",admin.getName()); return new Result(true,StatusCode.OK,"登錄成功"); }else { return new Result(false,StatusCode.ERROR,"賬號(hào)密碼錯(cuò)誤"); } } /** * 管理員登錄成功 * @return */ @RequestMapping(value = "/index") public String success(){ return "admin/index"; } /** * 用戶(hù)列表 * @return */ @RequestMapping(value = "/userList") public String user(){ return "admin/usermanage/userList"; } @RequestMapping(value = "/echars") public String analysis(){ return "admin/echars/console"; } /** * 管理員退出登錄 * @return */ @RequestMapping(value = "/logout") public String logout(HttpSession session){ session.removeAttribute("admin"); return "admin/login/login"; } /** * 管理員修改密碼 * @return */ @ResponseBody @RequestMapping(value = "/passwd") public Result passwd(HttpSession session,String passwd,String oldpad){ Admin admindmin= (Admin) session.getAttribute("admin"); Admin admins=adminService.findById(admindmin.getId()); boolean old=encoder.matches(oldpad,admins.getPassword()); if (old){ String newPassd=encoder.encode(passwd); admins.setPassword(newPassd); adminService.update(admins); return new Result(true,StatusCode.OK,"成功"); }else { return new Result(false,StatusCode.ERROR,"更新失敗"); } } }
以上就是Java實(shí)戰(zhàn)房屋租賃網(wǎng)的實(shí)現(xiàn)流程的詳細(xì)內(nèi)容,更多關(guān)于Java?房屋租賃網(wǎng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Java實(shí)戰(zhàn)之實(shí)現(xiàn)文件資料上傳并生成縮略圖
- Java實(shí)戰(zhàn)之實(shí)現(xiàn)物流配送系統(tǒng)示例詳解
- Java實(shí)戰(zhàn)之郵件的撰寫(xiě)和發(fā)送
- Java實(shí)戰(zhàn)在線選課系統(tǒng)的實(shí)現(xiàn)流程
- Java 實(shí)戰(zhàn)圖書(shū)管理系統(tǒng)的實(shí)現(xiàn)流程
- Java?實(shí)戰(zhàn)范例之校園二手市場(chǎng)系統(tǒng)的實(shí)現(xiàn)
- Java?實(shí)戰(zhàn)項(xiàng)目之家政服務(wù)平臺(tái)系統(tǒng)的實(shí)現(xiàn)流程
- Java?實(shí)戰(zhàn)項(xiàng)目之學(xué)生信息管理系統(tǒng)的實(shí)現(xiàn)流程
- Java實(shí)戰(zhàn)項(xiàng)目練習(xí)之球館在線預(yù)約系統(tǒng)的實(shí)現(xiàn)
相關(guān)文章
Java SpringBoot的相關(guān)知識(shí)點(diǎn)詳解
這篇文章主要介紹了SpringBoot的相關(guān)知識(shí)點(diǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-10-10Java實(shí)現(xiàn)打飛機(jī)小游戲(附完整源碼)
這篇文章主要介紹了Java實(shí)現(xiàn)打飛機(jī)小游戲(附完整源碼),這里整理了詳細(xì)的代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10Java對(duì)象方法的調(diào)用執(zhí)行過(guò)程詳解
這篇文章主要介紹了Java對(duì)象方法的調(diào)用執(zhí)行過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02Java中BigInteger類(lèi)的使用方法詳解(全網(wǎng)最新)
這篇文章主要介紹了Java中BigInteger類(lèi)的使用方法詳解,常用最全系列,本章作為筆記使用,內(nèi)容比較全面,但常用的只有:構(gòu)造函數(shù),基本運(yùn)算以及compareTo(),intValue(),setBit(),testBit()方法,需要的朋友可以參考下2023-05-05springboot2.2.2集成dubbo的實(shí)現(xiàn)方法
這篇文章主要介紹了springboot2.2.2集成dubbo的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01SpringBoot如何IDEA中實(shí)現(xiàn)熱部署
這篇文章主要介紹了SpringBoot如何IDEA中實(shí)現(xiàn)熱部署,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Java加密 消息摘要算法MAC實(shí)現(xiàn)詳解
這篇文章主要介紹了Java 消息摘要算法MAC實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07