1. 程式人生 > >JavaWeb筆記——註冊登入系統專案思路

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. 通過使用者名稱查詢使用者!(方法已經存在了!)
=================================

註冊流程
圖片

驗證流程 圖片