{"id":3131,"date":"2017-07-07T06:00:54","date_gmt":"2017-07-06T23:00:54","guid":{"rendered":"https:\/\/huongdanjava.com\/?p=3131"},"modified":"2018-02-21T21:28:41","modified_gmt":"2018-02-21T14:28:41","slug":"hello-world-with-freemarker","status":"publish","type":"post","link":"https:\/\/huongdanjava.com\/hello-world-with-freemarker.html","title":{"rendered":"Hello World with FreeMarker"},"content":{"rendered":"<p>Apache FreeMarker is a template engine, a Java library for generating output based on available data input and templates. In this tutorial, I will guide you to a simple example with Apache FreeMarker to have a basic overview about it.<\/p>\n<p>First, I will create a Maven project as an example:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6895 size-full\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2017\/07\/hello-world-with-freemarker-1.png\" alt=\"Hello World with FreeMarker\" width=\"540\" height=\"444\" \/><\/p>\n<p>To use Apache FreeMarker, we need to add its dependency:<\/p>\n<pre class=\"lang:xhtml decode:true \">&lt;dependency&gt;\r\n    &lt;groupId&gt;org.freemarker&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;freemarker&lt;\/artifactId&gt;\r\n    &lt;version&gt;2.3.27-incubating&lt;\/version&gt;\r\n&lt;\/dependency&gt;<\/pre>\n<p>To work with Apache FreeMarker, as it is a template engine, the first thing we need is a template file. The contents of this file must be written using the FreeMarker Template Language (FTL) of Apache FreeMarker. We need to create a template file .ftl and define the placeholders in this file. The placeholder will be words starting with the $ character and then the property name enclosed by opening and closing curly brackets, such as ${name}.<\/p>\n<p>In this example, we will create a hello.ftl file located in the \/src\/main\/resources directory:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6896 size-full\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2017\/07\/hello-world-with-freemarker-2.png\" alt=\"Hello World with FreeMarker\" width=\"540\" height=\"478\" \/><\/p>\n<p>with the following content:<\/p>\n<pre class=\"lang:java decode:true\">Hello ${name}<\/pre>\n<p>During processing, Apache FreeMarker will replace the placeholder ${name} with the value of the name attribute that we passed.<\/p>\n<p>Now let&#8217;s create an application class to run the example.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6897 size-full\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2017\/07\/hello-world-with-freemarker-3.png\" alt=\"Hello World with FreeMarker\" width=\"540\" height=\"548\" \/><\/p>\n<p>The contents of the Application class are as follows:<\/p>\n<pre class=\"lang:java decode:true\">package com.huongdanjava.freemarker;\r\n\r\nimport java.io.StringWriter;\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\r\nimport freemarker.template.Configuration;\r\nimport freemarker.template.Template;\r\n\r\npublic class Application {\r\n\r\n\tpublic static void main(String[] args) {\r\n\t\tConfiguration configuration = new Configuration(Configuration.VERSION_2_3_27);\r\n\t\tconfiguration.setClassForTemplateLoading(Application.class, \"\/\");\r\n\r\n\t\ttry {\r\n\t\t\tTemplate template = configuration.getTemplate(\"hello.ftl\");\r\n\t\t\tStringWriter writer = new StringWriter();\r\n\t\t\tMap&lt;String, Object&gt; map = new HashMap&lt;String, Object&gt;();\r\n\t\t\tmap.put(\"name\", \"Khanh\");\r\n\r\n\t\t\ttemplate.process(map, writer);\r\n\r\n\t\t\tSystem.out.println(writer);\r\n\t\t} catch (Exception e) {\r\n\t\t\te.printStackTrace();\r\n\t\t}\r\n\t}\r\n\r\n}\r\n<\/pre>\n<p>In the above code, I created a new Apache FreeMarker Configuration object with version 2.3.27. This Configuration object is the central object containing the configuration of Apache FreeMarker in our application. We will point to the location that will load the .ftl template file using this Configuration object.<\/p>\n<p>To load the contents of the template file, we will use the Apache FreeMarker Template object. By using the process() method of the Template object with the input of a Map object containing key and value information, we can generate the output which we want.<\/p>\n<p>Result:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6898 size-full\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2017\/07\/hello-world-with-freemarker-4.png\" alt=\"Hello World with FreeMarker\" width=\"700\" height=\"553\" \/><\/p>\n<p>&nbsp;<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-right kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;right&quot;,&quot;id&quot;:&quot;3131&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;4&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;0\\\/5 - (0 votes)&quot;,&quot;size&quot;:&quot;24&quot;,&quot;title&quot;:&quot;Hello World with FreeMarker&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 0px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 19.2px;\">\n            <span class=\"kksr-muted\"><\/span>\n    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Apache FreeMarker is a template engine, a Java library for generating output based on available data input and templates. In this tutorial, I will guide you to a simple example with Apache FreeMarker to have a basic overview about it. First, I will create a&hellip; <a href=\"https:\/\/huongdanjava.com\/hello-world-with-freemarker.html\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":3137,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1234],"tags":[],"class_list":["post-3131","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-apache-freemarker-en","clearfix"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Hello World with FreeMarker - Huong Dan Java<\/title>\n<meta name=\"description\" content=\"In this tutorial, I will show to you all basic steps to work with FreeMarker.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/huongdanjava.com\/hello-world-with-freemarker.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hello World with FreeMarker - Huong Dan Java\" \/>\n<meta property=\"og:description\" content=\"In this tutorial, I will show to you all basic steps to work with FreeMarker.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/huongdanjava.com\/hello-world-with-freemarker.html\" \/>\n<meta property=\"og:site_name\" content=\"Huong Dan Java\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/nhkhanh2406\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/nhkhanh2406\" \/>\n<meta property=\"article:published_time\" content=\"2017-07-06T23:00:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-02-21T14:28:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2017\/07\/freemarker.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"321\" \/>\n\t<meta property=\"og:image:height\" content=\"247\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Khanh Nguyen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/KhanhNguyenJ\" \/>\n<meta name=\"twitter:site\" content=\"@KhanhNguyenJ\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Khanh Nguyen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/hello-world-with-freemarker.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/hello-world-with-freemarker.html\"},\"author\":{\"name\":\"Khanh Nguyen\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#\\\/schema\\\/person\\\/dc859d7f8cbea3b593e6738de9cbb82d\"},\"headline\":\"Hello World with FreeMarker\",\"datePublished\":\"2017-07-06T23:00:54+00:00\",\"dateModified\":\"2018-02-21T14:28:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/hello-world-with-freemarker.html\"},\"wordCount\":293,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#\\\/schema\\\/person\\\/dc859d7f8cbea3b593e6738de9cbb82d\"},\"image\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/hello-world-with-freemarker.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2017\\\/07\\\/freemarker.jpg\",\"articleSection\":[\"Apache FreeMarker\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/huongdanjava.com\\\/hello-world-with-freemarker.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/hello-world-with-freemarker.html\",\"url\":\"https:\\\/\\\/huongdanjava.com\\\/hello-world-with-freemarker.html\",\"name\":\"Hello World with FreeMarker - Huong Dan Java\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/hello-world-with-freemarker.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/hello-world-with-freemarker.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2017\\\/07\\\/freemarker.jpg\",\"datePublished\":\"2017-07-06T23:00:54+00:00\",\"dateModified\":\"2018-02-21T14:28:41+00:00\",\"description\":\"In this tutorial, I will show to you all basic steps to work with FreeMarker.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/hello-world-with-freemarker.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/huongdanjava.com\\\/hello-world-with-freemarker.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/hello-world-with-freemarker.html#primaryimage\",\"url\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2017\\\/07\\\/freemarker.jpg\",\"contentUrl\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2017\\\/07\\\/freemarker.jpg\",\"width\":321,\"height\":247},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/hello-world-with-freemarker.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/huongdanjava.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hello World with FreeMarker\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#website\",\"url\":\"https:\\\/\\\/huongdanjava.com\\\/\",\"name\":\"Huong Dan Java\",\"description\":\"Java development tutorials\",\"publisher\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#\\\/schema\\\/person\\\/dc859d7f8cbea3b593e6738de9cbb82d\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/huongdanjava.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#\\\/schema\\\/person\\\/dc859d7f8cbea3b593e6738de9cbb82d\",\"name\":\"Khanh Nguyen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg\",\"url\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg\",\"contentUrl\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg\",\"width\":1267,\"height\":1517,\"caption\":\"Khanh Nguyen\"},\"logo\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg\"},\"description\":\"I love Java and everything related to Java.\",\"sameAs\":[\"https:\\\/\\\/huongdanjava.com\",\"https:\\\/\\\/www.facebook.com\\\/nhkhanh2406\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/KhanhNguyenJ\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Hello World with FreeMarker - Huong Dan Java","description":"In this tutorial, I will show to you all basic steps to work with FreeMarker.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/huongdanjava.com\/hello-world-with-freemarker.html","og_locale":"en_US","og_type":"article","og_title":"Hello World with FreeMarker - Huong Dan Java","og_description":"In this tutorial, I will show to you all basic steps to work with FreeMarker.","og_url":"https:\/\/huongdanjava.com\/hello-world-with-freemarker.html","og_site_name":"Huong Dan Java","article_publisher":"https:\/\/www.facebook.com\/nhkhanh2406","article_author":"https:\/\/www.facebook.com\/nhkhanh2406","article_published_time":"2017-07-06T23:00:54+00:00","article_modified_time":"2018-02-21T14:28:41+00:00","og_image":[{"width":321,"height":247,"url":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2017\/07\/freemarker.jpg","type":"image\/jpeg"}],"author":"Khanh Nguyen","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/KhanhNguyenJ","twitter_site":"@KhanhNguyenJ","twitter_misc":{"Written by":"Khanh Nguyen","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/huongdanjava.com\/hello-world-with-freemarker.html#article","isPartOf":{"@id":"https:\/\/huongdanjava.com\/hello-world-with-freemarker.html"},"author":{"name":"Khanh Nguyen","@id":"https:\/\/huongdanjava.com\/#\/schema\/person\/dc859d7f8cbea3b593e6738de9cbb82d"},"headline":"Hello World with FreeMarker","datePublished":"2017-07-06T23:00:54+00:00","dateModified":"2018-02-21T14:28:41+00:00","mainEntityOfPage":{"@id":"https:\/\/huongdanjava.com\/hello-world-with-freemarker.html"},"wordCount":293,"commentCount":0,"publisher":{"@id":"https:\/\/huongdanjava.com\/#\/schema\/person\/dc859d7f8cbea3b593e6738de9cbb82d"},"image":{"@id":"https:\/\/huongdanjava.com\/hello-world-with-freemarker.html#primaryimage"},"thumbnailUrl":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2017\/07\/freemarker.jpg","articleSection":["Apache FreeMarker"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/huongdanjava.com\/hello-world-with-freemarker.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/huongdanjava.com\/hello-world-with-freemarker.html","url":"https:\/\/huongdanjava.com\/hello-world-with-freemarker.html","name":"Hello World with FreeMarker - Huong Dan Java","isPartOf":{"@id":"https:\/\/huongdanjava.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/huongdanjava.com\/hello-world-with-freemarker.html#primaryimage"},"image":{"@id":"https:\/\/huongdanjava.com\/hello-world-with-freemarker.html#primaryimage"},"thumbnailUrl":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2017\/07\/freemarker.jpg","datePublished":"2017-07-06T23:00:54+00:00","dateModified":"2018-02-21T14:28:41+00:00","description":"In this tutorial, I will show to you all basic steps to work with FreeMarker.","breadcrumb":{"@id":"https:\/\/huongdanjava.com\/hello-world-with-freemarker.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/huongdanjava.com\/hello-world-with-freemarker.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/huongdanjava.com\/hello-world-with-freemarker.html#primaryimage","url":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2017\/07\/freemarker.jpg","contentUrl":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2017\/07\/freemarker.jpg","width":321,"height":247},{"@type":"BreadcrumbList","@id":"https:\/\/huongdanjava.com\/hello-world-with-freemarker.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/huongdanjava.com\/"},{"@type":"ListItem","position":2,"name":"Hello World with FreeMarker"}]},{"@type":"WebSite","@id":"https:\/\/huongdanjava.com\/#website","url":"https:\/\/huongdanjava.com\/","name":"Huong Dan Java","description":"Java development tutorials","publisher":{"@id":"https:\/\/huongdanjava.com\/#\/schema\/person\/dc859d7f8cbea3b593e6738de9cbb82d"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/huongdanjava.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/huongdanjava.com\/#\/schema\/person\/dc859d7f8cbea3b593e6738de9cbb82d","name":"Khanh Nguyen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/07\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg","url":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/07\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg","contentUrl":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/07\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg","width":1267,"height":1517,"caption":"Khanh Nguyen"},"logo":{"@id":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/07\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg"},"description":"I love Java and everything related to Java.","sameAs":["https:\/\/huongdanjava.com","https:\/\/www.facebook.com\/nhkhanh2406","https:\/\/x.com\/https:\/\/twitter.com\/KhanhNguyenJ"]}]}},"_links":{"self":[{"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/posts\/3131","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/comments?post=3131"}],"version-history":[{"count":6,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/posts\/3131\/revisions"}],"predecessor-version":[{"id":6899,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/posts\/3131\/revisions\/6899"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/media\/3137"}],"wp:attachment":[{"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/media?parent=3131"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/categories?post=3131"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/tags?post=3131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}