

{"id":81350,"date":"2020-09-02T09:00:49","date_gmt":"2020-09-02T03:30:49","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=81350"},"modified":"2021-08-25T13:47:19","modified_gmt":"2021-08-25T08:17:19","slug":"jsp-custom-tags","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/jsp-custom-tags\/","title":{"rendered":"JSP Custom Tags with Examples"},"content":{"rendered":"<p>This article consists of a detailed description of user-defined tags in JSP, better known as JSP custom tags. Their interfacing, advantages, detailed example has been discussed further in this article. So let&#8217;s learn the same.<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tags.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-81440\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tags.jpg\" alt=\"JSP Custom Tags\" width=\"1200\" height=\"628\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tags.jpg 1200w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tags-300x157.jpg 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tags-1024x536.jpg 1024w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tags-150x79.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tags-768x402.jpg 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tags-520x272.jpg 520w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><\/p>\n<h2>JSP Custom Tags<\/h2>\n<p>JSP Custom tags are simply called user-defined tags. When a JSP is converted into a servlet, these tags get converted to a class. They are called tag handlers as they do action on an object. These actions get invoked by the web container at the time of execution of servlet.<\/p>\n<p>To create these tags, we need to extend and SimpleTagSupport, map TLD(Tag Library Descriptor), override doTag().<\/p>\n<p>These tags can be created so that the functionality of JSP can be extended. They allow the encapsulation of functionality. This is thus made available to non-expert page authors.<\/p>\n<h3>Advantages of Custom Tags in JSP<\/h3>\n<ol>\n<li><strong>Portable \u2013<\/strong> Once declared in the Tag Library, these tags can be used anywhere.<\/li>\n<li><strong>Simple \u2013<\/strong> They are simple and convenient to use.<\/li>\n<li><strong>Expressive \u2013<\/strong> It provides a wide range of functionalities, scripting elements to the page authors.<\/li>\n<li><strong>Usable from different scripting languages \u2013<\/strong> This functionality can extend to other scripting languages.<\/li>\n<li><strong>No need for scriptlet tag &#8211;<\/strong> Once we create a custom tag, we don\u2019t need scriptlet tag. Though it is a bad approach in JSP.<\/li>\n<li><strong>Reusable &#8211;<\/strong> We can use the similar business logic over and over again.<\/li>\n<li><strong>Separation of business logic from JSP &#8211;<\/strong> For easy maintenance, Custom tags separate business logic and JSP.<\/li>\n<\/ol>\n<h3>Attributes of JSP Custom Tag<\/h3>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\"><strong>S.No<\/strong>.<\/span><\/td>\n<td><b>Property<\/b><\/td>\n<td><b>Use<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">1<\/span><\/td>\n<td><b>name<\/b><\/td>\n<td><span style=\"font-weight: 400\">This attribute\u2019s purpose is to define the name of the tag. Each tag must have a unique name.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">2<\/span><\/td>\n<td><b>required<\/b><\/td>\n<td><span style=\"font-weight: 400\">This attribute will specify the requirement of the tag i.e., either required or optional.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">3<\/span><\/td>\n<td><b>rtexprvalue<\/b><\/td>\n<td><span style=\"font-weight: 400\">This attribute declares the runtime expression for the tag is valid or not.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">4<\/span><\/td>\n<td><b>type<\/b><\/td>\n<td><span style=\"font-weight: 400\">It will define the class type of the attribute. By default, it will take it as a string.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">5<\/span><\/td>\n<td><b>description<\/b><\/td>\n<td><span style=\"font-weight: 400\">This attribute retrieves the description regarding information.\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">6<\/span><\/td>\n<td><b>fragment<\/b><\/td>\n<td><span style=\"font-weight: 400\">It specifies that the value this attribute holds will be a JspFragment or not.<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>Using Properties related to Attributes<\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">&lt;attribute&gt;\r\n  &lt;name&gt;attribute_name&lt;\/name&gt;\r\n&lt;required&gt;false&lt;\/required&gt;\r\n&lt;type&gt;java.util.Date&lt;\/type&gt;\r\n&lt;fragment&gt;false&lt;\/fragment&gt;\r\n&lt;\/attribute&gt;\r\n<\/pre>\n<h3>JSP Tag Interface<\/h3>\n<ul>\n<li>Tag Handler extends SimpleTagSupport class.<\/li>\n<li>This class overrides doTag() method. This method is a part of the parent SimpleTagSupport class.<\/li>\n<li>It is a subinterface of the JSPTag interface.<\/li>\n<li>There will be a need to map the Tag Library descriptor(TLD) as well.<\/li>\n<\/ul>\n<h4>Fields of JSP Tag interface<\/h4>\n<p>There are four fields under custom tags:<\/p>\n<p><strong>1. public static int EVAL_BODY_INCLUDE<\/strong><br \/>\nThis field will evaluate the body content.<\/p>\n<p><strong>2. public static int EVAL_PAGE<\/strong><br \/>\nThis field will evaluate the page contents of JSP after the custom tag.<\/p>\n<p><strong>3. public static int SKIP_BODY<\/strong><br \/>\nThis field will skip the content in the body of that tag.<\/p>\n<p><strong>4. public static int SKIP_PAGE<\/strong><br \/>\nThis field will skip the content of JSP present after the custom tag<\/p>\n<h3>Method of JSP Tag Interface<\/h3>\n<p>There are two methods that help the interfacing of tags. They are :<\/p>\n<ul>\n<li>doTag(): This method will override the contents for the tag.<\/li>\n<li>JSPContext() : This tag will take the JSP Context.<\/li>\n<\/ul>\n<h3>JSP Custom Tag API<\/h3>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tag-API.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-81441\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tag-API.jpg\" alt=\"JSP Custom Tag API\" width=\"582\" height=\"536\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tag-API.jpg 582w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tag-API-300x276.jpg 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tag-API-150x138.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tag-API-520x479.jpg 520w\" sizes=\"auto, (max-width: 582px) 100vw, 582px\" \/><\/a><\/p>\n<p>The javax.servlet.jsp.tagext is the package that contains classes and interfaces for JSP custom tag API.<br \/>\nHere the JspTag is the root interface in the Custom Tag hierarchy. Further tags and Iteration tags extend it. Body tag extends the above hierarchy and tag support implements it. Further, the body tag supports extends as well as implements it.<\/p>\n<h3>JSP Custom Tag Flow<\/h3>\n<p>JSP Custom tag flow is as follows. A better description is in the example below.<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tag-Flow.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-81442\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tag-Flow.jpg\" alt=\"JSP Custom Tag Flow\" width=\"641\" height=\"170\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tag-Flow.jpg 641w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tag-Flow-300x80.jpg 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tag-Flow-150x40.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tag-Flow-520x138.jpg 520w\" sizes=\"auto, (max-width: 641px) 100vw, 641px\" \/><\/a><\/p>\n<h3>Creating JSP Custom Tag<\/h3>\n<p>Here we are creating a custom tag named Customtest with testTag being the class. This class will override the dotage() method.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">&lt;ex:Customtest\/&gt;\r\n Class testTag extends SimpleTagSupport{ public void doTag()}\r\n<\/pre>\n<p>Further, we will map the testTag to Tag Library descriptor. JSP container will itself connect the class file and uri in the TLD file<\/p>\n<p><strong>For Example:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">CustomTag.jsp\r\n&lt;%@ page language=\"java\" contentType=\"text\/html; charset=ISO-8859-1\"\r\n  pageEncoding=\"ISO-8859-1\"%&gt;\r\n  &lt;%@ taglib prefix=\"ex\" uri=\"WEB-INF\/custom.tld\"%&gt;\r\n&lt;html&gt;\r\n&lt;head&gt;\r\n&lt;title&gt;Custom Tags&lt;\/title&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n&lt;ex:MyTag\/&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;\r\n\r\nCustom.tld\r\n\r\n&lt;taglib&gt;\r\n  &lt;tlib-version&gt;1.0&lt;\/tlib-version&gt;\r\n  &lt;jsp-version&gt;2.0&lt;\/jsp-version&gt;\r\n  &lt;short-name&gt;My TLD&lt;\/short-name&gt;\r\n  &lt;tag&gt;\r\n  &lt;name&gt;MyTag&lt;\/name&gt;\r\n  &lt;tag-class&gt;demotest.MyTag&lt;\/tag-class&gt;\r\n    &lt;body-content&gt;empty&lt;\/body-content&gt;\r\n  &lt;\/tag&gt;\r\n&lt;\/taglib&gt;\r\n\r\nMyTag.java ( TagHandler )\r\n\r\npackage demotest;\r\nimport javax.servlet.jsp.tagext.*;\r\nimport javax.servlet.jsp.*;\r\nimport java.io.*;\r\nMyTag.java(Tag Handler)\r\npublic class MyTag extends SimpleTagSupport{\r\n      \tpublic void doTag() throws JspException,IOException\r\n      \t{\r\n               \tJspWriter out = getJspContext().getOut();\r\n    out.println(\"--DataFlair--\");\r\n               \tout.println(\"My Custom Tag\");\r\n      \t}\r\n \r\n}\r\n<\/pre>\n<p><strong>Explanation:<\/strong><br \/>\nMytag.java which is a tag handler, extends SimpleTagSupport and overrides doTag(). It writes my Custom Tag using JspWriter.<br \/>\nThe tag class of the tld has the complete path of the tag handler so that the java file can be mapped to the Tag Library Descriptor.<br \/>\nThe JSP file consists of the custom tag we defined.<\/p>\n<p><strong>Output:<\/strong><\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/image3-6.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-81549\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/image3-6.png\" alt=\"jsp custom tags\" width=\"157\" height=\"91\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/image3-6.png 157w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/image3-6-150x87.png 150w\" sizes=\"auto, (max-width: 157px) 100vw, 157px\" \/><\/a><\/p>\n<h2>Conclusion<\/h2>\n<p>JSP Custom tags are user-defined tags that extend the functionality of JSP. They are simple and effective to use and efficiently encapsulate the functionalities. They are easy to understand and use, thus they are available to non-expert page authors. In this article, we saw different custom tags, their methods. We understood their interfacing in JSP and their advantages as well. We also glanced upon the Custom Tag API and its working along with the Custom Tag Flow.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article consists of a detailed description of user-defined tags in JSP, better known as JSP custom tags. Their interfacing, advantages, detailed example has been discussed further in this article. So let&#8217;s learn the&#46;&#46;&#46;<\/p>\n","protected":false},"author":10,"featured_media":81440,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22403],"tags":[23100,23099],"class_list":["post-81350","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jsp","tag-custom-tags-in-jsp","tag-jsp-custom-tags"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JSP Custom Tags with Examples - DataFlair<\/title>\n<meta name=\"description\" content=\"Learn what are JSP Custom tags.These are user-defined tags that extend functionality of JSP. Learn advantages, interfacing, custom tag API and flow.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/jsp-custom-tags\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JSP Custom Tags with Examples - DataFlair\" \/>\n<meta property=\"og:description\" content=\"Learn what are JSP Custom tags.These are user-defined tags that extend functionality of JSP. Learn advantages, interfacing, custom tag API and flow.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/jsp-custom-tags\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-02T03:30:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-08-25T08:17:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tags.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JSP Custom Tags with Examples - DataFlair","description":"Learn what are JSP Custom tags.These are user-defined tags that extend functionality of JSP. Learn advantages, interfacing, custom tag API and flow.","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:\/\/data-flair.training\/blogs\/jsp-custom-tags\/","og_locale":"en_US","og_type":"article","og_title":"JSP Custom Tags with Examples - DataFlair","og_description":"Learn what are JSP Custom tags.These are user-defined tags that extend functionality of JSP. Learn advantages, interfacing, custom tag API and flow.","og_url":"https:\/\/data-flair.training\/blogs\/jsp-custom-tags\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2020-09-02T03:30:49+00:00","article_modified_time":"2021-08-25T08:17:19+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tags.jpg","type":"image\/jpeg"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/jsp-custom-tags\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/jsp-custom-tags\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/a90b082e16aa38d207212d22b0581f33"},"headline":"JSP Custom Tags with Examples","datePublished":"2020-09-02T03:30:49+00:00","dateModified":"2021-08-25T08:17:19+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/jsp-custom-tags\/"},"wordCount":783,"commentCount":0,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/jsp-custom-tags\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tags.jpg","keywords":["custom tags in jsp","jsp custom tags"],"articleSection":["JSP Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/jsp-custom-tags\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/jsp-custom-tags\/","url":"https:\/\/data-flair.training\/blogs\/jsp-custom-tags\/","name":"JSP Custom Tags with Examples - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/jsp-custom-tags\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/jsp-custom-tags\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tags.jpg","datePublished":"2020-09-02T03:30:49+00:00","dateModified":"2021-08-25T08:17:19+00:00","description":"Learn what are JSP Custom tags.These are user-defined tags that extend functionality of JSP. Learn advantages, interfacing, custom tag API and flow.","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/jsp-custom-tags\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/jsp-custom-tags\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/jsp-custom-tags\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tags.jpg","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2020\/08\/JSP-Custom-Tags.jpg","width":1200,"height":628,"caption":"JSP Custom Tags"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/jsp-custom-tags\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"JSP Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/jsp\/"},{"@type":"ListItem","position":3,"name":"JSP Custom Tags with Examples"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/a90b082e16aa38d207212d22b0581f33","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/dd6de0d647a0185cd6faf264e4ba860b0d85d08d7070766f9cd41bea5bb0b227?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/dd6de0d647a0185cd6faf264e4ba860b0d85d08d7070766f9cd41bea5bb0b227?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dd6de0d647a0185cd6faf264e4ba860b0d85d08d7070766f9cd41bea5bb0b227?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"The DataFlair Team is passionate about delivering top-notch tutorials and resources on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. With expertise in the tech industry, we simplify complex topics to help learners excel. Stay updated with our latest insights.","url":"https:\/\/data-flair.training\/blogs\/author\/dfadteam1\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/81350","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=81350"}],"version-history":[{"count":3,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/81350\/revisions"}],"predecessor-version":[{"id":81550,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/81350\/revisions\/81550"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/81440"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=81350"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=81350"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=81350"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}