登錄模塊的實現
1、模塊介紹
以JSP+Servlet+JavaBean模式進行開發,系統流程圖如下:
用戶登錄之前需要進行註冊,在註冊成功後通過註冊的用戶名和密碼進行登錄,登錄失敗可以根據系統提示重新登錄,登錄成功後進入主頁。
2、關鍵技術
本實例采用MVC模式進行開發,戰士了模型層(Model)、視圖層(View)和控制層(Controller)的結構體系,程序設計結構如下圖所示:
程序為用戶提供了JSP頁面進行戰士,如用戶註冊頁面reg.jsp、用戶登錄頁面login.jsp等。這些JSP頁面是程序的視圖層(View),對於用戶而言,通過這一層與程序進行交互,同時交互後的結果也是通過這一層回應給用戶。
用戶對程序的請求以及程序對用戶所作出的回應由控制層(Conrtroller)掌管,本實例中表現為Servlet,如用戶註冊Servlet、用戶登錄Servlet等。當用戶發送一個請求時,Servlet將判斷用戶的請求類型,進而提供相應的業務邏輯處理方法進行處理;請求由程序處理完畢後,又由Servlet控制返回處理的結果信息。此層也是程序的核心部分。
3、數據庫設計
本實例只涉及一數據表,名稱為tb_user。此表為用戶信息表,用於存放用戶的註冊信息,其結構如圖表示:
Column Name | Datatype | NOT NULL | AUTO INC | Default Value | Comment |
id | Integer | √ | √ | null | 主鍵 |
username | varchar(45) | √ | null | 用戶名 | |
password | varchar(45) | √ | null | 密碼 | |
sex | varchar(45) | √ | null | 性別 | |
photo | varchar(45) | √ | null | 頭像 | |
varchar(45) | √ | null | 郵箱 | ||
tel | varchar(45) | √ | null | 聯系電弧 |
4、JavaBean設計
本實例設計3個主要的JavaBean組件,分別為用戶實例對象User、用戶數據庫操作對象UserDao類、數據庫連接工具類DataBaseUtil。
①、用戶實體對象
User類用於封裝用戶屍體對象,提供了用戶對象的詳細信息以及相應的get和set方法。
②、數據庫連接工具類
對於經常用到的操作可以將其封裝一個類,在類中提供了相應的操作方法,從而增強了代碼的重用性。
③、用戶數據庫操作
與用戶相關的數據庫操作方法封裝在UserDao類中,此類提供了實例中所用到的數據添加和查找方法,其中userIsExit()方法用於查找指定用戶名在數據庫是否存在,返回布爾值。
在用戶提交註冊信息時,需要判斷所提交的用戶名是否已被註冊,如果用戶名已被占用則不能再次被註冊。用戶名是用戶信息的標識,在提交註冊信息時可以使用userIsExit()進行判斷
用戶提交註冊信息後,需要對用戶信息進行持久化,以保證用戶憑其信息可以登錄。這就需要在UserDao類中提供用戶信息持久化的方法,其名稱為saveUser()。
註冊成功後,用戶即可通過註冊的用戶名及密碼進行登錄。對於程序而言,此操作實質就是根據用戶所提供的用戶名及密碼查詢用戶信息,如果查詢成功,證明在數據庫中存在於之匹配的信息,則登錄成功。這一操作通過UserDao類的login()方法實現。
5、實現過程
①用於註冊
創建名為RegServlet的類(即處理用戶註冊請求的servlet對象),通過doPost()方法對用戶註冊請求 進行處理。在處理過程中,首先通過request獲取用戶的註冊信息,然後通過UserDao類的userIsExit()方法判斷所提交的用戶名是否已被註冊,如果沒有註冊則將用戶提交的註冊信息寫入數據庫中,否則進行錯誤處理;對於用戶註冊的結果信息由mesage.jsp頁面予以顯示。
創建視圖層(為用戶提供的註冊頁面),名稱為reg.jsp,在其中提供給用戶註冊的表單。此表一post提交方式將請求發送到RegServlet,RegServlet類將根據用戶提供的用戶信息進行相應處理。
②用戶登錄
創建名為LoginServlet的類(即處理用戶登錄請求的Servlet),通過doPost()方法對用戶登錄進行處理。在獲取用戶提供的用戶名和密碼後,通過UserDao類的login()方法查詢用戶信息,如果查詢到的用戶信息不為null,則用戶登錄成功,將獲取到的用戶對象寫入到Session中,否則進行相應的錯誤處理。
創建視圖層(為用戶提供的登錄頁面),名稱為login.jsp,在其中提供登錄表單。
③用戶退出
用戶退出請求由UserExitServlet類進行處理,它是一個Servlet對象。此類通過doGet()方法對退出請求進行操作,此操作需要將存放在session中的User對象逐出。
④提示信息頁面
程序在處理業務請求後,需要告知用戶處理結束,如用戶註冊成功、用戶登錄失敗等,所以實例中提供了message.jsp頁面。
⑤Servlet配置
登錄模塊的實現