注冊登錄系統項目思路 -- javaweb


功能:
  > 注冊
  > 登錄
 
---------------------------------
 
JSP:
  * login.jsp  --> 登錄表單
  * regist.jsp --> 注冊表單
  * index.jsp -->  主頁(只有登錄成功才能看到)
 
Servlet:
  * LoginServlet
  * RegistServlet
 
Service:
  * UserService --> 與用戶相關的業務類
 
Dao:
  * UserDao --> 與用戶相關的數據類
 
Domain:
  * User(對應數據庫,還要對應所有表單)
    > username
    > password
    > verifyCode
 
---------------------------------
 
數據庫設計
  * users.xml(注意表頭)
    <users>
      <user username="xxx" password="xxx"/>
      <user username="xxx" password="xxx"/>
    </users>
 
---------------------------------
 
步驟:
 
1. 創建空項目
2. 導包:
  * CommonUtils
  * commons-beanutils.jar
  * commons-logging.jar
  * dom4j
  * jstl.jar
  * standard.jar
 
3. 建包
  * com.pwc.user.domain
    > User
  * com.pwc.user.dao
    > UserDao
  * com.pwc.user.service
    > UserService
  * com.pwc.user.web.servlet
    > LoginServlet
    > RegistServlet
 
4. jsp
  * login.jsp
  * regist.jsp
  * index.jsp
 
5. 在F盤下創建一個users.xml文件!
  * 添加根元素<users>
  * 保證文件為utf-8編碼!!!
 
---------------------------------
 
注冊功能
 
regist.jsp
  > 第一步:完成regist.jsp的基本功能!
RegistServlet
  > 封裝表單數據,封裝到User對象中。
  > 調用service的regist()方法
    * 如果這個方法沒有出問題,輸出“注冊成功”
    * 如果這個方法拋出了異常,把錯誤信息保存到request域,轉發到regist.jsp(顯示錯誤信息)
UserService#regist()
  > 沒有返回值,但注冊失敗拋出一個自定義的異常!可以在異常中添加異常信息!(自定義一個異常類)
  > 校驗用戶名是否已被注冊(通過用戶名查詢用戶),如果已被注冊,拋出異常,異常信息為“用戶名 已被注冊!”
  > 添加用戶
UserDao:通過業務分析,得到結果:需要提供兩個方法
  > 按用戶名查詢用戶對象:User findByUsername(String username)
  > 插入一個用戶到數據庫中:void add(User user)
 
工作:
1. 在service層添加一個UserException
2. dao;
  * User findByUsername(String username)
  * void add(User user)
3. service
  * void regist() throws UserException
4. servlet
  1). 封裝表單數據到User對象中
  2). 使用user調用service的regist()方法
  3). 如果得到UserException,那么把異常信息保存到request域中,轉發回regist.jsp,(數據的回顯
  4). 輸出“注冊成功”
 
---------------------------------
 
給注冊添加驗證碼
 
1. VerifyCode類
  * BufferedImage getImage() --> 獲取隨機的驗證碼圖片
  * String getText() --> 獲取圖片上的文本
  * static output(BfferedImage, OutputStream) --> 把圖片寫入到指定的輸出流中。
 
2. VerifyCodeServlet
  * 獲取隨機驗證碼圖片
  * 把驗證碼圖片上的文本保存到session中
  * 把圖片響應到response的outputStream中
 
3. regist.jsp
  * 添加<img src="指向Servlet" />
  * 添加一個文本框,用來輸入驗證碼
  * “看不清,換一張”,是一個超鏈接。把上面的<img>的src重新再次指向Servlet!為了處理瀏覽器的
 
緩存,需要使用時間來做參數!
 
4. 修改RegistServlet
  * 校驗驗證碼!
  * 錯誤:保存表單數據到request域、保存錯誤信息到request域,轉發回regist.jsp
  * 正確:什么都不做,向下執行原來代碼!
 
---------------------------------
 
服務器端表單(輸入)校驗
 
我們把這段校驗,放到獲取表單數據之后,驗證碼校驗之前!
 
1. 使用Map類型來裝載錯誤信息!
  * key:表單項名稱,例如:username、password、verifyCode
  * value:
    > 非空:用戶名不能為空,或者是“密碼不能為空”
    > 長度:用戶名長度必須在3~20之間 密碼長度必須在3~20之間
 
2. 在校驗失敗時,向map添加錯誤信息!那個字段出錯,就給哪個字段添加錯誤信息!

3. 判斷map是否為空(長度是否為0),如果不空,說明有錯誤存在,保存map到request域,保存form到 request域(回顯),轉發回regist.jsp

4. 在regist.jsp頁面中,顯示map中的錯誤信息。${map.username}
 
=================================
 
登錄功能
 
頁面:login.jsp --> 登錄表單!
 
LoginServlet --> 
  1. 獲取表單數據,封裝到User中
  2. 調用service的login()方法,傳遞form過去!
  3. 如果service的login()方法,沒有拋出異常!返回一個User對象!
  4. 有異常:獲取異常信息,保存到request域,保存form,轉發到login.jsp
  5. 沒異常:保存返回的user對象到session中!!!重定向到welcome.jsp(顯示當前用戶信息!)
 
UserService#login()
  public User login(User form) {...}
  1. 使用用戶名查詢數據庫,得到返回的User
    > 返回為null,拋出異常,異常信息為(用戶名不存在)
    > 返回不為null,獲取查詢出來的user的password與form的password進行比較!如果不同:拋出異常 (密碼錯誤!)
    > 如果相同,返回查詢結果!
 
UserDao
  1. 通過用戶名查詢用戶!(方法已經存在了!)

=================================

注冊 流程
驗證 流程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM