jsp+servlet+Tomcat+mysql實現用戶注冊、登錄、查看、修改實例之——用戶注冊


學習javaWeb,首先要學習基礎的jsp,servlet,弄通了機制然后就得心應手了。我們來實現一個簡單的實例來學習。


我們的任務有:1.數據庫及表創建

       2.實現用戶注冊

       3.實現用戶登錄

       4.實現用戶列表顯示

       5.實現用戶刪除

       6.實現用戶信息查看

       7.實現用戶信息修改


 

二、實現用戶注冊

上節實現了數據庫設計,本節開始來實現工程的編碼,我們采用MVC設計模式,並且結合三層架構來做,並且加上VO輔助層。

那么,工程的中的包關系如下圖所示:

下面來實現用戶注冊功能。

要實現用戶注冊功能,我們需要完成以下幾個任務:

      1.寫實體類VO

      2.寫注冊jsp頁面

      3.寫注冊servlet

      4.寫數據庫連接

      5.寫數據操作dao層

1.寫實體vo類

  UserVo.java

 1 package com.denny.user.vo;
 2 
 3 public class UserVo {
 4     private int userId;
 5     // 用戶Id
 6     private String userName ;
 7     // 用戶姓名
 8     private String userPassword;
 9     // 用戶密碼
10     private String userProvince;
11     // 用戶省份
12     private String userCity;
13     // 用戶城市
14     private String userSex;
15     // 用戶性別
16     private String userHobby;
17     // 用戶愛好
18     private String userDescribe;
19     // 用戶描述
20     private int userDisplay;
21     // 用戶狀態
22     // ......
23     // 省略了getter和setter方法
24 }

上面的代碼中並沒有生成getter和setter方法

2.用戶注冊jsp頁面

我們要實現的注冊頁面如下圖所示:

在工程的WebRoot目錄下新建了一個userregister.jsp

主要代碼如下:

 1 <form action="servlet/ServletUserRegister" method="post">
 2             <table align = "center" border="1" style="border-collapse: collapse;">
 3                 <tr>
 4                     <td colspan="2">用戶注冊</td>
 5                 </tr>
 6                 <tr>
 7                     <td>用戶名:</td>
 8                     <td><input type="text" name="userName" /></td>
 9                 </tr>
10                 <tr>
11                     <td>密碼:</td>
12                     <td><input type="password" name="userPassword" /></td>
13                 </tr>
14                 <tr>
15                     <td>地址:</td>
16                     <td>
17                         <select name="userProvince" id="userProvince" onchange="addCity()"></select>18                         <select name="userCity" id="userCity"></select>19                         <!-- 此處是省市聯動,具體javascript的代碼實現請參見 html+js實現城市聯動、日期聯動示例 -->
20                     </td>
21                 </tr>
22                 <tr>
23                     <td>性別:</td>
24                     <td>
25                         <input type="radio" name="userSex" value="男" checked="checked" />26                         <input type="radio" name="userSex" value="女" />27                     </td>
28                 </tr>
29                 <tr>
30                     <td>愛好:</td>
31                     <td>
32                         <input type="checkbox" name="userHobby" value="籃球" />籃球
33                         <input type="checkbox" name="userHobby" value="足球" />足球
34                         <input type="checkbox" name="userHobby" value="羽毛球" />羽毛球
35                         <input type="checkbox" name="userHobby" value="跑步" />跑步
36                     </td>
37                 </tr>
38                 <tr>
39                     <td>個人描述:</td>
40                     <td>
41                         <textarea cols="10" rows="3" name="userDescribe"></textarea>
42                     </td>
43                 </tr>
44                 <tr>
45                     <td class="tdstyle" colspan="2">
46                         <input type="submit" value="注冊" />
47                     </td>
48                 </tr>
49             </table>
50     </form>

3.注冊servlet

在jsp頁面中我們定義表單的提交action路徑為:ServletUserRegister,method方式為:post

那么現在就實現它吧。ServletUserRegister.java主要代碼如下:

 1 public void doPost(HttpServletRequest request, HttpServletResponse response)
 2             throws ServletException, IOException {
 3 
 4         request.setCharacterEncoding("utf-8");
 5         response.setCharacterEncoding("utf-8");
 6         // 設置編碼格式為 UTF-8
 7         String userName = request.getParameter("userName");
 8         String userPassword = request.getParameter("userPassword");
 9         String userProvince = request.getParameter("userProvince");
10         String userCity = request.getParameter("userCity");
11         String userSex = request.getParameter("userSex");
12         String userDescribe = request.getParameter("userDescribe");
13         String userHobby[] = request.getParameterValues("userHobby");
14         // 前台得到 用戶輸入數據
15         String str = "";
16         for (int i = 0; i < userHobby.length; i++) {
17             str = str + userHobby[i];
18             // 得到每個元素
19             if (i != (userHobby.length - 1)) {
20                 str += ",";
21                 // 如果不為最后一個元素,將其尾部加一個‘,’隔開
22             }
23         }
24         // for 循環拼接愛好數組中的數據
25 
26         UserVo user = new UserVo();
27         // 實例化一個VO對象
28         user.setUserName(userName);
29         user.setUserPassword(userPassword);
30         user.setUserProvince(userProvince);
31         user.setUserCity(userCity);
32         user.setUserHobby(str);
33         user.setUserSex(userSex);
34         user.setUserDescribe(userDescribe);
35         // 將前台得到的數據存入VO
36         UserDao userDao = new UserDao();
37         // 實例化一個數據庫操作對象
38         userDao.insertUser(user);
39         // 調用增加用戶方法
40         request.getRequestDispatcher("/userlogin.jsp").forward(request,
41                 response);
42         // 轉到登錄頁面
43     }

4.數據庫連接

在工程中,每次進行數據操作都要從數據庫獲得一個連接,如果每次都寫一遍則顯得代碼冗余,因此寫一個可復用的數據庫管理類是比較足取的。

這個數據庫管理類,Dbmanage.java代碼如下:

 1 package com.unis.dbmanage;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.ResultSet;
 6 import java.sql.SQLException;
 7 import java.sql.Statement;
 8 
 9 public class Dbmanage {
10     public Connection initDB() {
11         // 初始化數據庫連接方法
12         Connection conn = null;
13         // 創建一個Connection句柄
14         try {
15             Class.forName("com.mysql.jdbc.Driver");
16             // 加載數據庫驅動
17             String url = "jdbc:mysql://localhost:3306/userdb?charaterEncoding=utf-8";
18             // 定義數據庫地址url,並設置編碼格式
19             conn = DriverManager.getConnection(url, "root", "");
20             // 得到數據連接
21         } catch (ClassNotFoundException e) {
22 
23             e.printStackTrace();
24         } catch (SQLException e) {
25 
26             e.printStackTrace();
27         }
28         return conn;
29         // 返回數據庫連接
30     }
31 
32     public void closeDB(Statement sta, Connection conn) {
33         // 關閉數據庫連接(無結果集)
34         try {
35             sta.close();
36             conn.close();
37         } catch (SQLException e) {
38 
39             e.printStackTrace();
40         }
41 
42     }
43 
44     public void closeDB(ResultSet rs, Statement sta, Connection conn) {
45         // 關閉數據庫連接(有結果集)
46         try {
47             rs.close();
48             sta.close();
49             conn.close();
50         } catch (SQLException e) {
51 
52             e.printStackTrace();
53         }
54 
55     }
56 }

寫了這個數據庫管理類,每次想要連接,只需調用 initDB()方法 即可。下面寫數據庫操作類

5.數據操作類

在dao包中,有一個專門對用戶數據庫操作的類,UserDao.java,其內部的方法都是對數據庫的操作方法,注冊使用的insertUser()方法也位於其中。

insertUser()方法代碼如下:

 1 public void insertUser(UserVo user) {
 2         // 用戶注冊方法
 3         Dbmanage dbmanage = new Dbmanage();
 4         Connection conn = null;
 5         Statement sta = null;
 6 
 7         try {
 8             conn = dbmanage.initDB();
 9             sta = conn.createStatement();
10             String sql = "INSERT INTO usertable (user_name,user_password,user_province,user_city,user_sex,user_hobby,user_describe)VALUES('"
11                     + user.getUserName()
12                     + "','"
13                     + user.getUserPassword()
14                     + "','"
15                     + user.getUserProvince()
16                     + "','"
17                     + user.getUserCity()
18                     + "','"
19                     + user.getUserSex()
20                     + "','"
21                     + user.getUserHobby()
22                     + "','"
23                     + user.getUserDescribe()
24                     + "')";
25             sta.executeUpdate(sql);
26         } catch (SQLException e) {
27 
28             e.printStackTrace();
29         } finally {
30             // 執行完關閉數據庫
31             dbmanage.closeDB(sta, conn);
32         }
33     }

寫到這里,一個簡單的用戶注冊過程及走完了,當用戶輸入數據並且點擊“注冊”按鈕提交表單之后,servlet就會調用UserDao.java中的方法,將數據插入到數據庫中。


鏈接導航        1.數據庫及表創建

       2.實現用戶注冊

       3.實現用戶登錄

       4.實現用戶列表顯示

       5.實現用戶刪除

       6.實現用戶信息查看

       7.實現用戶信息修改


 


免責聲明!

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



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