在后台servlet中,若需要将json传至前台,可以将json字符串通过request的setAttribute方法进行传值,通过转发交接给JSP页面(其实,在tomcat等容器中,除了转换和编译阶段,servlet跟JSP区别也不是太大),测试代码如下:
1 request.setAttribute("jsonstr", respMessage); 2 request.getRequestDispatcher("/WEB-INF/jsp/showPhotos.jsp").forward(request, response);
然后,在JSP中需要将其读取出来,在JavaScript中,读取方法如下:
1 <script type="text/javascript"> 2 //{"currentUser":"zhang","success":"true","photoList":[{"id":"4545","createUser":"sere","modifyUser":"zhang","dr":"0"}]} 3 4 //上面的是我后台传过去的json,下面是JavaScript的解析方法 5 var jsonstr = '<%=request.getAttribute("jsonstr")%>'; 6 var obj = eval('(' + jsonstr + ')'); 7 //json中的属性 8 alert(obj.success); 9 10 //json中的list 11 alert(obj.photoList[0].id); 12 </script>
使用这个方法的话,需要注意:request是jsp中的内置对象,若js是单独文件,可能会出现取值为null的情况,可以在jsp中设置一个隐藏域,然后通过getElemetById之类的方法调用其中的value值