JSP前后台交互实现注册、登录功能

一、注册功能

1、html页面

  登录界面

      <div class="mid_main">
                <div class="title">
                
                </div>
                <form action="<%=path %>/loginCheck" method="post">
                    <input type="text" name="userName" placeholder="用户名" class="input1"><br>
                    <input type="password" name="pwd" placeholder="密码" class="input2"><br>
                    <input type="submit" name="sub" value="立即登录" class="submit"><br>
                </form>
                <span id="re" onclick="Click()">没有账号?点我注册</span>
            </div>

  注册界面 ,将值传给servlet

       <div class="reg">
                <span class="tit">注册</span>
                <form action="<%=path %>/registeManage" method="post">
                    <span>用户名:</span><input type="text" name="user" placeholder="请输入用户名" id="user"><br>
                    <span>密码:</span><input type="password" name="password" placeholder="请输入密码" id="pas"><br>
                    <span>再次输入:</span><input type="password" name="repassword" placeholder="重复密码" id=repas><br>
                    <input type="button" value="注册"  id="sub2" onclick="zhuce()">
                    <input type="button" value="取消"  id="cancle" onclick="quxiao()">
                    
                </form>
            </div>

 

2、js代码

function Click(){
    document.getElementsByClassName("mid_main")[0].style.display="none";
    document.getElementsByClassName("reg")[0].style.display="block";
    
}
function quxiao(){
    document.getElementById("user").value="";
    document.getElementById("pas").value="";
    document.getElementById("repas").value="";
    document.getElementsByClassName("reg")[0].style.display="none";
    document.getElementsByClassName("mid_main")[0].style.display="block";
}

function zhuce(){
    var user=document.getElementById("user").value;
    var pas=document.getElementById("pas").value;
    var repas=document.getElementById("repas").value;
    var reg=/^\w{3,}$/;
    if(reg.test(pas)==true &&user.length>0&&pas==repas){
        //提交表单
        document.forms[1].submit();
    }else{
        if(user.length==0){
            alert("用户名不能为空");
            return;
        }else if(reg.test(pas)==false){
            alert("格式错误,必须为字母数字下划线,至少3位");
            return;
        }else if(pas!=repas){
            alert("两次输入不一致");
            return;
        }
    }
    alert("注册成功!");
    document.getElementsByClassName("reg")[0].style.display="none";
    document.getElementsByClassName("mid_main")[0].style.display="block";
}

3、servlet中获取值

      //设置编码格式
            request.setCharacterEncoding("utf-8");
            
            String user=request.getParameter("user");
            String password=request.getParameter("password");
            
            //插入数据库
            boolean isSuccess= registeUserWithInfo(user, password);
            if(isSuccess){
                //跳转到登录页
                response.sendRedirect(request.getContextPath()+"/prac02/login.jsp");
            }else{
                //跳转到注册界面
                response.sendRedirect(request.getContextPath()+"/prac02/login.jsp");
            }

4、操作数据库的 registeUserWithInfo()方法

    public boolean  registeUserWithInfo(String user,String pwd){
        Connection conn=null;
        PreparedStatement pstmt=null;
        try {
            //1、加载驱动类
            Class.forName("oracle.jdbc.driver.OracleDriver");
            //2、获取数据库连接
            conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","ajeesia","123456");
            //3、加载句柄
            String sql="insert into  t_registe values(?,?,?)";
            pstmt= conn.prepareStatement(sql);
                
            int index=findMainIndex();
            pstmt.setObject(1, index);
            pstmt.setObject(2, user);
            pstmt.setObject(3, pwd);
                
                
            int count =pstmt.executeUpdate();
            return count>0;
                

            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                pstmt.close();
                conn.close();
                
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return false;
        
    }

 

二、登录功能

1、传值给servlet

          <form action="<%=path %>/loginCheck" method="post">
                    <input type="text" name="userName" placeholder="用户名" class="input1"><br>
                    <input type="password" name="pwd" placeholder="密码" class="input2"><br>
                    <input type="submit" name="sub" value="立即登录" class="submit"><br>
                </form>

 

2、servlet中获取值

        request.setCharacterEncoding("utf-8");
        
        String userName=request.getParameter("userName");
        String pwd=request.getParameter("pwd");


            if(isExist(userName, pwd)){
            //登录成功,跳转到
            response.sendRedirect("studentsManage");
        }else{
            //登录失败
            response.sendRedirect("prac02/login.jsp");
        }
        

 

3、操作数据库的isExist()方法

/**
     * 返回值为false表示登录失败
     * @param userName
     * @param pwd
     * @return
     */
    public boolean isExist(String userName,String pwd){
        
        Connection conn=null;
        PreparedStatement pstmt=null;
        ResultSet rs=null;
        
        
        //校验是否成功,默认失败
        boolean flag=false;
        try {
            //加载驱动类
            Class.forName("oracle.jdbc.driver.OracleDriver");
            
            //获取数据库连接
            conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","ajeesia","123456");

            //加载句柄
            String sql="select * from t_registe where userName=? and pwd=?";
            
            pstmt=conn.prepareStatement(sql);
            
            pstmt.setObject(1, userName);
            pstmt.setObject(2, pwd);
            
            //执行sql语句,返回结果集
            rs=pstmt.executeQuery();
            
            //遍历结果集
            flag=rs.next();
            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                if(rs!=null)rs.close();
                if(pstmt!=null)pstmt.close();
                if(conn!=null)conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        return flag;
        
    }

 

posted @ 2018-05-27 20:46  长亭一抹斜阳  阅读(5769)  评论(0编辑  收藏  举报