標籤:預設值 伺服器 請求轉寄 .text 擷取 編寫 對象 就會 java代碼
form表單中所有按鈕預設會被當做提交按鈕,所以不要在form表單中用多個按鈕,可以用按鈕外觀的a標籤來替換除提交按鈕之外的其他按鈕(bootstrap中只需要加上class="btn"就可以獲得按鈕外觀)。
jquery對象和DOM對象是不同的,使用方法時必須注意區分調用方法的對象是何種類型,比如 $("#p1").html("123");document.getElementById("p1").innerHTML="123";前者是jquery方法,後者是DOM方法。
jquery中使用val(),原生js用value,還有類似比如text()和textContent等。jquery對象是對DOM對象進行封裝後的對象。通過使用get(索引值)或者[索引值]的方式可以把jquery對象轉換為DOM對象,$()包裹dom對象就能得到jquery對象
比如$("#p1")[0].innerHTML="123"或者$("#p1").get(0).innerHTML="123"都是可行的。
文字框、密碼框、文本域輸入值擷取用textContent或者jquery的val()方法,span標籤中的文本值jquery的text()方法。
獲得下拉式清單的選中項可以直接用jquery的val()方法,比如#("#select123").val(),如果value中傳遞了參數,表示設定預設選中值。
例如有如下下拉式清單:
<select id="sel1">
<option value="亞洲" selected>亞洲</option>
<option value="歐洲">歐洲</option>
<option value="非洲">非洲</option>
</select>
$("#sel1").val()得到的結果是:亞洲,因為上面的下拉式清單設定預設選中值是亞洲。而如果$("#sel1").val("歐洲")表示讓下拉式清單中value為"歐洲"的option被選中,這一點常用在修改介面顯示使用者修改前的舊資訊。
通過給輸入文字框和文本網域設定設定value="XXXX"可以直接設定預設值,而不用通過js代碼來設定,配合el運算式使用非常方便,尤其是在修改功能中,比如修改前在請求中設定一個屬性,值為要修改的對象。
如果想要通過在請求中設定屬性的方式將參數傳遞給下一個頁面,那麼必須用請求轉寄的方式,而決不能用重新導向,因為重新導向會丟失請求,用戶端第一次請求到達伺服器,伺服器返回一個重新導向的地址,用戶端再次發送第二次請求,之前設定的屬性已經被丟失了。
例如 request.setAttribute(user),然後在需要顯示並修改電話輸入框可以直接寫成 電話:<input value="${user.tel}"/>
select.options可以直接擷取到下拉式清單的option數組,這是原生js方法。
jsp頁面的js中可以直接使用el運算式來擷取jsp中的變數值,但僅限於jsp頁面,比如session中有個name屬性,js代碼中可以寫為:var name="${name}",注意要加引號!
當然也可以在頁面中用隱藏的方式儲存我們需要的資訊,再利用選取器擷取我們想要的內容。例如:session中有userName屬性,我們可以將其放在span標籤中然後在頁面隱藏,js代碼中擷取對應span標籤的文本就可以取得想要的值
<span id="userName" style="display:none">${userName}</span> -----------------js中$("#userName").text()就可以擷取到值
與session預設支援存放對象不同,cookie預設存放字串,如果要存放對象,則需要進行序列化傳送和還原序列化解析。cookie預設不支援中文,也不支援逗號空格底線等特殊字元,
假如cookie中屬性值為中文,那麼需要進行編碼和解碼。比如:
設定cookie中文屬性值:String name="張三";int id=1;Cookie cookie=new Cookie("name_id",URLEncoder.encode(name+","+id,"utf-8"));
擷取cookie中文屬性值:String name=URLDecoder.decode(cookie.getValue(),"UTF-8"),然後按照拼接時候的特點拆分字串
當自己編寫了一個方法根據傳過來的請求擷取其中的參數值並自動裝配成bean時,如果請求中包含的屬性在對應實體類中找不到該屬性,那麼就會拋出異常,然後擷取枚舉對象是根據表單中元素的name屬性
來獲得的,所以只要不給不需要的表單元素設定name屬性,就可以避免異常。比如"確認密碼"這一input元素就不需要設定name,只給輸入密碼的input設定name,並且名稱和實體類對應屬性保持一致就行。
word-wrap:break-word;word-break:break-all;在style中加入這兩句話可以解決div內文字超div邊界問題,讓文字自動換行
js的方法中預設情況下中文參數是無法解析的,除了進行編碼和解碼外。還可以通過加引號的方式,需要注意的是,在ajax中拼接a標籤指向某個js方法時,如果參數是中文,那麼就需要將中文參數用引號包起來,這時候會出現三重引號,第三重必須用轉義引號。
例如在ajax中,$.post("/user/findById","id=1",function(user){
//ajax中獲得了後台返回的user對象,包含了屬性id和姓名userName(值為中文)
var str="<a href=‘javascript:show("+user.id+",\""+user.userName+"\"‘)>查看</a>"
....後續操作
},"jason")
function show(id,name){
alert(id+" "+name)
}
servlet中文亂碼處理
如果是post
設定req.setCharacterEncoding("utf-8");
如果是get,不去修改伺服器配置的情況下
new String(name.getBytes("iso-8859-1"),"utf-8")
a標籤進行頁面跳轉時,如果路徑中拼接了中文參數,那麼即使過濾器中設定了response.setCharacterEncoding("utf-8") 也會出現亂碼,因為這種設定針對的是post方式,而a標籤是get方式,比如路徑
http://localhost:8080/jobProject/index.jsp?name=張三,張三會亂碼,如果是jsp頁面,可以在指令碼中利用java代碼進行轉換,如,String name=new String(request.getParameter("iso8859-1"),"utf-8")。
如果不是jsp頁面,那麼需要編碼和解碼
資料庫亂碼
jdbc:mysql://127.0.0.1:3306?useUnicode=true&characterEncoding=UTF-8
web項目一些小知識