In the previous chapters we have completed everything from defining all ExtJs object and Java objects needed for the application except for our final step, create the servlet.
Tip: Make sure you download the json-lib-2.4-jdk15.jar in addition to your JDBC jar for this project. The jsob-lib helps in creating and parsing JSON objects.
Step 12: Define the Servlet - ItemMaintenance.java
package com.as400samplecode; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.util.ArrayList; 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 net.sf.json.JSONObject; import net.sf.json.JSONSerializer; import com.as400samplecode.util.Item; import com.as400samplecode.util.ItemInformation; public class ItemMaintenance extends HttpServlet { private static final long serialVersionUID = 1L; public ItemMaintenance() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //get the company from the request String company = request.getParameter("company"); //get out Grid paging toolbar parameters String start = request.getParameter("start"); String limit = request.getParameter("limit"); //printwriter to send the JSON response back PrintWriter out = response.getWriter(); //set content type response.setContentType("text/html"); //create a new JSON array to send the list of items JSONArray arrayObj=new JSONArray(); //get arraylist of items based on the request ItemInformation itemInformation = new ItemInformation(company); ArrayList<Item> itemList = itemInformation.getItems(start,limit); //loop thru the array list to populate the JSON array for(int i=0;i<itemList.size();i++){ //get item Object Item item = itemList.get(i); //this creates a JSON object from bean object JSONObject itemObj = JSONObject.fromObject(item); //add to array list arrayObj.add(itemObj); } //Create a JSON object to wrap your JSOn array and provide the root element items JSONObject myObj = new JSONObject(); //sets success to true myObj.put("success", true); //set the JSON root to items myObj.put("items", arrayObj); //set the total number of Items myObj.put("totalCount", itemInformation.getTotalCount()); //convert the JSON object to string and send the response back out.println(myObj.toString()); out.close(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //get the company from the request String company = request.getParameter("company"); //the addData has item information during add otherwise null String addData = request.getParameter("addData"); boolean add = false; //get payload from request body String payLoad = getBody(request); //in case of a ADD use the addData information instead of payLoad if(addData != null){ add = true; payLoad = addData; } System.out.println("Payload:" + payLoad); ArrayList<Item> itemList = new ArrayList<Item>(); //If the payload is not a single JSON object then parse the array //and create the the item arraylist if(payLoad.startsWith("[")){ JSONArray arrayObj = JSONArray.fromObject(payLoad); for (int i = 0; i < arrayObj.size(); ++i) { JSONObject itemObj = arrayObj.getJSONObject(i); //parse JSON populate the Item bean Item item = (Item) JSONObject.toBean(itemObj, Item.class); itemList.add(item); } } //parse the single JSON object and put that in the item arraylist else { JSONObject itemObj = (JSONObject) JSONSerializer.toJSON(payLoad); //parse JSON populate the Item bean Item item = (Item) JSONObject.toBean(itemObj, Item.class); itemList.add(item); } ItemInformation itemInformation = new ItemInformation(company); boolean success = false; if(add){ //add the item information success = itemInformation.addItems(itemList); } else { //update the item information success = itemInformation.updateItems(itemList); } PrintWriter out = response.getWriter(); response.setContentType("text/html"); //send response whether the request to add or update was successful JSONObject myObj = new JSONObject(); myObj.put("success", success); out.println(myObj.toString()); out.close(); } //Get JSON payLoad from the request body private String getBody(HttpServletRequest request) throws IOException{ String body = null; StringBuilder stringBuilder = new StringBuilder(); BufferedReader bufferedReader = null; try { InputStream inputStream = request.getInputStream(); if (inputStream != null) { bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); char[] charBuffer = new char[128]; int bytesRead = -1; while ((bytesRead = bufferedReader.read(charBuffer)) > 0) { stringBuilder.append(charBuffer, 0, bytesRead); } } else { stringBuilder.append(""); } } catch (IOException ex) { throw ex; } finally { if (bufferedReader != null) { try { bufferedReader.close(); } catch (IOException ex) { throw ex; } } } body = stringBuilder.toString(); return body; } }
Click here for next Chapter
No comments:
Post a Comment
NO JUNK, Please try to keep this clean and related to the topic at hand.
Comments are for users to ask questions, collaborate or improve on existing.