Servlet实现注册功能

注册流程

html

<form action="reg" method="post">
    用户名:<input type="text" name="username"><br/>
    密码:<input type="text" name="password"><br/>
    确认密码:<input type="text" name="password2"><br/>

    <input type="submit" value="注册">
</form>

servlet

package com.zrgj.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.List;
import java.util.UUID;

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 com.zrgj.util.DbUtils;

@WebServlet(urlPatterns="/reg")
public class RegServlet extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html; charset=UTF-8");

        PrintWriter out=resp.getWriter();

        String username=req.getParameter("username");
        String password=req.getParameter("password");
        String password2=req.getParameter("password2");


        //判断密码和确认密码是否一致,不一致给出提示
        //如何判断2个字符串内容是否相同,如果相同返回true,不同返回false
        //!表示取反,如果相同返回false,不同返回true,相当于女生说不要,其含义是“要”;
        if( ! password.equals(password2) ){//所以不相同时(女生说不要),返回的是true(就是要),才执行{} 里面的部分
            out.write("密码与确认密码不同,请重新输入");
            return;//当前表示不再执行下面的代码
        }

        DbUtils s=new DbUtils();

        try { //try代码块,写可能抛异常的代码
            s.connect("com.mysql.jdbc.Driver"
                    , "jdbc:mysql://127.0.0.1:3308/scott?useSSL=false&useUnicode=true&characterEncoding=utf-8"
                    ,"root"
                    ,"");
        } catch (ClassNotFoundException e) {//e就是抛出异常的对象(将报错的信息封装到给对象中)
            // TODO Auto-generated catch block
            e.printStackTrace();//将异常的详细信息打印到控制台
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        //判断登录名是否重复
        try{
            Object[] paras=new Object[1];
            paras[0]=username;

            List list=s.query("select uid,username,password from user where username=?", paras);
            if(list.size()>0){
                out.write(username+" 已经存在,请重新输入!");
                s.close();
                return;
            }

        }catch(SQLException e){
            e.printStackTrace();
        }

        //登录的sql
        String sql="INSERT INTO user (uid,username,PASSWORD) VALUES (?,?,?)";

        Object[] paras=new Object[3];
        paras[0]= UUID.randomUUID() // 创建UUID的对象,此处是通过另一种方式创建的对象,静态方法
                .toString()// 将对象转换成字符串
                .replace("-", "");
        paras[1]=username;
        paras[2]=password;

        try {
            int i=s.update(sql, paras);//影响的行数
            System.out.println("影响的行数:"+i);
        } catch (SQLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

        try {
            s.close();//数据库资源非常宝贵,用完之后,要及时关闭掉。否则,长时间连接数据库不断开,会导致数据库无响应,再也连不上
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        out.write("注册成功!");
    }

}

原文出处:http://malaoshi.top/show_1IX2dIjwnejj.html