samwellwang

samwellwang

coder
twitter

JSP 常見問題

本文收集了在 MVC 開發過程中 JSP 開發遇到的一些常見問題

2019-11-21

本文收集了在 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; 
}
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。