Request的注册案例

注册案例:

要求:   

  1,用servlet来获取提交的注册表单的数据(在页面要进行数据的校验即使用js校验)

  2,使用BeanUtils工具将获取的数据封装到实体类里

  3 ,  将实体类传给dao类的方法

  4,  在DAO类里将收到的数据插入到数据里

  5,  根据返回的影响行数来判断注册是否成功

  6,如果注册成功,跳转一个成功的servlet进行信息提示,如果失败,跳转一个失败的servlet进行提示。

 1.建立数据库,建表

 2.导包,建立util类(数据库的工具类)

package com.qin.util;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

/**
 * Created by SunYuqin in 2018/9/14
 * Code without comments is soulless
 * Description:
 **/

public class JDBCUtils {
    private static DataSource ds;

    static {
        try {
            //加载配置文件druid.properties
            Properties pro = new Properties();
            InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            pro.load(is);

            //初始化DataSource对象
            ds = DruidDataSourceFactory.createDataSource(pro);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    //获取datasource对象
    public static DataSource getDataSource() {
        return ds;
    }

    //获取connection对象
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }
}

3.建立持久层dao包,并建立UserDao类,创建addUser方法

package com.qin.dao;

import com.qin.domain.RegisterUser;
import com.qin.util.JDBCUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;


/**
 * Created by SunYuqin in 2018/9/15
 * Code without comments is soulless
 * Description:
 **/

public class UserDao {
    //获取jdbctemplate对象
    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

    //add方法
    public int addUser(RegisterUser registerUser) {
        String sql = "insert into registeruser values(null,?,?,?,?,?,?,?,?)";
        String hobby = StringUtils.join(registerUser.getHobby(), ",");
        int update = template.update(sql, registerUser.getUsername(), registerUser.getPassword(), registerUser.getEmail(),
                registerUser.getName(), registerUser.getPhone(), registerUser.getGender(),
                registerUser.getBirth(), hobby);
        return update;
    }
    //查询方法
    public List<RegisterUser> selectAll() {

        String sql = "select * from registeruser";
        List<RegisterUser> maps = template.query(sql, new BeanPropertyRowMapper<>(RegisterUser.class));

        return maps;
    }

}

4.在domain包中建立实体类RegisterUser(属性值一定要与form表单,以及数据库中的键对应,方便阅读以及使用BeanUtils工具类)

package com.qin.domain;

import java.sql.Date;
import java.util.Arrays;

/**
 * Created by SunYuqin in 2018/9/15
 * Code without comments is soulless
 * Description:
 **/

public class RegisterUser {
    private String username;
    private String password;
    private String email;
    private String name;
    private String phone;
    private String gender;
    private Date birth;
    private String[] hobby;

    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 getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Date getBirth() {
        return birth;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }

    public String[] getHobby() {
        return hobby;
    }

    public void setHobby(String[] hobby) {
        this.hobby = hobby;
    }

    @Override
    public String toString() {
        return "RegisterUser{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", email='" + email + '\'' +
                ", name='" + name + '\'' +
                ", phone=" + phone +
                ", gender='" + gender + '\'' +
                ", birth=" + birth +
                ", hobby=" + Arrays.toString(hobby) +
                '}';
    }
}

5.建立servlet,用来对表单传的值进行处理

package com.qin.servlet;

import com.qin.dao.UserDao;
import com.qin.domain.RegisterUser;
import org.apache.commons.beanutils.BeanUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;

@WebServlet("/registerServlet")
public class RegisterServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.获取表单中的数据
        request.setCharacterEncoding("utf-8");
        Map<String, String[]> parameterMap = request.getParameterMap();
        RegisterUser registerUser = new RegisterUser();
        try {
            BeanUtils.populate(registerUser,parameterMap);

            UserDao dao = new UserDao();
            int count = dao.addUser(registerUser);
            if (count>0){
                //跳转
                request.getRequestDispatcher("/successServlet").forward(request,response);
            }else {
                request.getRequestDispatcher("/failServlet").forward(request,response);

            }
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}

6.分别建立successServlet以及failServlet

success

package com.qin.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/successServlet")
public class SuccessServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().println("注册成功!!!");
        request.setCharacterEncoding("utf-8");
        request.getRequestDispatcher("/getallServlet").forward(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}


fail

package com.qin.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/failServlet")
public class FailServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().println("注册失败!!!");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}


//获取所有数据库值的servlet
package com.qin.servlet;

import com.qin.dao.UserDao;
import com.qin.domain.RegisterUser;
import org.apache.commons.lang.StringUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet("/getallServlet")
public class GetAllServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取所有的记录
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().write("<head>\n" +
                "    <meta charset=\"utf-8\">\n" +
                "    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n" +
                "    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n" +
                "    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->\n" +
                "    <title>Bootstrap HelloWorld</title>\n" +
                "\n" +
                "    <!-- Bootstrap -->\n" +
                "    <link href=\"css/bootstrap.min.css\" rel=\"stylesheet\">\n" +
                "    <!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) -->\n" +
                "    <script src=\"js/jquery-3.2.1.min.js\"></script>\n" +
                "    <!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->\n" +
                "    <script src=\"js/bootstrap.min.js\"></script>\n" +
                "</head>");
        response.getWriter().write("<div class='container'>");
        response.getWriter().write("<table class=\"table table-striped table-hover  table-bordered\">");
        response.getWriter().write("<header align='center'><font size='13'>数据库中的记录表</font></header>");
        response.getWriter().write("<tr align='center'>\n" +
                "        <td>username</td>\n" +
                "        <td>password</td>\n" +
                "        <td>email</td>\n" +
                "        <td>name</td>\n" +
                "        <td>phone</td>\n" +
                "        <td>gender</td>\n" +
                "        <td>birthday</td>\n" +
                "        <td>hobby</td>\n" +
                "    </tr>");
        UserDao dao = new UserDao();
        List<RegisterUser> list = dao.selectAll();
        for (RegisterUser user : list) {
            response.getWriter().write("<tr align='center'>\n" +
                    "        <td>" + user.getUsername() + "</td>\n" +
                    "        <td>" + user.getPassword() + "</td>\n" +
                    "        <td>" + user.getEmail() + "</td>\n" +
                    "        <td>" + user.getName() + "</td>\n" +
                    "        <td>" + user.getPhone() + "</td>\n" +
                    "        <td>" + user.getGender() + "</td>\n" +
                    "        <td>" + user.getBirth() + "</td>\n" +
                    "        <td>" + StringUtils.join(user.getHobby(), ",") + "</td>\n" +
                    "    </tr>");
        }
        response.getWriter().write("</table>");
        response.getWriter().write("</div>");
    }
}

7.对表单的action进行设置,启动tomcat 开始测试

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册页面</title>
    <style>
        * {
            margin: 0px;
            padding: 0px;
            box-sizing: border-box;
        }

        body {
            background: url("img/register_bg.png") no-repeat center;
            padding-top: 25px;
        }

        .rg_layout {
            width: 900px;
            height: 500px;
            border: 8px solid #EEEEEE;
            background-color: white;
            /*让div水平居中*/
            margin: auto;
        }

        .rg_left {
            /*border: 1px solid red;*/
            float: left;
            margin: 15px;
        }

        .rg_left > p:first-child {
            color: #FFD026;
            font-size: 20px;
        }

        .rg_left > p:last-child {
            color: #A6A6A6;
            font-size: 20px;

        }

        .rg_center {
            float: left;
            /* border: 1px solid red;*/

        }

        .rg_right {
            /*border: 1px solid red;*/
            float: right;
            margin: 15px;
        }

        .rg_right > p:first-child {
            font-size: 15px;

        }

        .rg_right p a {
            color: pink;
        }

        .td_left {
            width: 100px;
            text-align: right;
            height: 45px;
        }

        .td_right {
            padding-left: 50px;
        }

        #username, #password, #email, #name, #tel, #birthday, #checkcode {
            width: 251px;
            height: 32px;
            border: 1px solid #A6A6A6;
            /*设置边框圆角*/
            border-radius: 5px;
            padding-left: 10px;
        }

        #checkcode {
            width: 110px;
        }

        #img_check {
            height: 32px;
            vertical-align: middle;
        }

        #btn_sub {
            width: 150px;
            height: 40px;
            background-color: #FFD026;
            border: 1px solid #FFD026;
        }

        #sunbtn {
            padding-left: 150px;
        }

    </style>

</head>
<body>

<div class="rg_layout">
    <div class="rg_left">
        <p>新用户注册</p>
        <p>USER REGISTER</p>

    </div>

    <div class="rg_center">
        <div class="rg_form">
            <!--定义表单 form-->
            <form action="/day14_register/registerServlet" method="post" id="form1">
                <table>
                    <tr>
                        <td class="td_left"><label for="username">用户名</label></td>
                        <td class="td_right">
                            <input type="text" name="username" id="username" placeholder="请输入用户名">
                            <span id="user_name"></span>
                        </td>
                    </tr>

                    <tr>
                        <td class="td_left"><label for="password">密码</label></td>
                        <td class="td_right">
                            <input type="password" name="password" id="password" placeholder="请输入密码">
                            <span id="password_1"></span>
                        </td>
                    </tr>

                    <tr>
                        <td class="td_left"><label for="email">Email</label></td>
                        <td class="td_right">
                            <input type="email" name="email" id="email" placeholder="请输入邮箱">
                            <span id="email_1"></span>
                        </td>
                    </tr>

                    <tr>
                        <td class="td_left"><label for="name">姓名</label></td>
                        <td class="td_right">
                            <input type="text" name="name" id="name" placeholder="请输入姓名">
                            <span id="name_1"></span>
                        </td>
                    </tr>

                    <tr>
                        <td class="td_left"><label for="tel">手机号</label></td>
                        <td class="td_right">
                            <input type="text" name="phone" id="tel" placeholder="请输入手机号">
                            <span id="tel_1"></span>
                        </td>
                    </tr>

                    <tr>
                        <td class="td_left"><label>性别</label></td>
                        <td class="td_right">
                            <input type="radio" name="gender" value="male" checked> 男
                            <input type="radio" name="gender" value="female"> 女
                        </td>
                    </tr>

                    <tr>
                        <td class="td_left"><label for="birthday">出生日期</label></td>
                        <td class="td_right"><input type="date" name="birth" id="birthday" placeholder="请输入出生日期">
                        </td>
                    </tr>

                    <tr>
                        <td class="td_left"><label>爱好</label></td>
                        <td class="td_right">
                            <input type="checkbox" name="hobby" value="swim" > 游泳
                            <input type="checkbox" name="hobby" value="run"> 跑步
                            <input type="checkbox" name="hobby" value="game"> 游戏
                        </td>
                    </tr>



                    <tr>
                        <td class="td_left"><label for="checkcode">验证码</label></td>
                        <td class="td_right"><input type="text" name="checkcode" id="checkcode" placeholder="请输入验证码">
                            <img id="img_check" src="img/verify_code.jpg">
                        </td>
                    </tr>


                    <tr>
                        <td colspan="2" id="sunbtn"><input type="submit" id="btn_sub" value="注册"></td>
                    </tr>
                </table>

            </form>


        </div>

    </div>

    <div class="rg_right">
        <p>已有账号?<a href="#">立即登录</a></p>
    </div>


</div>

<script>
    window.onload = function () {
        document.getElementById("username").onblur = checkUsername;
        document.getElementById("password").onblur = checkPassword;
        document.getElementById("email").onblur = checkEmail;
        document.getElementById("name").onblur = checkName;
        document.getElementById("tel").onblur = checkTel;

        document.getElementById("form1").onsubmit = function () {
            return checkUsername() && checkPassword() && checkEmail() &&checkName() && checkTel();
        }
    };
    //校验username
    function checkUsername() {
        var username = document.getElementById("username").value;
        var reg = /^\w{3,12}$/;
        var flag = reg.test(username);
        var user_name = document.getElementById("user_name");
        if (flag){
            user_name.innerHTML = "<img  height='25' width='35' src='img/gou.png' />"
        }else {
            user_name.innerHTML = "<font color='red'>用户名格式不正确</font>"
        }
        return flag;
    };
    //校验password
    function checkPassword(){
        var password = document.getElementById("password").value;
        var reg = /^\w{3,12}$/;
        var flag = reg.test(password);
        var pass_word = document.getElementById("password_1");
        if (flag){
            pass_word.innerHTML = "<img  height='25' width='35' src='img/gou.png' />"
        }else {
            pass_word.innerHTML = "<font color='red'>密码格式不正确</font>"
        }
        return flag;
    };
    //校验email
    function checkEmail(){
        var email = document.getElementById("email").value;
        var reg = /^\w{3,13}@\w{1,3}.\w{2,3}$/;
        var flag = reg.test(email);
        var email_1 = document.getElementById("email_1");
        if (flag){
            email_1.innerHTML = "<img  height='25' width='35' src='img/gou.png' />"
        }else {
            email_1.innerHTML = "<font color='red'>邮箱格式不正确</font>"
        }
        return flag;
    };
    //校验name
    function checkName(){
        var name = document.getElementById("name").value;
        var reg = /^[\u4e00-\u9fa5]{2,15}$/;
        var flag = reg.test(name);
        var name_1 = document.getElementById("name_1");
        if (flag){
            name_1.innerHTML = "<img  height='25' width='35' src='img/gou.png' />"
        }else {
            name_1.innerHTML = "<font color='red'>姓名格式不正确</font>"
        }
        return flag;
    };
    //校验手机号
    function checkTel(){
        var tel = document.getElementById("tel").value;
        var reg = /^1[3456789]\d{9}$/;
        var flag = reg.test(tel);
        var tel_1 = document.getElementById("tel_1");
        if (flag){
            tel_1.innerHTML = "<img  height='25' width='35' src='img/gou.png' />"
        }else {
            tel_1.innerHTML = "<font color='red'>手机号格式不正确</font>"
        }
        return flag;
    };

</script>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/qq_35472880/article/details/82713645