diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..f7c64b29 --- /dev/null +++ b/.gitignore @@ -0,0 +1,46 @@ +*~ +.gitignore~ +### Java ### +*.class + +# Package Files # +*.jar +*.war +*.ear + +### IntelliJ ### +*.iml +*.ipr +*.iws +.idea/ + +### Eclipse ### +*.pydevproject +.project +.metadata +bin/** +tmp/** +tmp/**/* +*.tmp +*.bak +*.swp +*~.nib +local.properties +.classpath +.settings/ +.loadpath + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# CDT-specific +.cproject + +# PDT-specific +.buildpath + +### Maven ### +target/ diff --git a/java-servlet-json/pom.xml b/java-servlet-json/pom.xml index dd7dc447..dc43d307 100644 --- a/java-servlet-json/pom.xml +++ b/java-servlet-json/pom.xml @@ -5,7 +5,7 @@ com.hmkcode java-servlet-json 1.0-SNAPSHOT - jar + war java-servlet-json http://maven.apache.org diff --git a/java-servlet-json/src/main/java/com/hmkcode/JSONServlet.java b/java-servlet-json/src/main/java/com/hmkcode/JSONServlet.java index afccf9b4..dd5e8199 100644 --- a/java-servlet-json/src/main/java/com/hmkcode/JSONServlet.java +++ b/java-servlet-json/src/main/java/com/hmkcode/JSONServlet.java @@ -1,17 +1,16 @@ package com.hmkcode; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.util.LinkedList; -import java.util.List; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.hmkcode.vo.Article; + import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.hmkcode.vo.Article; +import java.io.BufferedReader; +import java.io.IOException; +import java.util.LinkedList; +import java.util.List; public class JSONServlet extends HttpServlet { @@ -23,25 +22,28 @@ public class JSONServlet extends HttpServlet { /*************************************************** * URL: /jsonservlet * doPost(): receives JSON data, parse it, map it and send back as JSON + * doGet(): receives all JSON data, because after reloading page all + * data would clear ****************************************************/ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ // 1. get received JSON data from request - BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream())); - String json = ""; - if(br != null){ - json = br.readLine(); - } + StringBuffer json = new StringBuffer(); + String line = null; + BufferedReader br = new BufferedReader(request.getReader()); + while((line = br.readLine()) != null) { + json.append(line); + } // 2. initiate jackson mapper ObjectMapper mapper = new ObjectMapper(); // 3. Convert received JSON to Article - Article article = mapper.readValue(json, Article.class); + Article article = mapper.readValue(json.toString(), Article.class); // 4. Set response type to JSON - response.setContentType("application/json"); + response.setContentType("application/json; charset=utf-8"); // 5. Add article to List
articles.add(article); @@ -49,4 +51,11 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) // 6. Send List
as JSON to client mapper.writeValue(response.getOutputStream(), articles); } + + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException{ + ObjectMapper mapper = new ObjectMapper(); + response.setContentType("application/json; charset=utf-8"); + mapper.writeValue(response.getOutputStream(), articles); + } } diff --git a/java-servlet-json/src/main/webapp/index.html b/java-servlet-json/src/main/webapp/index.html index ab78943d..4a40503c 100644 --- a/java-servlet-json/src/main/webapp/index.html +++ b/java-servlet-json/src/main/webapp/index.html @@ -14,7 +14,7 @@ - +

Java Servlet Send & Receive JSON

diff --git a/java-servlet-json/src/main/webapp/js/myfunctions.js b/java-servlet-json/src/main/webapp/js/myfunctions.js index 0383f45c..1168ab63 100644 --- a/java-servlet-json/src/main/webapp/js/myfunctions.js +++ b/java-servlet-json/src/main/webapp/js/myfunctions.js @@ -1,50 +1,59 @@ function sendAjax() { - - // get inputs - var article = new Object(); - article.title = $('#title').val(); - article.url = $('#url').val(); - article.categories = $('#categories').val().split(";"); - article.tags = $('#tags').val().split(";"); - - $.ajax({ - url: "jsonservlet", - type: 'POST', - dataType: 'json', - data: JSON.stringify(article), - contentType: 'application/json', - mimeType: 'application/json', - - success: function (data) { - $("tr:has(td)").remove(); - - $.each(data, function (index, article) { - - var td_categories = $(""); - $.each(article.categories, function (i, tag) { - var span = $(""); - span.text(tag); - td_categories.append(span); - }); - - var td_tags = $(""); - $.each(article.tags, function (i, tag) { - var span = $(""); - span.text(tag); - td_tags.append(span); - }); - - $("#added-articles").append($('') - .append($('').html(""+article.title+"")) - .append(td_categories) - .append(td_tags) - ); - - - }); + + // get inputs + var article = new Object(); + article.title = $('#title').val(); + article.url = $('#url').val(); + article.categories = $('#categories').val().split(";"); + article.tags = $('#tags').val().split(";"); + + $.ajax({ + url: "jsonservlet", + type: 'POST', + dataType: 'json', + data: JSON.stringify(article), + contentType: 'application/json;charset=utf-8', + mimeType: 'application/json;charset=utf-8', + + success: function (data) { + drawArticles(data); }, - error:function(data,status,er) { - alert("error: "+data+" status: "+status+" er:"+er); - } - }); + error:function(data,status,er) { + alert("error: "+data+" status: "+status+" er:"+er); + } + }); +} + +function drawArticles(data) { + $("tr:has(td)").remove(); + + $.each(data, function (index, article) { + + var td_categories = $(""); + $.each(article.categories, function (i, tag) { + var span = $(""); + span.text(tag); + td_categories.append(span); + }); + + var td_tags = $(""); + $.each(article.tags, function (i, tag) { + var span = $(""); + span.text(tag); + td_tags.append(span); + }); + + $("#added-articles").append($('') + .append($('').html(""+article.title+"")) + .append(td_categories) + .append(td_tags) + ); + }); +} + +function getData() { + //get all articles after reload page + $.get("jsonservlet", function (data) { + drawArticles(data); + }); } \ No newline at end of file