victory的博客

长安一片月,万户捣衣声

0%

JavaWeb项目开发 | 注册功能实现

注册功能实现

  1. 实现原理
    当用户输入完注册信息,点击提交,浏览器向服务器发出请求,然后由服务器中的servlet来处理请求,将前台用户输入的信息保存到数据库当中。
  2. 安装MySQL并创建需要的数据库和表(假设创建的数据库为test3,创建表user),表结构如下图所示。
  3. 在eclipse中导入数据库配置文件
  4. 导入注册所需的jar包
  5. 导入DataSourceUtils.java
  6. 准备注册页面

页面效果:

代码:

<!doctype html>
<html>
    <head></head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>会员登录</title>
        <link rel="stylesheet" href="css/bootstrap.min.css" type="text/css" />
        <script src="js/jquery-1.11.3.min.js" type="text/javascript"></script>
        <script src="js/bootstrap.min.js" type="text/javascript"></script>
<!-- 引入自定义css文件 style.css -->
<link rel="stylesheet" href="css/style.css" type="text/css"/>

<style>
  body{
   margin-top:20px;
   margin:0 auto;
 }
 .carousel-inner .item img{
     width:100%;
     height:300px;
 }
 .container .row div{ 
     /* position:relative;
     float:left; */
 }
 
font {
    color: #3164af;
    font-size: 18px;
    font-weight: normal;
    padding: 0 10px;
}
 </style>
</head>
<body>

            <!--
                时间:2015-12-30
                描述:菜单栏
            -->
            <div class="container-fluid">
                <div class="col-md-4">
                    <img src="img/logo2.png" height="50px"/>
                </div>
                <div class="col-md-5">
                    <img src="img/header.png" />
                </div>
                <div class="col-md-3" style="padding-top:20px">
                    <ol class="list-inline">
                        <li><a href="login.htm">登录</a></li>
                        <li><a href="register.htm">注册</a></li>
                        <li><a href="cart.htm">购物车</a></li>
                    </ol>
                </div>
            </div>
            <!--
                时间:2015-12-30
                描述:导航条
            -->
            <div class="container-fluid">
                <nav class="navbar navbar-inverse">
                    <div class="container-fluid">
                        <!-- Brand and toggle get grouped for better mobile display -->
                        <div class="navbar-header">
                            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                                <span class="sr-only">Toggle navigation</span>
                                <span class="icon-bar"></span>
                                <span class="icon-bar"></span>
                                <span class="icon-bar"></span>
                            </button>
                            <a class="navbar-brand" href="#">首页</a>
                        </div>

                        <!-- Collect the nav links, forms, and other content for toggling -->
                        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                            <ul class="nav navbar-nav">
                                <li class="active"><a href="#">手机数码<span class="sr-only">(current)</span></a></li>
                                <li><a href="#">电脑办公</a></li>
                                <li><a href="#">电脑办公</a></li>
                                <li><a href="#">电脑办公</a></li>
                            </ul>
                            <form class="navbar-form navbar-right" role="search">
                                <div class="form-group">
                                    <input type="text" class="form-control" placeholder="Search">
                                </div>
                                <button type="submit" class="btn btn-default">Submit</button>
                            </form>

                        </div>
                        <!-- /.navbar-collapse -->
                    </div>
                    <!-- /.container-fluid -->
                </nav>
            </div>





<div class="container" style="width:100%;background:url('image/regist_bg.jpg');">
<div class="row"> 

    <div class="col-md-2"></div>
    <div class="col-md-8" style="background:#fff;padding:40px 80px;margin:30px;border:7px solid #ccc;">
        <font>会员注册</font>USER REGISTER
        <form class="form-horizontal" style="margin-top:5px;" action="/register/user">
             <div class="form-group">
                <label for="username" class="col-sm-2 control-label">用户名</label>
                <div class="col-sm-6">
                  <input type="text" class="form-control" name="username" id="username" placeholder="请输入用户名">
                </div>
              </div>
               <div class="form-group">
                <label for="inputPassword3" class="col-sm-2 control-label">密码</label>
                <div class="col-sm-6">
                  <input type="password" class="form-control" name="password" id="inputPassword3" placeholder="请输入密码">
                </div>
              </div>
               <div class="form-group">
                <label for="confirmpwd" class="col-sm-2 control-label">确认密码</label>
                <div class="col-sm-6">
                  <input type="password" class="form-control" id="confirmpwd" placeholder="请输入确认密码">
                </div>
              </div>
              <div class="form-group">
                <label for="inputEmail3" class="col-sm-2 control-label">Email</label>
                <div class="col-sm-6">
                  <input type="email" class="form-control" name="email" id="inputEmail3" placeholder="Email">
                </div>
              </div>
             <div class="form-group">
                <label for="usercaption" class="col-sm-2 control-label">姓名</label>
                <div class="col-sm-6">
                  <input type="text" class="form-control" name="name" id="usercaption" placeholder="请输入姓名">
                </div>
              </div>
              <div class="form-group opt">  
              <label for="inlineRadio1" class="col-sm-2 control-label">性别</label>  
              <div class="col-sm-6">
                <label class="radio-inline">
              <input type="radio" name="sex" id="inlineRadio1" value="1"> 男
            </label>
            <label class="radio-inline">
              <input type="radio" name="sex" id="inlineRadio2" value="0"> 女
            </label>
            </div>
              </div>        
              <div class="form-group">
                <label for="date" class="col-sm-2 control-label">出生日期</label>
                <div class="col-sm-6">
                  <input type="date" name="birthday" class="form-control"  >              
                </div>
              </div>
              
              <div class="form-group">
                <label for="date" class="col-sm-2 control-label">验证码</label>
                <div class="col-sm-3">
                  <input type="text" class="form-control"  >
                  
                </div>
                <div class="col-sm-2">
                <img src="./image/captcha.jhtml"/>
                </div>
                
              </div>
             
              <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                  <input type="submit"  width="100" value="注册" name="submit" border="0"
                    style="background: url('./images/register.gif') no-repeat scroll 0 0 rgba(0, 0, 0, 0);
                    height:35px;width:100px;color:white;">
                </div>
              </div>
            </form>
    </div>
    
    <div class="col-md-2"></div>
  
</div>
</div>
    <div style="margin-top:50px;">
            <img src="./image/footer.jpg" width="100%" height="78" alt="我们的优势" title="我们的优势" />
        </div>

        <div style="text-align: center;margin-top: 5px;">
            <ul class="list-inline">
                <li><a>关于我们</a></li>
                <li><a>联系我们</a></li>
                <li><a>招贤纳士</a></li>
                <li><a>法律声明</a></li>
                <li><a>友情链接</a></li>
                <li><a target="_blank">支付方式</a></li>
                <li><a target="_blank">配送方式</a></li>
                <li><a>服务声明</a></li>
                <li><a>广告声明</a></li>
            </ul>
        </div>
        <div style="text-align: center;margin-top: 5px;margin-bottom:20px;">
            Copyright &copy; 2005-2016 oracle商城 版权所有
        </div>

</body></html>
  1. 创建UserServlet
package com.oracle.servlet;

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.dbutils.QueryRunner;

import com.oracle.bean.User;
import com.oracle.utils.DataSourceUtils;

public class UserServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            //接收请求数据
            Map<String, String[]> map = request.getParameterMap();
            //创建user
            User user = new User();
            //把map中的数据映射到user中
            BeanUtils.populate(user, map);
            System.out.println(user.getBirthday());
            //把当前user中的数据插入到数据库中
            //创建QueryRunner对象 
            QueryRunner qr = new QueryRunner(DataSourceUtils.getDataSource());
            //编写sql
            String sql = "insert into user(id,username,password,email,name,sex,birthday)values(?,?,?,?,?,?,?)";
            //执行sql
            System.out.println(user.getUsername());
            qr.update(sql, user.getId(), user.getUsername(), user.getPassword(), user.getEmail(), user.getName(), user.getSex(), user.getBirthday());
            System.out.println("haahahahha");
            
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }
}
  1. 创建数据库user表对应的JavaBean(user bean)
package com.oracle.bean;

public class User {
    private int id;
    private String username;
    private String password;
    private String email;
    private String name;
    private String sex;
    private String birthday;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getBirthday() {
        return birthday;
    }
    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }
    public User(int id, String username, String password, String email, String name, String sex, String birthday) {
        super();
        this.id = id;
        this.username = username;
        this.password = password;
        this.email = email;
        this.name = name;
        this.sex = sex;
        this.birthday = birthday;
    }
    public User() {
        super();
        // TODO Auto-generated constructor stub
    }
}
  1. 访问页面输入用户信息进行登录