基于 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");
elseresp.sendRedirect(req.getContextPath()+"/error.html");

5、 總結

  • 通過一學期的 javaweb 課程學習,知道 Java 對數據庫的鏈接,操作等,進一步了解 Java,MySQL 和 JDBC 的關系,銘記 JDBC 常做的三件事:連接數據庫;發送 SQL 語句,處理執行后的結果。
  • 在本課程中懂得了養成良好的編程習慣,類如針對不同的數據庫中的表以及功能創建不同的類放入不同的包中,“表名 +DAO”的類放入 cn.edu.lingnan.dao 包下面,Web 配置時注明時間分明且避免遺漏,還有對重要代碼或修改多次的代碼養成寫注釋的習慣,對以后調試的時候有所幫助。
  • 遇到的問題及建議:前面一部分的代碼只實現了一個表,到后面完善全部功能時都要重頭開始,這樣效率不高,而且代碼容易寫錯,調試很長時間才找出細節上的小錯誤,因此一開始就要較全面的分析系統功能,一步步完整地實現各個模塊,這樣才有利于最后的其他功能的拓展和實現頁面的美觀性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/96162.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/96162.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/96162.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第六天~提取Arxml中CAN采樣點信息Creat_ECU--Standard

?? ARXML探秘:解碼CAN采樣點的精準藝術 在汽車電子的交響樂中,CAN采樣點(Sample Point) 如同指揮家揮棒的關鍵時刻——它決定了何時"聆聽"總線上的信號。這個看似微小的百分比數值,卻是保障整車通信可靠性的核心密碼。本文將帶您深入ARXML中的采樣點配置世界…

Windows Git安裝配置

進入git官網Git - Downloading Package 點擊下載&#xff08;可復制鏈接到迅雷&#xff09; 雙擊運行exe安裝包 選擇安裝目錄 下一步 選擇 Git 默認編輯器&#xff0c;下一步設置初始化新項目(倉庫)的主干名字 讓Git決定&#xff08;Let Git decide&#xff09;使用默認的…

面試經驗分享-某電影廠

java會嗎&#xff1f;不會。。。。。hdfs讀文件寫文件的流程 數據寫入 1-客戶端向NameNode發起請求 2-NameNode審核權限和剩余空間&#xff0c;滿足條件即允許寫入&#xff0c;并告知客戶端寫入的DataNode地址 3-客戶端向指定的DataNode發送數據包 4-被寫入數據的DataNode同時完…

數據清理后續

前篇&#xff1a;Python 項目里的數據清理工作&#xff08;數據清洗步驟應用&#xff09; 一&#xff0c;先接上文添加兩種數據填充的方法 1、線性回歸填充 def lr_train_fill(train_data,train_label):train_data_all pd.concat([train_data, train_label], axis1)train_d…

nuc設置腳本開機自啟動

在終端執行gnome-session-properties這個是帶有圖型化頁面的設置開機自啟動的軟件沒有這個軟件的可以直接下載sudo apt update sudo apt install gnome-startup-applications一般都有&#xff0c;ubunutu自帶的右邊有添加&#xff0c;名稱和注釋隨便寫&#xff0c;只需要把命令…

JavaScript 性能優化實戰大綱

JavaScript 性能優化實戰大綱 核心優化方向 減少主線程阻塞 避免長任務&#xff08;Long Tasks&#xff09;拆分計算密集型操作使用 Web Workers 處理后臺任務優先使用 requestIdleCallback 或 requestAnimationFrame 內存管理 避免內存泄漏&#xff08;如未清理的定時器、閉包…

openssl生成自簽名證書的方法

因為開發中查詢過各種命令&#xff0c;失敗過很多次&#xff0c;所以記錄一下正確的命令&#xff1a; 生成私鑰-不要密碼 openssl genpkey -algorithm RSA -out ssl/key.pem 生成自簽名證書 openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -…

電影購票+票房預測系統 - 后端項目介紹(附源碼)

電影購票預測系統 - 后端項目介紹 項目概述 本項目是一個基于Spring BootVue的前后端分離電影購票系統&#xff0c;包含完整的前臺用戶功能和后臺管理功能&#xff0c;并提供數據可視化和電影預測功能。本文檔將詳細介紹后端項目的架構、功能模塊、技術棧和使用方法。 項目源…

專利服務系統平臺|個人專利服務系統|基于java和小程序的專利服務系統設計與實現(源碼+數據庫+文檔)

專利服務系統平臺 目錄 基于java和小程序的專利服務系統設計與實現 一、前言 二、系統設計 三、系統功能設計 四、數據庫設計 五、核心代碼 六、論文參考 七、最新計算機畢設選題推薦 八、源碼獲取&#xff1a; 博主介紹&#xff1a;??大廠碼農|畢設布道師&#x…

【HTML】3D動態凱旋門

目錄 版本1.0&#xff1a;簡易版本 版本2.0&#xff1a;建筑渲染 版本3.0&#xff1a;優化建筑群 版本4.0&#xff1a;增加公路和車流 版本5.0&#xff1a;去除壓在公路上的建筑 版本6.0&#xff1a;優化車流群 版本7.0&#xff1a;添加煙花效果 版本8.0&#xff1a;添…

(論文閱讀)FedViT:邊緣視覺轉換器的聯邦持續學習

FedViT&#xff1a;邊緣視覺轉換器的聯邦持續學習 FedViT: Federated continual learning of vision transformer at edge (北京理工大學-2023年發表于《Future Generation Computer Systems》中科院二區) highlight&#xff1a; ?提出一種輕量級的客戶端聯合持續學習方法。 ?…

微算法科技(NASDAQ: MLGO)研究利用PBFT中的動態視圖變換機制,實現區塊鏈系統高效運轉

隨著區塊鏈技術的飛速發展&#xff0c;其去中心化、透明性、不可篡改等特性使得它在金融、供應鏈管理、物聯網等多個領域得到了廣泛應用。然而&#xff0c;區塊鏈系統在高并發場景下的性能瓶頸問題一直是制約其大規模應用的關鍵因素。傳統的共識算法如PoW&#xff08;工作量證明…

從數據匯總到高級分析,SQL 查詢進階實戰(下篇)—— 分組、子查詢與窗口函數全攻略

引言&#xff1a;從 “提取數據” 到 “洞察價值”&#xff0c;SQL 進階之路 在掌握了基礎查詢與多表關聯后&#xff0c;你是否曾遇到這樣的挑戰&#xff1a;如何按部門統計平均薪資&#xff1f;怎樣找出每個崗位薪資最高的員工&#xff1f;或者如何計算銷售額的月度環比增長率…

Spring 和 Lettuce 源碼分析 Redis 節點狀態檢查與失敗重連的工作原理

關鍵步驟&#xff1a;Spring Boot 啟動時創建 LettuceConnectionFactory根據配置類型&#xff08;集群/哨兵/單機&#xff09;初始化客戶端對于集群模式&#xff1a;創建 RedisClusterClient調用 setOptions(getClusterClientOptions(configuration)) 應用配置2. 節點狀態檢查機…

從ChatGPT到智能助手:Agent智能體如何顛覆AI應用

從ChatGPT到智能助手&#xff1a;Agent智能體如何顛覆AI應用 更多大模型知識分享&#xff0c;盡在>>>GitHub<<< Agent 智能體是什么 簡單來說&#xff0c;Agent 智能體是一種能夠感知環境&#xff0c;并根據自身目標自主采取行動的智能實體。它就像是一個擁…

Spring Boot應用實現圖片資源服務

在這篇文章中&#xff0c;我們將介紹如何使用Spring Boot創建一個REST API來提供服務器上的靜態圖片資源。該API包括路徑安全檢查、文件存在性驗證以及緩存控制等功能&#xff0c;并且代碼包含詳細的注釋以幫助理解。Maven依賴 首先&#xff0c;在您的pom.xml文件中添加以下依賴…

Word 中 MathType 公式編號問題與解決

注&#xff1a;本文為 “Word 中 MathType 公式編號” 相關合輯。 圖片清晰度受引文原圖所限。 略作重排&#xff0c;未整理去重。 如有內容異常&#xff0c;請看原文。 【Word】解決 MathType 已插入公式按新章節開始編號的問題 Allan326 于 2020-03-25 15:30:08 發布 問題…

19. 大數據-產品概念

文章目錄前言一、數據庫1. 簡介2. 使用場景3. 數據庫類型4. 數據類型二、數據倉庫1. 簡介2. 使用場景3. 數據倉庫架構三、數據平臺1. 簡介2. 使用場景3. 數據倉庫架構四、數據中臺1. 簡介2. 使用場景3. 數據中臺架構五、數據湖1. 簡介2. 使用場景3. 數據湖架構六、總結1. 區別2…

python學習DAY46打卡

DAY 46 通道注意力(SE注意力) 內容&#xff1a; 不同CNN層的特征圖&#xff1a;不同通道的特征圖什么是注意力&#xff1a;注意力家族&#xff0c;類似于動物園&#xff0c;都是不同的模塊&#xff0c;好不好試了才知道。通道注意力&#xff1a;模型的定義和插入的位置通道注意…

Ansible 中的文件包含與導入機制

Ansible 中的文件包含與導入機制本文介紹了在 Ansible 中如何通過模塊化方式管理復雜的 Playbook&#xff0c;包括使用 include 和 import 系列語句來拆分和重用代碼。概述 當 Playbook 變得冗長或復雜時&#xff0c;可以將其拆分為多個小文件以提高可管理性。Ansible 提供了模…