JSON(五)——同步请求中使用JSON格式字符串进行交互(不太常见的用法)

时间:2023-12-15 20:19:14

  在同步请求中使用JSON格式进行数据交互的场景并不多,同步请求是浏览器直接与服务器进行数据交互的大多是用jsp的标签jstl和el表达式对请求中的数据进行数据的渲染。我也是在一次开发中要从其它服务器提供的接口中调取json格式的字符串数据然后把数据渲染到本服务器的jsp页面中发现这种做法的。

  当然对于从其他服务器中取得的json格式字符串数据你也可以使用异步请求的方式直接把数据返回,在前端使用js对数据进行渲染,还有就是使用json-lib或者jackson把json格式的字符串转换成javaBean然后使用jsp的标签jstl和el表达式画页面,这种方法也很常见(不过比较麻烦,你要准备javaBean,还要对数据进行解析)。

  下面介绍一种不太常见的做法,同步请求中使用JSON格式字符串进行前后端数据直接交互。

  index.jsp页面代码。

<body style="background-color: #90EE90;">
<input type="button" value="测试按钮1" onclick="sendSyn();"/>
</body>
<script type="text/javascript">
function sendSyn(){
window.location.href = "<%=basePath%>/manage/test/syn";
}
}
</script>

java代码

@RequestMapping("/syn")
public void testSyn(HttpServletRequest request, HttpServletResponse response){
try {
       //这里模拟从其他服务器接口中取到的json格式字符串
String jsonstr = "{\"name\" : \"张三\"}";
request.setAttribute("jsonstr", jsonstr);
request.getRequestDispatcher("/temp.jsp").forward(request, response);
} catch (ServletException | IOException e) {
e.printStackTrace();
} }

temp.jsp页面代码

<script type="text/javascript">
var jsonstr = ${jsonstr};
alert(jsonstr.name);
</script>

注意这里

var jsonstr = ${jsonstr};

不可以这样如下写:

var jsonstr = "${jsonstr}";因为json中带有双引号,会引起语法冲突。

另外这也是在<script></script>使用el表达式少有的不带引号的情况,其他不带引号的情况,目前还没见过,欢迎来补充。

  最后说一点,我们作为程序员,研究问题还是要仔细深入一点的。当你对原理了解的有够透彻,开发起来也就得心应手了,很多开发中的问题和疑惑也就迎刃而解了,而且在面对其他问题的时候也可做到触类旁通。当然在开发中没有太多的时间让你去研究原理,开发中要以实现功能为前提,可等项目上线的后,你有大把的时间或者空余的时间,你大可去刨根问底,深入的去研究一项技术,为觉得这对一名程序员的成长是很重要的事情。