{"id":3523,"date":"2020-06-03T18:37:42","date_gmt":"2020-06-03T13:07:42","guid":{"rendered":"https:\/\/www.h2kinfosys.com\/blog\/?p=3523"},"modified":"2025-07-03T06:48:54","modified_gmt":"2025-07-03T10:48:54","slug":"expression-language","status":"publish","type":"post","link":"https:\/\/www.h2kinfosys.com\/blog\/expression-language\/","title":{"rendered":"Expression Language"},"content":{"rendered":"\n<p>Expression Language is used to access the data. IT helps easily access the application data stored objects like Java Beans, request, session, and application, etc. The JSP EL allows software developers to access objects from code using a simple syntax.<\/p>\n\n\n\n<p>Expression Language was introduced in JSP version 2.0. Before this feature developers used only Scriptlets, Expressions. Also, thy used the custom tag to include the server information in the JSP page.<\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<ul class=\"wp-block-list\"><li>EL helps to integrate the server-side(controller) with the presentation(view) layer.<\/li><li>EL expressions are not limited to the JSTL action attributes. It can be used in any action attribute that accepts a runtime expression.<\/li><li>You can use EL expressions in the static text and can directly use in the template text outside of actions<\/li><li>EL expressions are usually between the delimiters ${ and }<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>The Syntax of Expression Language&nbsp;<\/strong><\/h4>\n\n\n\n<p>By default, in JSP pages the scripting elements are enabled, but EL <a href=\"https:\/\/docs.oracle.com\/javase\/tutorial\/java\/nutsandbolts\/expressions.html\" rel=\"nofollow noopener\" target=\"_blank\">statements and expressions<\/a> are disabled. If you want to enable the EL expressions you need to use the page directive, mentioned below:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;%@ page isELIgnored=\"false\"%><\/code><\/pre>\n<\/div><\/div>\n\n\n\n<p>The EL Syntax looks like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>${expression}<\/code><\/pre>\n\n\n\n<p>In JSP, everything included in the braces is evaluated at runtime and the results are sent to the output stream. EL expressions can be mixed with a static text and combined with other expressions. Sometimes you can build really complicated expressions.<\/p>\n\n\n\n<p>To understand expression in a JSP better, let&#8217;s look at the example below. We will use to add two numbers:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;%@ page language=<em>\"java\"<\/em> contentType=<em>\"text\/html; charset=ISO-8859-1\"<\/em>\n&nbsp;&nbsp;&nbsp;&nbsp;pageEncoding=<em>\"ISO-8859-1\"<\/em> %&gt;\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n&lt;title&gt;EL example&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n1 + 2 = ${1+2}\n&lt;\/body&gt;\n&lt;\/html&gt;<\/pre>\n\n\n\n<p><strong><em>The output will be:<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1 + 2 = 3<\/code><\/pre>\n\n\n\n<p>We can use <strong><a href=\"https:\/\/www.h2kinfosys.com\/blog\/jsp-implicit-objects\/\">Implicit Objects<\/a><\/strong> in Expression Language. Developers can use them to get parameter values and attributes from different scopes. It is important to mention that EL Implicit Objects are different from JSP Implicit Objects.<\/p>\n\n\n\n<p>The pageScope implicit object has type Map and maps attribute names with the values from the page scope.<\/p>\n\n\n\n<p>The requestScope has also type Map. It maps attribute names with the value in the request scope.<\/p>\n\n\n\n<p>The sessionScope has type Map and maps names of attributes with values from the session scope.<\/p>\n\n\n\n<p>Implicit object applicationScope is a Map, contains attribute names and values from the application scope.<\/p>\n\n\n\n<p>The param Implicit object has type Map and contains the request parameters with names and values with one-to-one relationships.<\/p>\n\n\n\n<p>The Map paramValues is an implicit object that maps the request parameter to an array of values.<\/p>\n\n\n\n<p>The header implicit object Map contains the request header name with its single value. The headerValues implicit object Map contains the request header name with an array of values.<\/p>\n\n\n\n<p>The cookie Map contains the cookie name and the cookie value.<\/p>\n\n\n\n<p>Implicit object initParam is a Map that contains the initialization parameters.<\/p>\n\n\n\n<p>The pageContext simplicity object provides access to many objects, such as to requests, sessions, etc.<\/p>\n\n\n\n<p>From JSP 2.1 there are two expression language resolvers for expressions handling that reference ImplicitObjectELResolver and ScopedAttributeELResolver objects.<\/p>\n\n\n\n<p>ImplicitObjectResolver evaluate variables that match one of the implicit objects. After finding an implicit object, the MapELResolver instance resolves the attributes for it.<\/p>\n\n\n\n<p><strong><em>For example:  <\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>${sessionScope.profile}<\/code><\/pre>\n\n\n\n<p>ScopedAttributeELResolver will resolve sessionScope, MapELResolver will resolve profile attribute.<\/p>\n\n\n\n<p>&nbsp;Expression Language has many reserved words: lt, le, get, get, eq, ne, true, false, and, or, not, instanceof, div, mod, empty, null. These words cannot be used then as an identifier for your variables. Some of these words from the list are not used in the language for now but they may be used there in the future.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Operators of JSP EL<\/strong><\/h2>\n\n\n\n<p>The operators of&nbsp; the JSP expression language used in rvalue expressions :<\/p>\n\n\n\n<p>Arithmetic operators: +, &#8211; (binary), *, \/ and div, % and mod, &#8211; (unary)<\/p>\n\n\n\n<p>Logical operators: and, &amp;&amp;, or, ||, not, !<\/p>\n\n\n\n<p>Relational operators: ==, eq, !=, ne, &lt;, lt, &gt;, gt, &lt;=, ge, &gt;=, le.<\/p>\n\n\n\n<p>The empty operator is a prefix operation that is used to determine whether a value is null or empty.<\/p>\n\n\n\n<p>Conditional operation: Looks like this: A ? B : C. Evaluates B or C, depending on the result of the evaluation of A.&nbsp;<\/p>\n\n\n\n<p><strong>The priority of operators from highest to lowest, from left to right is as follows:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>[]&nbsp;<\/li><li>() (used to change the precedence of operators)<\/li><li>&nbsp;(unary) not ! empty<\/li><li>&nbsp;* \/ div % mod<\/li><li>&nbsp;+ &#8211; (binary)<\/li><li>&nbsp;&lt; &gt; &lt;= &gt;= lt gt le ge<\/li><li>== != eq ne<\/li><li>&amp;&amp; and<\/li><li>|| or<\/li><li>? :<\/li><\/ol>\n\n\n\n<p>Let&#8217;s look at some EL expressions and the results:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">${999.0 == 999} - true\n${(6*6) ne 36}&nbsp; - false\n${'a' &lt; 'z'} - true\n${1 div 4} - 0.25\n${10 mod 4} - 2\n${pageContext.request.contextPath} - gets context path\n${header[\"host\"]} - returns value of a header host\n${users[userName]} - returns the value of the entry named userName in the users map.<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Functions<\/strong><\/h2>\n\n\n\n<p>The <a href=\"https:\/\/www.h2kinfosys.com\/blog\/what-are-j2ee-concepts\/\">JSP expression language<\/a> gives a possibility to define a function that you can invoke in an expression. The mechanism to define functions is the same as for custom tags.<\/p>\n\n\n\n<p>Functions refer to static methods and return value. They are identified statically at translation time.<\/p>\n\n\n\n<p>Function parameters and invocations are specified as part of an EL expression.<\/p>\n\n\n\n<p>Functions can be used in a static text and tag attribute values. If you want to use a function in a JSP, you need to add the taglib directive to import the tag library containing the function. You also need to preface the function invocation with the prefix from the directive.<\/p>\n\n\n\n<p>Let&#8217;s define a function. For this, we need to develop it as a public static method in a public class. <\/p>\n\n\n\n<p><strong><em>Here is an example:<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em>package test;<\/em>\n<em>public class Utils {<\/em>\n<em>&nbsp;&nbsp;&nbsp;&nbsp;...<\/em>\n<em>&nbsp;&nbsp;&nbsp;&nbsp;public static boolean compare( String l1, String l2 ) {<\/em>\n<em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return l1.equals(l2);<\/em>\n<em>&nbsp;&nbsp;&nbsp;&nbsp;}<\/em>\n<em>}<\/em>\nThen you have to add mapping for the function name as used in the EL expression to the defining class and function signature in a TLD file. Here is utils.tld file for our example:\n<em>&lt;function&gt;<\/em>\n<em>&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;compare&lt;\/name&gt;<\/em>\n<em>&nbsp;&nbsp;&nbsp;&nbsp;&lt;function-class&gt;test.Utils&lt;\/function-class&gt;<\/em>\n<em>&nbsp;&nbsp;&nbsp;&nbsp;&lt;function-signature&gt;boolean compare( java.lang.String,<\/em>\n<em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;java.lang.String )&lt;\/function-signature&gt;<\/em>\n<em>&lt;\/function&gt;<\/em>\nFor example, let's imports the some Util library and invokes the function compare in an expression:\n<em>&lt;%@ taglib prefix=\"u\" uri=\"\/utils\"%&gt;<\/em>\n<em>...<\/em>\n<em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;c:when<\/em>\n<em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test=\"${u:compare(string1, string2)}\" &gt;<\/em>\n<\/pre>\n\n\n\n<p>Here, the expression referencing the function is using immediate evaluation syntax.<\/p>\n\n\n\n<p><strong><em>Example<\/em><\/strong>:<\/p>\n\n\n\n<p>Let&#8217;s create an example and demonstrate how expression language works.&nbsp; We will have servlet that will forward some data to our jsp. Also, we need one Java class that will play role of a structure:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><strong>import<\/strong> java.io.Serializable;\n\n<strong>public<\/strong> <strong>class<\/strong> Person <strong>implements<\/strong> Serializable{\n<strong>private<\/strong> String name;\n<strong>private<\/strong> <strong>int<\/strong> age;\n\n<strong>public<\/strong> String getName() {\n<strong>return<\/strong> name;\n}\n\n<strong>public<\/strong> <strong>void<\/strong> setName(String name) {\n<strong>this<\/strong>.name = name;\n}\n\n<strong>public<\/strong> <strong>int<\/strong> getAge() {\n<strong>return<\/strong> age;\n}\n\n<strong>public<\/strong> <strong>void<\/strong> setAge(<strong>int<\/strong> age) {\n<strong>this<\/strong>.age = age;\n}\n}\nHere is our servlet:\n<strong>package<\/strong> servlets;\n\n<strong>import<\/strong> java.io.IOException;\n\n<strong>import<\/strong> javax.servlet.RequestDispatcher;\n<strong>import<\/strong> javax.servlet.ServletException;\n<strong>import<\/strong> javax.servlet.http.HttpServlet;\n<strong>import<\/strong> javax.servlet.http.HttpServletRequest;\n<strong>import<\/strong> javax.servlet.http.HttpServletResponse;\n<strong>import<\/strong> javax.servlet.http.HttpSession;\n\n<strong>public<\/strong> <strong>class<\/strong> MyServlet <strong>extends<\/strong> HttpServlet {\n&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>private<\/strong> <strong>static<\/strong> <strong>final<\/strong> <strong>long<\/strong> <strong><em>serialVersionUID<\/em><\/strong> = 1L;\n&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;<strong>protected<\/strong> <strong>void<\/strong> doGet(HttpServletRequest request, HttpServletResponse response) <strong>throws<\/strong> ServletException, IOException {\n&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/ Setting Person Object as an attribute In The Request Scope\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Person personBob = <strong>new<\/strong> Person();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;personBob.setName(\"Bob\");\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setAttribute(\"personBob\", personBob);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/ Setting Person Object as an attribute In The Request&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Person personMary = <strong>new<\/strong> Person();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;personMary.setName(\"Mary\");\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setAttribute(\"personMary\", personMary);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/ Setting Person Object as an attribute In The Request&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Person personJerry = <strong>new<\/strong> Person();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;personJerry.setName(\"Jerry\");\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;personJerry.setAge(20);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpSession session = request.getSession();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session.setAttribute(\"personJerry\", personJerry);\n&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/ Setting Sample Attributes In The Application Scope\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getServletContext().setAttribute(\"User.Cookie\", \"This_Is_Cookie\");\n&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RequestDispatcher dispatcherObj = getServletContext().getRequestDispatcher(\"\/myjsp\");\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dispatcherObj.forward(request, response);\n&nbsp;&nbsp;&nbsp;&nbsp;}\n}\n<\/pre>\n\n\n\n<p><em>Also, we plan to set some values(context parameter) in web.xml:<\/em><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;web-app xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\nxmlns=\"http:\/\/java.sun.com\/xml\/ns\/javaee\" xmlns:web=\"http:\/\/java.sun.com\/xml\/ns\/javaee\/web-app_2_5.xsd\"\nxsi:schemaLocation=\"http:\/\/java.sun.com\/xml\/ns\/javaee http:\/\/java.sun.com\/xml\/ns\/javaee\/web-app_2_5.xs<a href=\"http:\/\/java.sun.com\/xml\/ns\/javaee\/web-app_2_5.xsd\" rel=\"nofollow noopener\" target=\"_blank\">d<\/a>\" version=\"2.5\"&gt;\n\n&lt;display-name&gt;ELExample&lt;\/display-name&gt;\n&lt;context-param&gt;\n&lt;param-name&gt;number&lt;\/param-name&gt;\n&lt;param-value&gt;100&lt;\/param-value&gt;\n&lt;\/context-param&gt;\n&nbsp;&nbsp;&lt;servlet&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;MyServlet&lt;\/servlet-name&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-class&gt;servlets.MyServlet&lt;\/servlet-class&gt;\n&nbsp;&nbsp;&nbsp;&lt;\/servlet&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;\n&nbsp;&nbsp;&lt;servlet-mapping&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;MyServlet&lt;\/servlet-name&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;url-pattern&gt;\/myservlet&lt;\/url-pattern&gt;\n&nbsp;&nbsp;&lt;\/servlet-mapping&gt;\n&lt;\/web-app&gt;<\/pre>\n\n\n\n<p><strong><em>Here is our test.jsp page:<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em>&lt;%@ page language=\"java\" contentType=\"text\/html; charset=ISO-8859-1\"<\/em>\npageEncoding=<em>\"ISO-8859-1\"<\/em>%&gt;\n&lt;%@ page isELIgnored=<em>\"false\"<\/em>%&gt;\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n&lt;meta http-equiv=<em>\"Content-Type\"<\/em> content=<em>\"text\/html; charset=US-ASCII\"<\/em>&gt;\n&lt;title&gt;JSP Expression Language Example&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n&lt;%\n&nbsp; &nbsp; pageContext.setAttribute(\"testAttribute\", \"testAttribute\");\n&nbsp; &nbsp; java.util.ArrayList&lt;String&gt; listAttributes = <strong>new<\/strong> java.util.ArrayList&lt;String&gt;();\n&nbsp; &nbsp; listAttributes.add(\"attr1\");\n&nbsp; &nbsp; listAttributes.add(\"attr2\");\n&nbsp; &nbsp; pageContext.setAttribute(\"listAttributes\", listAttributes);\n%&gt;\n&lt;div&gt;\nPerson name (Request Scope) = ${requestScope.personBob.name} &lt;br\/&gt;&lt;br\/&gt;\nPerson name (Without Scope) = ${personMary.name} &lt;br\/&gt;&lt;br\/&gt;\nPerson name and age(Session Scope) = ${sessionScope.personJerry.name}&nbsp; ${sessionScope.personJerry.age} &lt;br\/&gt;&lt;br\/&gt;&nbsp;&nbsp;&nbsp;\nPage Context Attribute = ${testAttribute} &lt;br\/&gt;&lt;br\/&gt;\nPage Context Attribute List = ${listAttributes[0]}; ${listAttributes[1]}; &lt;br\/&gt;&lt;br\/&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Application Scope Example = ${applicationScope[\"User.Cookie\"]} &lt;br\/&gt;&lt;br\/&gt;&nbsp;\nHeader Information = ${header[\"Accept-Encoding\"]} &lt;br\/&gt;&lt;br\/&gt;&nbsp;\nHTTP Method Is = ${pageContext.request.method} &lt;br\/&gt;&lt;br\/&gt;&nbsp;\nContext Parameter Example= initParam.number &lt;br\/&gt;&lt;br\/&gt;&nbsp;\nArithmetic Operator EL Example = ${initParam.number + 200} &lt;br\/&gt;&lt;br\/&gt;\nRelational Operator EL Example = ${initParam.number &lt; 200} &lt;br\/&gt;&lt;br\/&gt;\n&lt;\/div&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/pre>\n\n\n\n<p>As you can see, we showed how to work with expression language Implicit Objects and attributes from different scopes and with different types (int, String, Map). We got a piece of header information and init parameter from descriptor file web.xml. Also, we tried an arithmetic operator and relational operator of JSP expression language.<\/p>\n\n\n\n<p>Our servlet MyServlet will create several objects of class Person, set some attributes to different scopes, and will forward the request to test.jsp.<\/p>\n\n\n\n<p>Now, if we run our application and navigate to URL &#8220;http:\/\/localhost:8080\/myservlet&#8221; we will see the following page:<\/p>\n\n\n\n<p><img fetchpriority=\"high\" decoding=\"async\" width=\"642\" height=\"464\" src=\"https:\/\/lh4.googleusercontent.com\/aQHvjKQDTLBKbvDUi97Axz-sgjjrDcTwddVsFE3-P2KLTz-44mPf4eR5OF3quaauVlnaJkQx0M8pPH0shMzIZLcY1ENKjczSiZ8Ns9Z3QFx5FGe0LjjRatAFaJdATQtf04cSUjUo\" alt=\"\" title=\"\"><\/p>\n\n\n\n<p>It is worth to mention that in <a href=\"https:\/\/www.h2kinfosys.com\/blog\/expression-language\/\">JSP expression language<\/a> doesn&#8217;t throw an exception in the case of NULL. If an attribute is not found or some expression return NULL, the JSP continues to work and to show results. For arithmetic operations, EL treats NULL as 0. For logical operations, EL treats NULL as false. For String that is NULL, we get an empty String.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Expression Language is used to access the data. IT helps easily access the application data stored objects like Java Beans, request, session, and application, etc. The JSP EL allows software developers to access objects from code using a simple syntax. Expression Language was introduced in JSP version 2.0. Before this feature developers used only Scriptlets, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4056,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[42],"tags":[2154],"class_list":["post-3523","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java-tutorials","tag-java-function"],"_links":{"self":[{"href":"https:\/\/www.h2kinfosys.com\/blog\/wp-json\/wp\/v2\/posts\/3523","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.h2kinfosys.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.h2kinfosys.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.h2kinfosys.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.h2kinfosys.com\/blog\/wp-json\/wp\/v2\/comments?post=3523"}],"version-history":[{"count":0,"href":"https:\/\/www.h2kinfosys.com\/blog\/wp-json\/wp\/v2\/posts\/3523\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.h2kinfosys.com\/blog\/wp-json\/wp\/v2\/media\/4056"}],"wp:attachment":[{"href":"https:\/\/www.h2kinfosys.com\/blog\/wp-json\/wp\/v2\/media?parent=3523"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.h2kinfosys.com\/blog\/wp-json\/wp\/v2\/categories?post=3523"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.h2kinfosys.com\/blog\/wp-json\/wp\/v2\/tags?post=3523"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}