From 0337beb7109324711b07aea1102d15fd3ec96d80 Mon Sep 17 00:00:00 2001 From: Logarifm Date: Sun, 17 Aug 2014 20:15:07 +0300 Subject: [PATCH] Texts from another language(Japanese, Ukrainian and many other) had displayed wrong. This is commit fixs this problems with charset. Added new servlet method get and new javascript function getData(), which rebuid list of articles after reloading page --- .gitignore | 46 ++++++++ java-servlet-json/pom.xml | 2 +- .../main/java/com/hmkcode/JSONServlet.java | 39 ++++--- java-servlet-json/src/main/webapp/index.html | 2 +- .../src/main/webapp/js/myfunctions.js | 103 ++++++++++-------- 5 files changed, 128 insertions(+), 64 deletions(-) create mode 100644 .gitignore 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