什么情況下需要使用到異步請求?
不需要整個頁面的全部刷新,僅是需要頁面的局部數據刷新即可時(異步請求簡稱Ajax)
async:false //鎖定瀏覽器,使請求同步
同源策略?
何為同源:URL由協議、域名、端口和路徑組成,如果兩個URL協議、域名、端口相同便表示它們同源
跨域:反之,若協議、端口、域名有任何一個的不同,便為跨域
瀏覽器采用同源策略,禁止頁面加載或執行與自身來源不同的域的任何腳本(包含src屬性的標簽可以加載跨域資源)
dataType:"jsonp"//使用該數據即可輕松實現跨域訪問,type不論為何種請求都是get請求
AJAX和普通HTTP請求的區別:
1.AJAX就是瀏覽器使用XMLHTTPRequest對象發出的HTTP請求
2.AJAX請求受到瀏覽器的同源策略限制,存在跨域問題
3.AJAX發送復雜請求(get,post為簡單請求)時,瀏覽器會預先發出OPTIONS請求預檢
4.AJAX請求頭會多出一個x-requested-with參數,值為XMLHttpRequest
5.AJAX請求不能在控制器中進行跳轉(轉發/重定向)
原生的JS實現異步請求:
jq發送異步請求也是封裝了原生的JS代碼實現發送(四個步驟)
1.創建XMLHttpRequest對象 var xmlHttp=new XMLHttpRequest(); 2.調用open方法獲取跟服務器的連接 xmlHttp.open("GET","emp/ASDFSADFS?name=smith,ture"); 三個參數分別為:請求方式,請求路徑(可傳屬性值),ture為異步 3.調用send方法向服務器發出請求 xmlHttp.send(null); //get請求參數為null,post請求可在方法中帶請求參數 4.注冊一個監聽器//不斷去監聽請求的過程返回的一個狀態碼 xmlHttp.onreadystatechange=function(){ if(xmlHttp.readyState==4&&xmlHttp.status==200){ //表示響應完畢,xmlHttp.responseText獲取服務器的響應內容(文本) cbFun(xmlHttp.responseText); } }; function cbFun(data){//回調函數 alert(data);//彈窗顯示內容 }
防盜鏈:
req.getHeader("referer");(獲取來訪者地址)
contains:進行地址判斷
索引的概念:
是提高查詢速度的一種手段(一百多種)
創建索引基本語法:
CREATE INDEX 索引名 ON 數據表(字段名);
使用索引:TABLE ACCESS FULL表示在查詢數據的時候使用的是全表掃描的模式
創建了索引查詢的時候就在索引范圍內掃描從而提高查詢效率(INDEX)
刪除索引:DROP INDEX 索引名
復合索引:一個索引在多個字段上創建,作用於多個字段
注意:當使用復合索引的時候如果只要其中一個字段作為判斷條件,那么必須使用第一個字段(創建索引時的字段順序)
索引才會生效,這就是索引的最左原則(若復合索引的字段都使用到了,且是AND連接條件,字段順序不影響索引掃描oracle
mysql則需要和復合索引的字段順序保持一致)
使用復合索引的時候如果放到OR查詢中會導致索引失效,需要使用UNION ALL代替OR查詢