本文收集了在 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;
}