java中如何使用ajax判斷用戶名是否已注冊

1工育、在webContent 下的reg.jsp文件中引用js文件夾下的jquery和reg.js文件

<script src="js/jquery1.11.3.min.js"></script>
<script src="js/reg.js"></script>

2、在reg.jsp的body中添加表單

<form action="" method="post">
<pre>
用戶名:<input type='text' name='userName'><span id="s1"></span>
密碼:<input type='password' name='userPassword'>
確認密碼:<input type='password' name='repwd'>
<input type='submit' name='sub' value="注冊">
</pre>
</form>

3鹃愤、在reg.js中寫jquery和ajax

$(function(){
    $(":text[name='userName']").blur(function(){
        //1簇搅、獲得用戶名
        var userName=$(this).val();
        //2、通過異步傳輸對象將用戶名傳到服務器软吐,服務器查詢數(shù)據(jù)庫得到結(jié)果并返回
        $.get("CheckUnameServlet?userName="+userName,function(data){
            if(data=="1"){
                $("#s1").html("該用戶已注冊");
            }else{
                $("#s1").html("可以注冊");
            }
            
        })
    })
})

4瘩将、在CheckUnameServlet中寫服務器連接數(shù)據(jù)庫代碼,這個servlet放在src下的名為servlet的包下

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        //response.getWriter().append("Served at: ").append(request.getContextPath());
        //禁用緩存
        response.setHeader("Pragma", "No-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setDateHeader("Expires", 0);
        
        String userName = request.getParameter("userName");
        String sql="select * from 數(shù)據(jù)表名 where userName=?";
        List<Object> paramList=new ArrayList<Object>();
        paramList.add(userName);
        DbHelper dbHelper=new DbHelper();
        List<Map<String, Object>> list = dbHelper.executeQuery(sql, paramList);
        if(list!=null && list.size()>0) {
            response.getWriter().print("1");
        }else {
            response.getWriter().print("0");
        }
    }

5、其中引用了禁用緩存代碼

response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);

6凹耙、其中調(diào)用了自己寫的工具類:DbHelper.java姿现,放在JavaResources下的util包下

package util;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import javax.print.attribute.standard.RequestingUserName;

public class DbHelper {
    
    private Connection connection;
    
    private PreparedStatement preparedStatement;
    
    private ResultSet resultSet;
    
    public DbHelper()
    {
        getConnection();
    }
    //與數(shù)據(jù)庫連接
    public void getConnection()
    {
         try {          
              if(connection==null || connection.isClosed())
              {
                //獲取db.properties中的數(shù)據(jù)
                Properties properties=new Properties();
                
                InputStream iStream=this.getClass().getResourceAsStream("/db.properties");
                
                properties.load(iStream);
                
                String driver=properties.getProperty("driver");
                
                String url=properties.getProperty("url");
                
                String uname=properties.getProperty("uname");
                
                String pwd=properties.getProperty("pwd");
                  
                  
                Class.forName(driver);
             
                this.connection= DriverManager.getConnection(url, uname, pwd);
              }
            
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }        
         
    }   
    
    //實現(xiàn)增刪改操作
    public int executeUpdate(String sql,List<Object> paramList)
    {
         getConnection();   
         
         try {
            
             this.preparedStatement=connection.prepareStatement(sql);
            
             //如果在數(shù)據(jù)庫中查詢到對應信息,則返回更新
             if(paramList!=null)
             {
                  for(int i=0;i<paramList.size();i++)
                  {
                      this.preparedStatement.setObject(i+1, paramList.get(i));
                  }
             }
             
             return this.preparedStatement.executeUpdate();
             
             
            
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            close();
        }
         
        return 0;
    }
    
    //執(zhí)行查詢操作
    public List<Map<String, Object>> executeQuery(String sql,List<Object> paramList)
    {
         getConnection();
         
         try {
             this.preparedStatement=connection.prepareStatement(sql);
        
             if(paramList!=null)
             {
                  for(int i=0;i<paramList.size();i++)
                  {
                        this.preparedStatement.setObject(i+1, paramList.get(i));
                  }
             }
             
             this.resultSet= this.preparedStatement.executeQuery();
             
             List<Map<String, Object>> resultList=new ArrayList<Map<String,Object>>();

             ResultSetMetaData resultSetMetaData= this.resultSet.getMetaData();
             
             
             while(resultSet.next())
             {
                 Map<String, Object> map=new HashMap<String,Object>();
                 
                 for(int i=1;i<=resultSetMetaData.getColumnCount();i++)
                 {
                     
                       String columnname=  resultSetMetaData.getColumnName(i);
                      
                       Object columnvalue=resultSet.getObject(columnname);
                       
                       map.put(columnname, columnvalue);
                       
                 }
                 
                 resultList.add(map);
                 
             }
             
             return resultList;
            
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            close();
        }
         
        return null;
         
    }
    
    //執(zhí)行關閉操作
    public void close()
    {
         if(resultSet!=null)
            try {
                resultSet.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
         
         if(preparedStatement!=null)
            try {
                preparedStatement.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
         
         if(connection!=null)
            try {
                connection.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    }
    

}

7肖抱、其中使用了db.properties文件备典,文件放在src文件夾下

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/數(shù)據(jù)庫名?characterEncoding=utf-8
uname=數(shù)據(jù)庫用戶名
pwd=數(shù)據(jù)庫密碼
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市意述,隨后出現(xiàn)的幾起案子提佣,更是在濱河造成了極大的恐慌吮蛹,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拌屏,死亡現(xiàn)場離奇詭異匹涮,居然都是意外死亡,警方通過查閱死者的電腦和手機槐壳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喜每,“玉大人务唐,你說我怎么就攤上這事〈担” “怎么了枫笛?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長刚照。 經(jīng)常有香客問我刑巧,道長,這世上最難降的妖魔是什么无畔? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任啊楚,我火速辦了婚禮,結(jié)果婚禮上浑彰,老公的妹妹穿的比我還像新娘恭理。我一直安慰自己,他們只是感情好郭变,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布颜价。 她就那樣靜靜地躺著,像睡著了一般诉濒。 火紅的嫁衣襯著肌膚如雪周伦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天未荒,我揣著相機與錄音专挪,去河邊找鬼。 笑死片排,一個胖子當著我的面吹牛狈蚤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播划纽,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼脆侮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了勇劣?” 一聲冷哼從身側(cè)響起靖避,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤潭枣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后幻捏,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盆犁,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年篡九,在試婚紗的時候發(fā)現(xiàn)自己被綠了谐岁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡榛臼,死狀恐怖伊佃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沛善,我是刑警寧澤航揉,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站金刁,受9級特大地震影響帅涂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尤蛮,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一媳友、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧产捞,春花似錦庆锦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至尿扯,卻和暖如春求晶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背衷笋。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工芳杏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人辟宗。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓爵赵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親泊脐。 傳聞我的和親對象是個殘疾皇子空幻,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容