zoukankan      html  css  js  c++  java
  • 登录功能的实现

      首先讲一下这个登录界面可实现的功能:

    1.基本界面有了;

    2.具有容错性,如果什么都不输入,直接点确定,会提示错误;

    3.连接了数据库,建了表,可以实现注册,以及登录;

    4.能够正常登陆进去;

    5.如果登录的账号密码不正确,会提示重新登录。

      下面讲讲具体怎么实现?

    首先我们要理清思路:

    1.登录界面输入用户的ID和口令;

    2.然后点击确定按钮,我们先要在客户端对文本框中的东西进行验证;

    3.如果格式正确,则提交到控制器进行验证,如果不存在这个用户或者密码不正确都会提示重新登录,验证正确的话,则进入登录成功的界面,否则进入登录失败的界面;

    4.如果文本框的内容格式不正确,那么光标会自动停在出错的文本框里。

      那么第一步,我们首先创建数据库:

    在数据库应用软件中创建我们需要的数据库,并且建一个我们需要用的表。

    如下图所示:

      第二步,创建登录界面:

    先用HTML的知识写出了基本显示,然后在提交表单之前,会先用javascript写的方法对表单元素进行验证,使其具有正确的格式;当格式正确时,才会把表单元素里的标签提交到下一个页面里。

    代码如下:

    <%@ page contentType="text/html; charset=gb2312"%>
    
    <script language="JavaScript">
          function isValidate(form){
              //得到用户输入的用户名和密码
              userid=form.userid.value;
              userpass=form.userpass.value;
              
              //接下来先验证用户名
              //如果用户名的长度小于六
              if(userid.length<6){
                  alert("用户名的长度小于六。");
                  form.userid.focus();
                  return false;
              }
              
              //如果用户名的长度大于8
              if(userid.length>8){
                  alert("用户名的长度大于八。");
                  form.userid.focus();
                  return false;
              }
             
              //接下来验证口令
              //如果密码的长度小于六
              if(userpass.length<6){
                  alert("密码的长度小于六。");
                  form.userpass.focus();
                  return false;
              }
              
              //如果密码的长度大于8
              if(userpass.length>8){
                  alert("密码的长度大于八。");
                  form.userpass.focus();
                  return false;
              }
              
              //密码与用户名不能相等
              if(userpass==username){
                  alert("密码与用户名不能相等");
                  form.userpass.focus;
                  return false;
              }
              
          }
    </script>
    
    <html>
    <head>
    <title>登录界面</title>
    </head>
    <body>
        <h2 align="center">登录界面</h2>
        <form name=form1 action="login" method="post" onsubmit="return isValidate(form1)">
            <table align="center">
                <tr>
                    <td>用户ID:</td>
                    <td><input type="text" name="userid" >6~8位</td>
                </tr>
                <tr>
                    <td>口令:</td>
                    <td><input type="password" name="userpass" >6~8位,且不能与用户ID相同</td>
                </tr>
    
                <tr>
                    <td><input type="reset" value="重置"></td>
                    <td><input type="submit" value="确定"></td>
                    
                </tr>
    
            </table>
        </form>
        <table align="center">
            <tr>
                <td><input  type="button" value="点击注册用户" onclick="window.location.href='register.jsp'" /></td>
            </tr>
        </table>
    </body>
    </html>

      第三步:编写连接数据库,以及对表单元素的验证。

    由于JSP主要用于显示,所以我又再写了一个servlet用于对输入的信息进行处理;

    首先写一个方法,从数据库中查找登录界面中输入的用户名的密码,如果有,则返回正确的密码,

    否则 ,返回null;

    然后重写doget方法,对登录进行响应,如果输入的密码与从数据库中返回的密码相同,那么转到登录成功后的界面,如果登录失败,那么则提示用户重新登录。

    具体代码如下:

    package servlets;
    
    import java.io.*;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.ArrayList;
    
    import javax.servlet.*;
    import javax.servlet.http.*;
    
    import bean.*;
    
    public class LoginServlet extends HttpServlet {
        //该方法用户验证用户名和密码
        public int check(String userid,String userpass)
        {
            String URL="jdbc:mysql://127.0.0.1:3306/bookstore";
            String NAME="root";
            String PASS="*********";
            String SQL="select userpass from userinfo where userid='"+userid+"'";
        
            try {
                //加载驱动
                Class.forName("com.mysql.jdbc.Driver");
                //连接对象
                Connection con=DriverManager.getConnection(URL, NAME, PASS);
                //语句对象
                Statement stmt=con.createStatement();
                ResultSet rs=stmt.executeQuery(SQL);
                
                //得到该用户名的密码
                String tmpPass="";
                if(rs.next())
                {
                    tmpPass=rs.getString(1);
                
                }
                //关闭对象,释放资源
                rs.close();
                stmt.close();
                con.close();
                
                //判断密码是否正确
                if(tmpPass.equals(userpass))
                {
                    return 1;
                }
                
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return 0;
            
        }
        
        /* (non-Javadoc)
         * @see javax.servlet.http.HttpServlet#service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         */
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            //获取用户的用户名和口令
            request.setCharacterEncoding("utf-8");
            String userid=request.getParameter("userid");
            String userpass=request.getParameter("userpass");
            
            int result=check(userid,userpass);
            //要转向的文件
            String forward;
            
            //如果登录成功,就把用户名写入session中,并且转向success.jsp,
            //否则转向failure.jsp
            
            if(result==1){
                forward="manager.jsp";
                
            }
            else
                forward="login_failure.jsp";
            
            RequestDispatcher dispatcher=request.getRequestDispatcher(forward);
            
            //完成跳转
            dispatcher.forward(request,response);
            
        }
    
        
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doGet(request,response);
        }
    
    }

     至此,登录这个功能也就算是实现了。

    下面是结果截图:

    输入的格式不正确时:

    出错的情况下:

    登录成功时:

  • 相关阅读:
    C#按键打开文件选择对话框,并把选择好的路径保存/显示到textBox
    C#按钮打开浏览器,网址
    阅读笔记05
    进度条14
    冲刺4--10
    冲刺3
    冲刺2
    课堂训练书本
    进度条13
    课堂水王2
  • 原文地址:https://www.cnblogs.com/haojun/p/6423957.html
Copyright © 2011-2022 走看看