本文收集了在 MVC 開發過程中 JSP 開發遇到的一些常見問題
本文收集了在 MVC 開發過程中 JSP 開發遇到的一些常見問題
變數聲明#
必須先聲明,後使用,不允許使用未經過聲明的變數;
正確
var myVar = 3
~ 錯誤~
myVar = 3 //IE8及以下會保存,高級瀏覽器會產生全局變數,影響邏輯
JSON#
JSON 是什麼#
JSON (JavaScript Object Notation) 即 JavaScript 對象表示法。
JSON 是存儲和交換文本信息的語法。類似 XML。
JSON 比 XML 更小、更快,更易解析。
JSON 結構是什麼?#
JSON 簡單說就是 javascript 中的對象和數組,通過這兩種結構可以表示各種複雜的結構;
對象:對象在 js 中表示為 “{}” 括起來的內容,數據結構為 {key:value,key:value,…} 的鍵值對的結構。
數組:數組在 js 中是中括號 “[]” 括起來的內容,數據結構為 [“java”,”javascript”,”vb”,…]。
經過對象、數組 2 種結構就可以組合成複雜的數據結構了。
PS:這個網站可以處理 JSON 的常見問題,校驗,格式化、去轉義等等
SoJSON
前台如何操作 JSON?#
JSON 對象 -> JSON 字符串(比如:發起請求前,將 JS 對象轉換為可傳輸的字符串時)
JSON字符串->JSON對象(比如:接收服務器返回值,準備在瀏覽器端解析時)
``` jObj = JSON.parse(jStr);
後台如何操作 JSON?#
包依賴:org.json.JSONArray、org.json.JSONObject 直接構造 JSON 對象
JSONArray jArr = new JSONArray(); // 簡單的JSON數組
jArr.put(“小明”);
jArr.put(“小強”);
JSONObject jObj = new JSONObject();// 簡單的JSON對象
jObj.put(“age”, 12);
jObj.put(“xb”, “男”);
jObj.put(“xb”, jArr); // 嵌套使用
JSON串->JSON對象
JSONArray jArr = new JSONArray(jArrStr);
JSONObject jObj = new JSONObject(jObjStr);
JSON對象->JSON串
String jArrStr = jArr.toString();
String jObjStr= jArr.toString();
同步方法和異步方法#
同步方法#
同步方法是方法執行完成後才返回,然後執行下面的方法。
異步方法#
異步方法立即返回,然後執行下面的方法,與該方法執行完成所需的時間無關,通過回調函數可以知道該方法是否執行完成。
![][img-1]
示例#
正確方式
function SaveGrid() { //其中saveData為異步方法
saveData("demo.do?method=addRowData", synchFillGrid);
}
function synchFillGrid() {
synchFillData("demo.do?method=refreshMyTags", "grid:vdsdw");
}
錯誤使用方式 1:想傳入一個回調函數,但調用了它
function SaveGrid() { //其中saveData為異步方法
saveData("demo.do?method=addRowData",synchFillGrid());
}
錯誤使用方式 2:沒有在異步方法的回調函數中做後續操作;
function SaveGrid() { //其中saveData為異步方法
saveData("demo.do?method=addRowData");//執行asynchFillData時,saveData方法還未執行完呢!
asynchFillData("demo.do?method=refreshMyTags", "grid:vdsdw");
}
錯誤使用方式 3:按照調用同步 JS 調用的方式,接收返回值;
function SaveGrid() { // 異步方法的返回值,不能用同步方式接收
var result = AjaxUtil. asynchAjaxRequest("demo.do?method=addRowData");
if(!AjaxUtil.checkException(result)){
AjaxUtil.showException(result); return false
}
}
如何在框架中用展示圖片#
JSP
<%@ page contentType="text/html;charset=GBK"language="java"%>
<%@ taglib uri="darewayBS.tld" prefix="dw"%>
<%@ page
import="com.dareway.framework.util.StringUtil" %>
<%
String uuid = (String)StringUtil.getUUID();
%>
<dw:body>
<dw:diy>
<img id="img<%=uuid%>"/>
</dw:diy>
</dw:body><script type="text/javascript" defer="defer"> getImg();
</script><script type="text/javascript">
function getImg(){
$("#img<%=uuid%>")[0].src = GlobalNames.compileUR("demo.do?method=getImg");
}</script>
Controller
public ModelAndView getImg(HttpServletRequest request, HttpServletResponse response, DataObject para) throws Exception {
byte[] bytes = null;
FileInputStream fis = null;
ByteArrayOutputStream baos = null;
try { // 1. 獲取圖片的字節流數組(此處例子為直接讀取的文件;實際可從數據庫或其它方式獲取;)
fis = new FileInputStream("F:/威海結算章.png");
baos = new ByteArrayOutputStream();
int i = 0;
byte[] buffer = new byte[2048];
while ((i = fis.read(buffer)) != -1) {
baos.write(buffer, 0, i);
}
baos.flush();
bytes = baos.toByteArray();
// 寫圖片回瀏覽器
response.setContentType("image/png");
response.getOutputStream().write(bytes);
} catch (Exception e) {
e.printStackTrace();
} finally {
if(fis != null){
fis.close();
}
if(baos != null){
baos.close();
}
}
return null;
}