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.实现用户信息修改


 

posted on 2013-05-18 15:34  乐山乐水 若愚若怯  阅读(23565)  评论(4编辑  收藏  举报

导航