基于javaweb的SpringBoot房屋出租系统(java+springboot+maven+ssm+jsp+javascript+mysql)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

471424140701

481424140701

491424140701

501424140701

基于javaweb的SpringBoot房屋出租系统(java+springboot+maven+ssm+jsp+javascript+mysql)

项目介绍

基于SpringBoot房屋出租系统 有前台和后台

登陆角色:用户+房东+管理员 前台功能模块:登陆+注册+整租+合租+租房+新闻资讯+用户反馈+搜索+忘记密码等 后台功能模块: 用户端:订单管理+个人信息+我的家+我的收藏+密码修改+我的反馈 管理员端:房子管理+订单管理+新闻资讯管理+反馈管理+用户管理+个人信息+我的收藏+密码修改 房东端:房子管理+订单管理+个人信息+我的收藏+密码修改+我的反馈

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 4.数据库:MySql 5.7/8.0版本均可; 5.是否Maven项目:是;

技术栈

后端:SpringBoot(Spring+SpringMVC+Mybatis) 前端: JSP、 css 、JavaScript、JQuery、Ajax

使用说明

项目运行: 1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;

系统首页展示:

 租赁列表展示:

最新资讯列表展示:

后台订单管理展示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
     * 注册提交
* */
@RequestMapping(value = "/submit", method = RequestMethod.POST)
@ResponseBody
public JsonResult registerSubmit(User user, HttpSession session) {
if (user == null) {
return JsonResult.error("接收到非法访问,请重试!");
}
if (user.getUserName().equals("") || user.getEmail().equals("") || user.getPhone().equals("") || user.getUserDisplayName().equals("") || user.getUserPass().equals("") || user.getRole().equals("")) {
return JsonResult.error("请完整填写注册资料后再提交!");
}
String random = (String) session.getAttribute("IRENTALSESSIONKEY");
if (random == null) {
return JsonResult.error("请输入验证码");
}
if (!random.equals(user.getCode())) {
return JsonResult.error("验证码错误");
}
User user1 = userService.findByUserName(user.getUserName());
if (user1 != null) {
return JsonResult.error("用户已存在,请重新输入");
}

user.setIdCard("");
user.setUserAvatar("/assets/img/default-avatar.jpg");
user.setUserDesc("还未填写...");
user.setSex("保密");
user.setHobby("暂未填写");
user.setJob("暂未填写");
user.setCreateTime(new Date());
user.setBalance(100000.00);
try {
userService.insert(user);
} catch (Exception e) {
e.printStackTrace();
return JsonResult.error("注册失败,请重试!");
}
session.setAttribute(Constant.SESSION_USER_KEY, user);
return JsonResult.success("注册成功!请继续完善个人资料...");
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

/*
* 个人信息管理控制器
* */
@Controller
@RequestMapping("/admin/profile")
public class ProfileController extends BaseController {
@Autowired
private UserService userService;

/*
* 个人信息页面
* */
@RequestMapping("")
public String profile(Model model) {
User user = getLoginUser();
model.addAttribute("user", user);
model.addAttribute("tab", "my-profile");
return "admin/my-profile";
}

/*
* 个人信息保存提交
* */
@RequestMapping(value = "/submit", method = RequestMethod.POST)
@ResponseBody
public JsonResult submitProfile(User user, HttpSession session, @RequestParam("key") String key) {
user.setId(getLoginUserId());
userService.update(user);
//获取上传的用户头像
String sessionKey = Constant.SESSION_IMG_PREFIX + key;
List<String> imgList = (List<String>) session.getAttribute(sessionKey);
if (imgList != null && imgList.size() > 0) {
//设置头像,转换成JSON格式存储
user.setUserAvatar(JSON.toJSONString(imgList));
//将第一个图设置为头像
user.setUserAvatar(imgList.get(0));
}
userService.insertOrUpdate(user);
session.setAttribute(Constant.SESSION_USER_KEY, userService.get(getLoginUserId()));
return JsonResult.success("保存成功!");
}

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
    //从订单里查找到租户ID,把租户放到每个房子里
if (shareHouseList != null && shareHouseList.size() > 0) {
for (House houseTemp : shareHouseList) {
Order currentOrder = orderService.getCurrentEffectiveOrder(houseTemp.getId());
if (currentOrder != null) {
User customerUser = userService.get(currentOrder.getCustomerUserId());
currentOrder.setCustomerUser(customerUser);
houseTemp.setCurrentOrder(currentOrder);
}
}
}
house.setShareHouseList(shareHouseList);
model.addAttribute("house", house);
return "front/house-detail";
}

/*
* 房屋地图页面
* */
@RequestMapping("/house/map")
public String map(@RequestParam("id") Long id, Model model) {
//根据ID查询房屋
House house = houseService.get(id);
if (house == null) {
return renderNotFound();
}
String longitudeLatitude = house.getLongitudeLatitude();
String[] arr = longitudeLatitude.split(",");
model.addAttribute("longitude", arr[0]);
model.addAttribute("latitude", arr[1]);
model.addAttribute("address", house.getAddress());
return "front/house-map";
}

/*
* 房屋列表
* */
@RequestMapping("/house")
public String houseList(HouseSearchVO houseSearchVO, Model model) {
Page page = PageUtil.initMpPage(houseSearchVO.getPage(), houseSearchVO.getSize());
Page<House> housePage = houseService.getHousePage(houseSearchVO, page);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public String newsList(@RequestParam(value = "page", defaultValue = "1") Long pageNumber, @RequestParam(value = "size", defaultValue = "6") Long pageSize, Model model) {
Page page = PageUtil.initMpPage(pageNumber, pageSize);
News condition = new News();
Page<News> newsPage = newsService.findAll(page, condition);
model.addAttribute("pageInfo", newsPage);
model.addAttribute("pagePrefix", "/admin/news?");
model.addAttribute("tab", "news-list");
return "admin/news-list";
}

/*
* 进入新闻资讯发布页面
* */
@RequestMapping("/publish")
public String publish(@RequestParam(value = "id", required = false) Long id, Model model) {
News news = new News();
//编辑功能,ID!=NULL
if (id != null) {
news = newsService.get(id);
if (news == null) {
return renderNotFound();
}
}
model.addAttribute("news", news);
return "admin/news-publish";
}


/*
* 发布新闻资讯提交
* */
@RequestMapping(value = "/publish/submit", method = RequestMethod.POST)
@ResponseBody
public JsonResult publishSubmit(News news) {
try {
if (news.getId() == null) { //如果新闻ID为空的话则新增ID;
news.setCreateTime(new Date());
} else {
News queryNews = newsService.get(news.getId());
if (queryNews == null) {
return JsonResult.error("发布失败,未找到此新闻资讯ID");
}
}
//提取摘要
int postSummary = 300;
String summaryText = HtmlUtil.cleanHtmlTag(news.getContent());
if (summaryText.length() > postSummary) {
String summary = summaryText.substring(0, postSummary);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
            String summaryText = HtmlUtil.cleanHtmlTag(news.getContent());
if (summaryText.length() > postSummary) {
String summary = summaryText.substring(0, postSummary);
news.setSummary(summary);
} else {
news.setSummary(summaryText);
}

newsService.insertOrUpdate(news);
} catch (Exception e) {
return JsonResult.error("发布失败,请将内容补充完整!");
}

return JsonResult.success("发布成功", news.getId());
}


/*
* 删除新闻资讯
* */
@RequestMapping("/delete")
@ResponseBody
public JsonResult deleteNews(@RequestParam("id") Long id) {
try {
News news = newsService.get(id);
if (news == null) {
return JsonResult.error("删除失败,未找到新闻资讯ID。");
}
newsService.delete(id);
} catch (Exception e) {
return JsonResult.error("删除新闻资讯信息失败,请重试。");
}

return JsonResult.success("删除成功!");
}

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40


/*
* 后端反馈控制器
* */
@Controller("backFeedbackController")
public class FeedbackController extends BaseController {
@Autowired
private FeedbackService feedbackService;

@RequestMapping("/admin/feedback")
public String feedback(@RequestParam(value = "page", defaultValue = "1") Long pageNumber, @RequestParam(value = "size", defaultValue = "6") Long pageSize, Model model) {
Page page = PageUtil.initMpPage(pageNumber, pageSize);
Feedback condition = new Feedback();
//如果不是管理员,只查询自己的反馈
if (!loginUserIsAdmin()) {
condition.setUserId(getLoginUserId());
}
Page<Feedback> feedbackPage = feedbackService.findAll(page, condition);
model.addAttribute("pageInfo", feedbackPage);
model.addAttribute("pagePrefix", "/news?");
model.addAttribute("tab", "feedback-list");
model.addAttribute("isAdmin", loginUserIsAdmin());
return "admin/feedback-list";
}


@RequestMapping(value = "/admin/feedback/reply/submit", method = RequestMethod.POST)
@ResponseBody
public JsonResult replySubmit(Feedback feedback) {
feedbackService.update(feedback);
return JsonResult.success("保存成功!");
}


/*
* 删除反馈
* */
@RequestMapping("/admin/feedback/delete")
@ResponseBody


项目链接:
https://javayms.github.io?id=211524180701201ic
https://javayms.pages.dev?id=211524180701201ic