登錄功能的實現


  首先講一下這個登錄界面可實現的功能:

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);
    }

}

 至此,登錄這個功能也就算是實現了。

下面是結果截圖:

輸入的格式不正確時:

 

出錯的情況下:

登錄成功時:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM