使用AJAX實現用戶名的唯一性校驗(注冊界面)-JAVA(新手)



  • (1)實現用戶名的唯一性校驗

 

所需要准備的:

  1. Servlet
  2. 注冊界面的JSP
  3. 接口和實現類

 

 

所需要的接口和實現類:

接口: 

/* * 用戶注冊 * 賬號的唯一性校驗,需要傳參(username) * */ boolean Username(String username);


實現類:

 @Override
    public boolean Username(String username) {
        String sql = "select * from user where username = ?";
        List<Map<String, Object>> list = DBUtil.excuteQuery(sql, username);
        return list.size()>0;
    }

 

 

所需要的注冊的JSP界面:

    <body>
        
        <div class="wrap">
            <div class="guimeilogo"></div>
            <div class="register">
            
            
                <div class="top">
                    <h1>新用戶注冊</h1>
                    <a href="/shop/views/login.jsp">已有賬號</a>
                </div>
                
                
                <div class="mid">
                    <form action="/shop/register" method="post">
                        <input type="text" name="username" id="username" placeholder="親,您的昵稱" required="required" />
                        <div id="showMessage"></div>

                        <input type="password" name="password" id="password" placeholder="密碼" required="required" />
                    
                        <input type="text" name="email" id="email" placeholder="郵箱" required="required" />


                        <input type="text" name="telephone" id="telephone" placeholder="手機號" required="required"/>

                        <div class="sec">

                            <input type="text" name="code" id="code" placeholder="驗證碼" required="required" />

                            <a  class="send" onclick="send()"> 發送驗證碼 </a>

                            <script>
                                function send(){

                                    return false;
                                }
                            </script>
                        </div>
                        <input type="submit" id="submit" value="注冊"/>

                    </form>
                </div>
            </div>
        </div>
        <script src="js/jquery-2.1.0.js"></script>
        <script>
            username.onblur = function () {
          <--/工程名/Servlet映射路徑--> $.post(
"/shop/chexkusername" ,{username:this.value }, function (date) { if ( date.code == "10010" ){ $("#showMessage").html("對不起,此用戶名已經被使用").css("color","red"); } else{ $("#showMessage").html("該用戶名可以使用").css("color","blue") } }); } </script> </body> </html>

個人理解:

    獲取Username-使用Post提交-使用if、else判斷-如果說狀態碼等於10010則意味着用戶名相重,則提示用戶名已經被使用。

                         反之,如果不等於10010則意味着用戶名可以使用。


 

所需要的Servlet:

@WebServlet("/chexkusername") public class ChexkUsernameServlet extends HttpServlet {
  
  /*
  * 注冊時用戶名的唯一性校驗。
  *
  * 因為是判斷用戶名是否重復,則需要傳遞參數(user表里的username)
  * 如果說重復則需要提示用戶讓用戶進行更改。反之則提示用戶可以使用。
  *
  * 所以首先,我們在Servlet中需要干的第一件事就是獲取請求參數username
  * 第二步就是調用DAO層檢驗用戶名是否唯一。
  * 第三步需要設置編碼格式,因為是使用post請求,在瀏覽器中會出現亂碼的現象,所以我們要設置一下編碼格式。
  * 第四步我們需要將檢驗結果返回給瀏覽器。
  * 然后進行是否被使用的判斷,還有可用和不可用的代碼塊和語句的提示。
  *
  * 在最后一步將Map轉為JSON,因為使用JSON可以更方便的獲取到值,而不用再使用共享參數、請求轉發等操作。
  * */

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 1、接收請求參數。
        String username = req.getParameter("username");
        // 2、調用DAO 檢驗用戶名是否唯一。
        IUserDAO dao = new UserDAOImpl();
        boolean username1 = dao.Username(username);
        // 3、設置編碼格式。
        resp.setContentType("text/json;charset=UTF-8");
        // 4、將檢驗結果返回給瀏覽器(響應Ajax請求)
        PrintWriter writer = resp.getWriter();
        Map<Object, Object> Map = new HashMap<>();
        //如果輸入的用戶名和數據庫表內的一致則提示用戶名已經被使用
        if (username1){
            //code、message為狀態碼
            Map.put("code","10010");
            Map.put("message","用戶名已經被使用");
        //否則則是不一致則提示登錄成功。
        } else{
            Map.put("code","10086");
            Map.put("message","恭喜,用戶名可用");
        }
        //轉為JSOn
        String s = JSON.toJSONString(Map);

        writer.write(s);
        writer.close();
    }
}

個人理解:

    用戶點擊注冊界面,在用戶名一欄輸入用戶名,當鼠標的光標離開輸入框時,就去檢驗用戶的用戶名是否有重復。

    這樣可以節省資源,避免用戶資源的浪費,因為以前所使用的方法,是在用戶點擊注冊之后才去進行用戶名的唯

    一性校驗,如果錯誤,則需要返回一個新的界面並且提示用戶名重復,即占用了又浪費了用戶流量。

 

    所以選擇AJAX——>AJAX,允許被瀏覽器和服務器通信而無需刷新當前頁面的技術都被叫做AJAX。


 


免責聲明!

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



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