Javascript處理返回的JSON數據
在JSP頁面經常要從數據庫中讀取數據。有時候在頁面中也要一些特效處理。如運用Ajax技術。下面這個例子是在javascript中用ajax技術實現Json數據的無刷新加載。
一:導入Json要用到的jar包
commons-beanutils-1.8.0.jar、commons-collections-3.2.1.jar、 commons-lang-2.5.jar、commons-logging-1.1.1.jar、ezmorph-1.0.6.jar、json- lib-2.4-jdk15.jar共6個jar包。
二:具體的代碼編寫
實體類:User
package entity; public class User { private String userId; private String userName; private int age; public User() { } public User(String userId, String userName, int age) { this.userId = userId; this.userName = userName; this.age = age; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
JSP頁面:jsonTest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSON測試</title> <script type="text/javascript"> function create(){ if(window.XMLHttpRequest){ xmlHttp=new XMLHttpRequest(); }else if(window.ActiveXObject){ xmlHttp=new ActiveXObject("Microsoft.XMLHTTP") } } function run(){ var url = "JsonServlet?date="+new Date(); create(); xmlHttp.open("POST",url,true); xmlHttp.onreadystatechange=callback; xmlHttp.send(); } function callback(){ if(xmlHttp.readyState==4){ if(xmlHttp.status==200){ var xmlDoc=xmlHttp.responseText; var data=eval(xmlDoc); var json = ""; for(var i=0;i<data.length;i++){ json +=data[i].userId+":"+data[i].userName+","+data[i].age+"<br>"; } document.getElementById("content").innerHTML=json; } else{ alert("AJAX服務器返回錯誤!"); } } } </script> </head> <body> <input type="button" value="顯示數據" onclick="run()"> <div id="content"></div> </body> </html>
servlet:JsonServlet類
package servlet; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONArray; import entity.User; /** * Servlet implementation class JsonServlet */ public class JsonServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public JsonServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=UTF-8"); List<User> users = new ArrayList<User>(); users.add(new User("1", "李峰", 18)); users.add(new User("2", "王偉", 18)); users.add(new User("3", "張力", 20)); //轉成json對象 JSONArray jsonArray = JSONArray.fromObject(users); response.getWriter().write(jsonArray.toString()); } }到此,javascript用ajax處理json數據的例子就完成了。ajax的代碼是采用比較原始的方法。可以用一些ajax框架改進,減少代碼量。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!