基于javaweb+mysql的ssm房屋租赁系统(java+ssm+layui+jsp+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SSM房屋租赁系统(java+ssm+layui+jsp+mysql)
ssm房屋租赁系统
项目介绍
房屋租赁系统,基于 Spring5.x 的实战项目,此项目非Maven项目。
前台系统主要功能包括房源列表展示、房源详细信息展示、根据房源特征进行搜索,包括:房型、小区名;以及房源的预订功能。 后台管理: 用户信息管理 我的租房信息 修改我的密码 房源信息管理 发布房源信息 我发布的信息
多用户:普通用户与管理员各自都能发布房源信息
技术栈:
前端 Layui+JSP,后端 Spring SpringMVC MyBatis
环境要求
IDEA/Eclipse Mysql 5.7 Tomcat 9.x JDK 1.8
lombok
/**
* 查询所有用户页
*
* @return view
*/
@GetMapping("/allUser.html")
public String toAllUserPage() {
return "/admin/allUser.jsp";
}
/**
* 所有房源数据页
*
* @return view
*/
@GetMapping("/houseList.html")
public String toAllHousePage() {
return "/admin/houseList.jsp";
}
/**
* 传入id,跳转到修改用户界面
*
* @return view
*/
@GetMapping("/editUser.html")
public String toEditUserPage(int userId, HttpServletRequest req) {
User findUserById = service.findUserById(userId);
req.getSession().setAttribute("User", findUserById);
return "/admin/editUser.jsp";
}
/**
* 跳转到管理员更新房源界面
*
* @param houseId 房源ID
* @param request req
* @return view
*/
@RequestMapping("/updateHouse.html")
public String toUpdatePage(int houseId, HttpServletRequest request) {
House house = dao.findHouseDetailsById(houseId);
request.getSession().setAttribute("House", house);
return "/admin/updateHouse.jsp";
}
}
// 文件名
String filename = UUID.randomUUID()
+ Objects.requireNonNull(f.getOriginalFilename())
.substring(f.getOriginalFilename().lastIndexOf("."));
// 存储虚拟路径
//String localPath = simplePath + "details/" + filename;
String localPath = "/hrs/" + filename;
detailsPath.append(localPath + ":-:");
File filePath = new File(dirPath);
if (!filePath.exists()) {
boolean mkdirs = filePath.mkdirs();
}
//上传
f.transferTo(new File(dirPath + filename));
} catch (Exception e) {
map.put("code", 1);
map.put("msg", "上传失败");
e.printStackTrace();
}
}
map.put("code", 0);
map.put("msg", "上传成功");
}
return map;
}
/**
* 添加新房源信息
*
* @param house 房源数据
* @return res
*/
@PostMapping("/addHouseRecord")
@ResponseBody
public String addHouse(House house) {
if (house.getPublisher() == null || "".equals(house.getPublisher())) {
house.setPublisher("管理员");
}
house.setHouseImage(simplePath);
house.setHouseDetailsImg(detailsPath.toString());
int n = service.addNewHouse(house);
if (n > 0) {
// 置空上一次的添加记录
simplePath = "hrs/";
detailsPath.delete(0, detailsPath.length());
Admin admin = new Admin();
admin.setId(adminSession.getId());
admin.setUserPassword(newPwd);
int n = service.changePassword(admin);
if (n > 0) {
return "OK";
}
return "FAIL";
}
}
/**
* 收藏控制类
*
*/
@Controller
@RequestMapping("/order")
public class OrderController {
@Autowired
private IOrderService service;
/**
* 用户的收藏房源界面
*
* @return view
*/
@GetMapping("/myOrder.html")
/**
* 修改密码页
*
* @return view
*/
@GetMapping("/changePassword.html")
public String changePasswordPage() {
return "/admin/changePassword.jsp";
}
/**
* 查询所有用户页
*
* @return view
*/
@GetMapping("/allUser.html")
public String toAllUserPage() {
return "/admin/allUser.jsp";
}
/**
* 所有房源数据页
*
* @return view
*/
@GetMapping("/houseList.html")
public String toAllHousePage() {
return "/admin/houseList.jsp";
}
/**
* 传入id,跳转到修改用户界面
*
* @return view
*/
@GetMapping("/editUser.html")
public String toEditUserPage(int userId, HttpServletRequest req) {
User findUserById = service.findUserById(userId);
req.getSession().setAttribute("User", findUserById);
return "/admin/editUser.jsp";
}
/**
* 跳转到管理员更新房源界面
*
* @param houseId 房源ID
* @param request req
* @return view
/**
* 更新房源信息
*
* @param house 房源数据
* @return res
*/
@PostMapping("/updateHouse")
@ResponseBody
public String updateHouse(House house) {
int n = service.updateHouse(house);
if (n > 0) {
return "OK";
}
return "FAIL";
}
}
/**
* 普通用户登录
*
*/
@Controller
@RequestMapping("/user")
public class LoginController {
@Autowired
private IUserService mapper;
/**
* 登录
*
* @param userName 用户名
* @param userPassword 密码
* @param req req
* @return res
*/
@PostMapping("/login")
@ResponseBody
public String deleteUserHouse(String houseId) {
int n = service.deleteUserHouse(Integer.parseInt(houseId));
if (n > 0) {
return "OK";
}
return "FAIL";
}
/**
* 更新房源信息
*
* @param house 房源数据
* @return res
*/
@PostMapping("/updateHouse")
@ResponseBody
public String updateHouse(House house) {
int n = service.updateHouse(house);
if (n > 0) {
return "OK";
}
return "FAIL";
}
}
/**
* 普通用户登录
*
*/
@Controller
@RequestMapping("/user")
@Autowired
private IUserService service;
@Autowired
private IHouseService dao;
/**
* 用户管理页
*
* @return view
*/
@GetMapping("/home.html")
public String toUserSystemPage() {
return "/user/home.jsp";
}
/**
* 用户修改密码界面
*
* @return view
*/
@GetMapping("/updatePassword.html")
public String updatePassword() {
return "/user/updatePassword.jsp";
}
/**
* 后台第一个欢迎界面
*
* @return view
*/
@GetMapping("/welcome.html")
public String toWelcomePage() {
return "welcome.jsp";
}
/**
* 用户发布的租房信息
* @return view
*/
* 更新用户密码
*
* @param id id
* @param newPwd new password
* @param oldPwd old password
* @return res
*/
@PostMapping("/updateUserPwd")
@ResponseBody
public String updateUserPwd(String id, String newPwd, String oldPwd) {
User oldUser = new User();
oldUser.setUserId(Integer.parseInt(id));
oldUser.setUserPassword(oldPwd);
User checkUser = service.checkOldPwd(oldUser);
if (checkUser != null) {
User newUser = new User();
newUser.setUserId(Integer.parseInt(id));
newUser.setUserPassword(newPwd);
int n = service.updateUserPwd(newUser);
if (n > 0) {
return "OK";
}
}
return "FAIL";
}
}
/**
* 管理员界面视图跳转
*
*/
@Controller
@RequestMapping("/admin")
public String changePassword(HttpServletRequest request, String oldPwd, String newPwd, String confirmPwd) {
Admin checkAdmin = new Admin();
Admin adminSession = (Admin) request.getSession().getAttribute("Admin");
checkAdmin.setId(adminSession.getId());
checkAdmin.setUserPassword(oldPwd);
// 拿到当前登录的账户密码
Admin checkAdminPwd = service.checkAdminPwd(checkAdmin);
if (checkAdminPwd == null) {
return "ERROR";
}
if (!newPwd.equals(confirmPwd)) {
return "FAIL";
}
Admin admin = new Admin();
admin.setId(adminSession.getId());
admin.setUserPassword(newPwd);
int n = service.changePassword(admin);
if (n > 0) {
return "OK";
}
return "FAIL";
}
}
/**
* 收藏控制类
*
*/
@Controller
@RequestMapping("/order")
public class OrderController {
private IOrderService service;
/**
* 用户的收藏房源界面
*
* @return view
*/
@GetMapping("/myOrder.html")
public String toOrderPage() {
return "/user/myOrder.jsp";
}
/**
* 添加订单
*
* @param id 房源id
* @param request req
* @return res
*/
@PostMapping("/addOrder")
@ResponseBody
public String addOrder(String id, HttpServletRequest request) {
User user = (User) request.getSession().getAttribute("loginUser");
try {
Order order = new Order();
order.setHouseId(Integer.parseInt(id));
order.setOrderUser(user.getUserNickName());
order.setUserId(user.getUserId());
int n = service.addOrder(order);
if (n > 0) {
return "OK";
}
} catch (NumberFormatException e) {
e.printStackTrace();
}
return "FAIL";
}
/**
* 查询我的所有收藏房源信息
*
* @param page page
/**
* 用户控制类
*
*/
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private IUserService service;
@Autowired
private IHouseService dao;
/**
* 用户管理页
*
* @return view
*/
@GetMapping("/home.html")
public String toUserSystemPage() {
return "/user/home.jsp";
}
/**
* 用户修改密码界面
*
* @return view
*/
@GetMapping("/updatePassword.html")
public String updatePassword() {
return "/user/updatePassword.jsp";
}
/**
* 后台第一个欢迎界面
*
/**
* 更新用户信息
*
* @param user user
* @return res
*/
@PostMapping("/editUser")
public String editUser(User user) {
int n = service.updateUser(user);
if (n > 0) {
return "OK";
}
return "FAIL";
}
/**
* 查询所有房源
*
* @param page page
* @param limit limit
* @return res
*/
@RequestMapping("/houseList")
public UserHouseData findAllHouse(int page, int limit) {
Page p = new Page();
p.setLimit(limit);
p.setPage((page - 1) * limit);
List<House> findAllHouse = service.findAllHouse(p);
UserHouseData data = new UserHouseData();
data.setCode(0);
data.setCount(findAllHouse.size());
data.setData(findAllHouse);
data.setMsg("OK");
return data;
}
/**
* 删除房源
*
* @param houseId 房源id
* 详细图片地址
*/
private StringBuilder detailsPath = new StringBuilder();
@Autowired
private IHouseService service;
/**
* 添加房源界面
*
* @return view
*/
@GetMapping("/addHouse.html")
public String addHouse() {
return "addHouse.jsp";
}
/**
* 简介图片上传
*
* @param briefFile file
* @return res
*/
@RequestMapping("/briefImage")
@ResponseBody
public Map<String, Object> briefImage(@RequestParam("brief") MultipartFile briefFile) {
Map<String, Object> map = new HashMap<>(16);
try {
String suffixName = Objects.requireNonNull(briefFile.getOriginalFilename())
.substring(briefFile.getOriginalFilename().lastIndexOf("."));
String filename = UUID.randomUUID().toString().replace("-", "") + suffixName;
File filePath = new File(dirPath);
if (!filePath.exists()) {
boolean mkdirs = filePath.mkdirs();
}
//创建虚拟路径存储
simplePath = "/hrs/" + filename;
map.put("image", simplePath);
briefFile.transferTo(new File(dirPath + filename));
map.put("code", 0);
map.put("msg", "上传成功");
} catch (Exception e) {
map.put("code", 1);
map.put("msg", "上传失败");
e.printStackTrace();
/**
*/
@Controller
@RequestMapping("/house")
public class HouseController {
@Autowired
private IHouseService service;
@RequestMapping("/findUserHouse")
@ResponseBody
public UserHouseData houseByUser(HttpServletRequest request, int page, int limit) {
Page p = new Page();
User u = (User) request.getSession().getAttribute("loginUser");
String publisher = u.getUserNickName();
p.setPublisher(publisher);
p.setLimit(limit);
p.setPage((page - 1) * limit);
List<House> list = service.findHouseByUser(p);
System.out.println(list);
return new UserHouseData(0, "200", list.size(), list);
}
/**
* 删除用户发布的房源信息
*
* @param houseId 房源 ID
* @return res
*/
@PostMapping("/deleteUserHouse")
@ResponseBody
public String deleteUserHouse(String houseId) {
int n = service.deleteUserHouse(Integer.parseInt(houseId));
if (n > 0) {
return "OK";
}
return "FAIL";
*
* @param houseId 房源ID
* @param request req
* @return view
*/
@RequestMapping("/updateHouse.html")
public String toUpdatePage(int houseId, HttpServletRequest request) {
House house = dao.findHouseDetailsById(houseId);
request.getSession().setAttribute("House", house);
return "/admin/updateHouse.jsp";
}
}
/**
* 首页控制类
*
*/
@Controller
public class HomeController {
@Autowired
private IHouseService service;
/**
* 首页
*
* @param request request
* @return view
*/
@GetMapping({"/index.html", "/"})
public String index(HttpServletRequest request) {
List<House> findHomeInfo = service.findHomeInfo();
request.getSession().setAttribute("House", findHomeInfo);
return "index/index.jsp";
* @param briefFile file
* @return res
*/
@RequestMapping("/briefImage")
@ResponseBody
public Map<String, Object> briefImage(@RequestParam("brief") MultipartFile briefFile) {
Map<String, Object> map = new HashMap<>(16);
try {
String suffixName = Objects.requireNonNull(briefFile.getOriginalFilename())
.substring(briefFile.getOriginalFilename().lastIndexOf("."));
String filename = UUID.randomUUID().toString().replace("-", "") + suffixName;
File filePath = new File(dirPath);
if (!filePath.exists()) {
boolean mkdirs = filePath.mkdirs();
}
//创建虚拟路径存储
simplePath = "/hrs/" + filename;
map.put("image", simplePath);
briefFile.transferTo(new File(dirPath + filename));
map.put("code", 0);
map.put("msg", "上传成功");
} catch (Exception e) {
map.put("code", 1);
map.put("msg", "上传失败");
e.printStackTrace();
}
return map;
}
/**
* 详情图片上传
*
* @param file file
* @param req req
* @return res
*/
@RequestMapping("/detailsImage")
@ResponseBody
public Map<String, Object> detailsImage(@RequestParam("detailsImage") List<MultipartFile> file, HttpServletRequest req) {
Map<String, Object> map = new HashMap<>(16);
if (!file.isEmpty()) {
* @param house 房源数据
* @return res
*/
@PostMapping("/updateHouse")
@ResponseBody
public String updateHouse(House house) {
int n = service.updateHouse(house);
if (n > 0) {
return "OK";
}
return "FAIL";
}
}
/**
* 普通用户登录
*
*/
@Controller
@RequestMapping("/user")
public class LoginController {
@Autowired
private IUserService mapper;
/**
* 登录
*
* @param userName 用户名
* @param userPassword 密码
* @param req req
* @return res
*/
@PostMapping("/login")
@ResponseBody
public String toCustomerPage(String userName, String userPassword, HttpServletRequest req) {
return "/admin/updateHouse.jsp";
}
/**
* 更新用户密码
*
* @param id id
* @param newPwd new password
* @param oldPwd old password
* @return res
*/
@PostMapping("/updateUserPwd")
@ResponseBody
public String updateUserPwd(String id, String newPwd, String oldPwd) {
User oldUser = new User();
oldUser.setUserId(Integer.parseInt(id));
oldUser.setUserPassword(oldPwd);
User checkUser = service.checkOldPwd(oldUser);
if (checkUser != null) {
User newUser = new User();
newUser.setUserId(Integer.parseInt(id));
newUser.setUserPassword(newPwd);
int n = service.updateUserPwd(newUser);
if (n > 0) {
return "OK";
}
}
return "FAIL";
}
}
/**
* 管理员界面视图跳转
*
*/
@Controller
@RequestMapping("/admin")
public class AdminViewController {
@Autowired