基于 JSP+Mysql实现MVC房屋租赁系统

基于 MVC 的房屋租赁系统的设计与实现

摘 要:房屋租赁管理系统与网络相结合,给用户提供更加周到和人性化的服务。网站模式为 MVC 模式,基于 MySQL 数据库,采用 JSP,Session 绘画跟踪、JavaScript 等技术,实现了普通用户可以浏览、查看房屋信息,可以注册成为网站用户、登录网站,然后查看个人信息,还可以查看该系统下的房子出租情况等,管理员可以对普通用户、房屋信息进行管理等功能。

1.目的与意义

随着计算机科学的发展,数据库技术在 Internet 中的应用越来越广泛为广大网络用户提供了更加周到和人性化的服务。个性化已逐渐成为当今 Web 应用的朝流。简单的租赁服务已经不能满足人们的需求,利用先进的管理手段,提高租赁管理的效率,是当今社会所面临的一个重要课题,为此我想设计一个房屋租赁管理系统实现用户和房子的增删查改,使得房子租赁更加有效率,也使租客租用房子更加便利。

2.理论基础及技术路线

2.1 、MVC

MVC 是 Model-View-Controller 的缩写,它能很好地使数据层与表示层进行分离,应用程序的输入、输出和处理流程。其模式分为三部分,Model(模型)是用于处理应用程序数据逻辑的部分,负责在数据库中存取数据;View(视图)是处理数据显示部分,依据模型数据而创建;Controller(控制器)是处理用户交互的部分,负责从视图读取数据,控制用户输入并发送数据。

以普通用户房东的注册为例:

2.2、 JSP

  • JSP 是基于 Java Servlet 以及整个 Java 体系的 Web 开发技术,具有动态页面与静态页面分离,能够脱离硬件平台的束搏,以及编译后运行的优点,可以建立安全、跨平台的先进动态网站。

2.3 、Servlet

  • Servlet 是一种独立于操作系统平台和网络传输协议的服务器端的 Java 应用程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态 Web 内容。
  • Servlet 运行在包含 Web 容器的 Web 服务器上,Web 容器给客户端的请求传给 Servlet,并将 Servlet 的响应返回给客户端。

2.4 、其他技术

运用 Session 会话跟踪技术,通过在服务器端记录信息确定用户的身份,用来记录以及跟踪用户在登录网页后的整个会话。同时通过配置文件,利用 Servlet 过滤器,使用他们来它们拦截请求和响应,比如利用过滤器判断用户是否为管理员才决定他们能否进入后台管理界面。例如 admin 网页用到"欢迎来到管理员页面"的标签语句,也可以采用自定义标签技术。

3、模块总体设计

3.1 、系统主体模块

"房屋租赁管理系统系统"的主要功能模块分别前台与后台,前端有:首页、注册注销、房子介绍、子页面(房东、租客、管理员);后台有:用户管理、房子管理等功能。系统功能如图所示:

3.2 、功能介绍

  • 首页:显示网站栏目与网站介绍,并根据当前用户权限对其提供子页面的链接,进入个人主页面或后台管理页面,统一提供注销功能。
  • 房子介绍:根据客户需求,提供个别房子简介,一来吸引眼球,再者可以帮助用户更快地了解到房子信息。
  • 用户管理:前端提供用户进行注册信息,管理员在该系统后台进行查看用户详细信息并修改、删除或增加等操作管理。
  • 房子管理:普通用户房东有房子需招租,通过管理员添加房子信息,招租,出租完成后修改房子出租状态,更新房子信息。

3.3 、数据库表定义

|-----------|-------------|----------|--------|
| 房东信息表 | | | |
| 列名 | 数据类型 | 可否为空 | 说明 |
| fId | Varchar(3) | not null | 房东编号 |
| fName | Varchar(10) | not null | 房东姓名 |
| fPassword | Varchar(10) | not nul | 房东密码 |
| fSuper | integer | null | 房东权限 |
| fPn | Varchar(20) | not nul | 房东电话 |
| 租客信息表 | | | |
| 列名 | 数据类型 | 可否为空 | 说明 |
| cId | Varchar(3) | not null | 租客编号 |
| cName | Varchar(10) | not null | 租客姓名 |
| cPassword | Varchar(10) | not nul | 租客密码 |
| cSuper | Integer | null | 租客权限 |
| cPn | Varchar(20) | not nul | 租客电话 |
| 房子信息表 | | | |
| 列名 | 数据类型 | 可否为空 | 说明 |
| hId | Varchar(10) | not null | 房子编号 |
| fId | Varchar(3) | not null | 房东编号 |
| fName | Varchar(10) | not null | 房东姓名 |
| dz | Varchar(50) | not null | 房子地址 |
| Pri | Varchar(5) | not null | 租金 |
| hSta | Integer | not null | 房子出租状态 |
| fPn | Varchar(20) | not null | 房东电话 |
| cId | Varchar(3) | null | 租客编号 |

3.4 、系统 E-R 图

  • 主题: 房屋租赁管理系统
  • 用况:普通用户(房东、租客)注册、登录,查看房子信息,修改个人信息等功能;管理员对普通用户和房子进行增删查改操作。

4、系统实现

4.1 、开发环境工程目录截图

  • 开发工具:Eclipse
  • 数据库:MySQL
  • 调式环境:火狐浏览器、IE 浏览器
  • 适用环境:支持任何浏览器。
  • 说明:dao 包:业务逻辑层,实现对数据库操作;dto 包:get 和 set 方法,实现对数据存取操作;filter 包:过滤器,实现通过用户信息进行过滤;servlet 包:存储 servlet,担当客户请求与服务器响应的中间层;tag 包:标签的事例;test 包:在控制台运行,检测业务逻辑运行的正确性;util 工具包:存储连接数据库、自定义标签等工具类;另外还有 XML 与 xsd 配置文件。
  • 开发文件夹截图:
  • 其他文件:admin:后台管理员的登录,增删查改功能的操作;fowner:普通用户的查看房子信息和个人信息;home、homepage:首页、注册页面以及各样式的设计;index.html 为登录页面,register.jsp 为房东注册页面,reg1.jsp 为租客注册页面;如下图:
  • 主要界面介绍
    1.登录:根据用户名和密码进行登录,当用户输入完毕点击登录后,LoginServlet 会将用户名与密码传入 DAO 验证,如果返回为 0 则跳转到 error.html 并提示用户登录失败,否则将用户的权限存入 session 中,然后跳转到首页,如果用户直接点击管理员页面,则提示你的权限不够,请用管理员账号登陆访问页面!

核心代码(登录功能:LoginServlet.java)

复制代码
//1.获取客户端提交的参数
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println("LoginServlet:"+username+"  "+password);
//2.处理一下参数,调用业务逻辑
FownerDAO fn = new FownerDAO();
CustomerDAO cu = new CustomerDAO();
int fSuper = fn.Login(username,password);
HttpSession f = req.getSession();
setAttribute("fSuper", fSuper);
setAttribute("fName", username);
//3.根据返回的结果处理
if(fSuper!=0) {
    resp.sendRedirect(req.getContextPath()+"/homepage/shouye.html");
} else {
    int cSuper = cu.Login(username,password);
    HttpSession c = req.getSession();
    setAttribute("cSuper", cSuper);
    setAttribute("cName", username);
    if(cSuper!=0) {
        resp.sendRedirect(req.getContextPath()+"/homepage/shouye.html");
    } else {
        resp.sendRedirect(req.getContextPath()+"/error.html");
    }

2.首页:登录成功后进入首页,可预览当前个别房子信息,根据不同用户进入不同子页面即自己的主页面。

普通用户页面:注册,查看房子信息,查看或修改个人信息

管理员页面:对房东,租客,房子信息的增删查改操作。

其一的核心代码(UpdateHouseServlet.java):

复制代码
//1
String s = req.getParameter("s");
boolean flag = false;
HouseDAO hd = new HouseDAO();
if(s==null) { //修改
    String hid = req.getParameter("hid");
    String fid = req.getParameter("fid");
    String fname = new String(req.getParameter("fname").getBytes("ISO-8859-1"),"GBK");
    //	System.out.println(fname);
    String cid =req.getParameter("cid");
    String dz = new String(req.getParameter("dz").getBytes("ISO-8859-1"),"GBK");
    String pri = req.getParameter("pri");
    int  hsta = Integer.parseInt(req.getParameter("hsta"));
    String fpn = req.getParameter("fpn");
    House h = new House();
    sethId(hid);
    setfId(fid);
    setfName(fname);
    setcId(cid);
    setDz(dz);
    setPri(pri);
    sethSta(hsta);
    setfPn(fpn);
    hd = new HouseDAO();
    flag= hd.updateHouse(h);
} else { //删除
    if(s.equals("delall")) { //批量删除
        String[] allhid = req.getParameterValues("shaosen");
        System.out.println(allhid);
        String[] temp = allhid[0].split(",");
        for(String a:temp) {
            System.out.println(a);
            hd.deleteHouse(a);
        }
        flag = true;
    } else { //删除一条记录
        String hid = req.getParameter("hid");
        flag = hd.deleteHouse(hid);
    }
}
//2
Vector<House> v = hd.findAllHouse();
HttpSession session = req.getSession();
session.setAttribute("allhouse", v);
//3
if(flag)
    resp.sendRedirect(req.getContextPath()+"/admin/allhouse.jsp");
else
    resp.sendRedirect(req.getContextPath()+"/error.html");

5、 总结

  • 通过一学期的 javaweb 课程学习,知道 Java 对数据库的链接,操作等,进一步了解 Java,MySQL 和 JDBC 的关系,铭记 JDBC 常做的三件事:连接数据库;发送 SQL 语句,处理执行后的结果。
  • 在本课程中懂得了养成良好的编程习惯,类如针对不同的数据库中的表以及功能创建不同的类放入不同的包中,"表名 +DAO"的类放入 cn.edu.lingnan.dao 包下面,Web 配置时注明时间分明且避免遗漏,还有对重要代码或修改多次的代码养成写注释的习惯,对以后调试的时候有所帮助。
  • 遇到的问题及建议:前面一部分的代码只实现了一个表,到后面完善全部功能时都要重头开始,这样效率不高,而且代码容易写错,调试很长时间才找出细节上的小错误,因此一开始就要较全面的分析系统功能,一步步完整地实现各个模块,这样才有利于最后的其他功能的拓展和实现页面的美观性。
相关推荐
HMBBLOVEPDX7 分钟前
MySQL的多版本并发控制(MVCC):
数据库·mysql·mvcc
TT哇13 分钟前
@[TOC](计算机是如何⼯作的) JavaEE==网站开发
java·redis·java-ee
Tina学编程19 分钟前
48Days-Day19 | ISBN号,kotori和迷宫,矩阵最长递增路径
java·算法
青川入梦26 分钟前
MyBatis极速通关上篇:Spring Boot环境搭建+用户管理实战
java·开发语言·mybatis
执子手 吹散苍茫茫烟波1 小时前
leetcode415. 字符串相加
java·leetcode·字符串
小韩博1 小时前
网络安全(Java语言)脚本 汇总(二)
java·安全·web安全
萤丰信息1 小时前
技术赋能安全:智慧工地构建城市建设新防线
java·大数据·开发语言·人工智能·智慧城市·智慧工地
带刺的坐椅1 小时前
Java MCP 的鉴权?好简单的啦
java·鉴权·mcp·solon-ai
Pocker_Spades_A1 小时前
飞算JavaAI家庭记账系统:从收支记录到财务分析的全流程管理方案
java·开发语言
33255_40857_280592 小时前
掌握分页艺术:MyBatis与MyBatis-Plus实战指南(10年Java亲授)
java·mybatis