在同步請求中使用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表達式少有的不帶引號的情況,其他不帶引號的情況,目前還沒見過,歡迎來補充。
最后說一點,我們作為程序員,研究問題還是要仔細深入一點的。當你對原理了解的有夠透徹,開發起來也就得心應手了,很多開發中的問題和疑惑也就迎刃而解了,而且在面對其他問題的時候也可做到觸類旁通。當然在開發中沒有太多的時間讓你去研究原理,開發中要以實現功能為前提,可等項目上線的后,你有大把的時間或者空余的時間,你大可去刨根問底,深入的去研究一項技術,為覺得這對一名程序員的成長是很重要的事情。