{"id":64,"date":"2011-05-09T13:29:54","date_gmt":"2011-05-09T13:29:54","guid":{"rendered":"http:\/\/javamylove.wordpress.com\/?p=64"},"modified":"2011-05-09T13:29:54","modified_gmt":"2011-05-09T13:29:54","slug":"processing-long-forms-in-servletsjsp-an-easy-way-out","status":"publish","type":"post","link":"https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/","title":{"rendered":"Processing Long Forms in Servlets\/JSP &#8211; An easy way out"},"content":{"rendered":"<p style=\"text-align:justify;\">After downloading and watching &#8220;Omo Ghetto&#8221; aka Ghetto Child (A nigerian home video), and listening and re-listening to a wonderful, soulful, inspiring sermon &#8220;Put your trust in Allah&#8221; by brother Belal Asaad (<a title=\"watch\" href=\"http:\/\/www.youtube.com\/watch?v=s1Y55ks0YHQ\" target=\"_blank\" rel=\"noopener\">watch here &#8211; its just 7 minutes<\/a>), I decided to write this post to round off the weekend.<\/p>\n<p style=\"text-align:justify;\">One of the modules of the EMIS (Education Management Information System) platform I am working on presently is a capacity assessment system that enables member states (countries) submit data on their current state of education. To cut the long English short, its a QUESTIONNAIRE. . .a very long, boring and annoying one. Its too sophisticated for all the online survey builders I checked out before I decided to attack with my fingers. It&#8217;s the first time I will be processing forms of this nature with more than a hundred check boxes, input boxes, combos, file uploads etc.<\/p>\n<p style=\"text-align:justify;\">For a lazy programmer like myself, the the shear terror and fright of having to setup database tables, design the forms, validate, submit entered data, retrieve later for updates could make my face start to age at a speed of 5 years by minute. Good news is that Allah in his infinite mercies after giving us life, water, food and other things, he gave us Objected Oriented Programming to make our lives easy \ud83d\ude42<\/p>\n<p style=\"text-align:justify;\"><strong>Form Designs and Validation<\/strong><\/p>\n<p style=\"text-align:justify;\">I use JotForm. . .First Web Based WYSIWYG Form Builder. Its simple to use, Dnd (drag &#8216;n&#8217; drop), Ajax validation, ready made custom components etc. The beauty of it all is that you can download your entire source files as zip archive. . .! Now that&#8217;s gangster. . .! Visit www.jotform.com to get started.<\/p>\n<p style=\"text-align:justify;\"><strong>Apache Commons To The Rescue<\/strong><\/p>\n<p style=\"text-align:justify;\">Yap. . .I checked out several java form processing frameworks and Apache Commons FileUpload would be just fine for me. This API is designed to handle file uploads in Servlets\/JSP but studying the documentation (<a title=\"Apache Commons Docs\" href=\"http:\/\/commons.apache.org\/fileupload\/apidocs\/index.html\" target=\"_blank\" rel=\"noopener\">click here to view<\/a> I discovered two lovely classes.<\/p>\n<p style=\"text-align:justify;\"><span style=\"color:#008000;\"><em>FileItemStream<\/em><\/span>: This interface provides access to a file or form item that was received within a multipart\/form-data POST request.<\/p>\n<p style=\"text-align:justify;\"><span style=\"color:#008000;\"><em>FileItemIterator<\/em><\/span>: An iterator, as returned by FileUploadBase.getItemIterator(RequestContext).<\/p>\n<p style=\"text-align:justify;\">So with these classes, I could interate through my forms using the FileItemIterator then retrieve the element property using the FileItemStream. . .<\/p>\n<p style=\"text-align:justify;\">I donloaded the Apache Commons library and the FileUpload library here http:\/\/commons.apache.org\/<\/p>\n<p style=\"text-align:justify;\"><strong>Database Setup<\/strong><\/p>\n<p style=\"text-align:justify;\">While designing the forms, I named every component as I would have named the columns that would hold their data in the database table. Then I wrote a JSP that handles table creation. Basically, the JSP loops\u00a0 through every component of the form and retrieves the name of each component, builds a &#8216;CREATE TABLE&#8217; query and executes it. I repeated this process for each form. Below is the JSP<\/p>\n<p>[sourcecode language=&#8221;java&#8221;]<br \/>\n&lt;%@ page import=&quot;java.io.File&quot; %&gt;<br \/>\n&lt;%@ page import=&quot;java.io.FileOutputStream&quot; %&gt;<br \/>\n&lt;%@ page import=&quot;java.io.InputStream&quot; %&gt;<br \/>\n&lt;%@ page import=&quot;org.apache.commons.fileupload.servlet.ServletFileUpload&quot;%&gt;<br \/>\n&lt;%@ page import=&quot;org.apache.commons.fileupload.disk.DiskFileItemFactory&quot;%&gt;<br \/>\n&lt;%@ page import=&quot;org.apache.commons.fileupload.*&quot;%&gt;<br \/>\n&lt;%@page import=&quot;org.apache.commons.fileupload.util.Streams;&quot; %&gt;<\/p>\n<p>&lt;%<br \/>\nString sql=&quot;CREATE TABLE `&quot;+request.getParameter(&quot;table&quot;)+&quot;` ( `RDate` datetime NOT NULL, `ID` varchar (4) NOT NULL,&quot;;<br \/>\nInputStream stream = null;<br \/>\nServletFileUpload uploads = new ServletFileUpload();<\/p>\n<p>\/\/ Parse the request<br \/>\nFileItemIterator iter = uploads.getItemIterator(request);<br \/>\nwhile (iter.hasNext())<br \/>\n{<br \/>\nFileItemStream item = iter.next();<br \/>\nString name = item.getFieldName();<br \/>\nstream = item.openStream();<\/p>\n<p>if (item.isFormField())<br \/>\n{<br \/>\nString val=&quot;&quot;+ Streams.asString(stream).toString();<br \/>\nsql=sql+&quot;`&quot;+name+&quot;` LONGTEXT NOT NULL default &#8221;,&quot;;<\/p>\n<p>}<br \/>\nelse<br \/>\n{<br \/>\n\/\/Then its a FileUpload field. You can handle it as you wish.<br \/>\n}<\/p>\n<p>}<\/p>\n<p>boolean done = mainBean.executeUpdate(sql);<\/p>\n<p>%&gt;<br \/>\n[\/sourcecode]<\/p>\n<p style=\"text-align:justify;\">The code above is self explainatory even without comments. It loops through the form and builds and sql query using the form element names. The above JSP will work with any form. To use do this this. . .<\/p>\n<p style=\"text-align:justify;\"><span style=\"color:#008000;\"><em>&lt;form method=&#8221;post&#8221; action=&#8221;createTable.jsp?table=section1&#8243; enctype=&#8221;multipart\/form-data&#8221;&gt;<\/em><\/span><\/p>\n<p style=\"text-align:justify;\"><strong>Form Submission<\/strong><\/p>\n<p style=\"text-align:justify;\">Next, I wrote another JSP that handles submissions to the database. Again, I looped through the form, retrieve form elements name and value, build an insert or update query then execute. Did I say an update query? Yes, because before any form is submitted, I check to see if the user has not filled the particular section and the query is built accordingly.<\/p>\n<p style=\"text-align:justify;\">Here we go. . .<\/p>\n<p>[sourcecode language=&#8221;java&#8221;]<br \/>\n&lt;%@ page import=&quot;java.util.Iterator&quot; %&gt;<br \/>\n&lt;%@ page import=&quot;java.util.ArrayList&quot; %&gt;<br \/>\n&lt;%@ page import=&quot;java.io.File&quot; %&gt;<br \/>\n&lt;%@ page import=&quot;java.io.FileOutputStream&quot; %&gt;<br \/>\n&lt;%@ page import=&quot;java.io.InputStream&quot; %&gt;<br \/>\n&lt;%@ page import=&quot;org.apache.commons.fileupload.servlet.ServletFileUpload&quot;%&gt;<br \/>\n&lt;%@ page import=&quot;org.apache.commons.fileupload.disk.DiskFileItemFactory&quot;%&gt;<br \/>\n&lt;%@ page import=&quot;org.apache.commons.fileupload.*&quot;%&gt;<br \/>\n&lt;%@page import=&quot;org.apache.commons.fileupload.util.Streams;&quot; %&gt;<\/p>\n<p>&lt;%<\/p>\n<p>String sql=&quot;&quot;;<br \/>\nString section =request.getParameter(&quot;f&quot;);<br \/>\nString id=request.getParameter(&quot;id&quot;);<br \/>\nString isUpdate = mainBean.checkSectionCompleted(id,section);\u00a0 \/\/Check if the user has completed this section<\/p>\n<p>InputStream stream = null;<\/p>\n<p>ServletFileUpload uploads = new ServletFileUpload();<\/p>\n<p>\/\/ Parse the request<br \/>\nFileItemIterator iter = uploads.getItemIterator(request);<br \/>\nwhile (iter.hasNext())<br \/>\n{<br \/>\nFileItemStream item = iter.next();<br \/>\nString name = item.getFieldName();<br \/>\nstream = item.openStream();<br \/>\nif (item.isFormField())<br \/>\n{<br \/>\nString val=&quot;&quot;+ Streams.asString(stream).toString();<br \/>\nif(name.startsWith(&quot;Check&quot;)) \/\/Handling checkboxes<br \/>\n{<br \/>\nif(val != null)<br \/>\n{<br \/>\nval = &quot;OFF&quot;;<br \/>\n}<br \/>\nelse<br \/>\n{<br \/>\nval = &quot;ON&quot;;<br \/>\n}<br \/>\n}<\/p>\n<p>sql=sql+name+&quot;=&#8217;&quot;+val+&quot;&#8217;, &quot;;<br \/>\n}<\/p>\n<p>}<\/p>\n<p>sql=sql+&quot;@&quot;;<br \/>\nsql=sql.replace(&quot;, @&quot;, &quot;&quot;);\u00a0 \/\/ &quot;Ojoro&quot; (trick) to remove the last comma appended to the query. . .hahaha<\/p>\n<p>String m = &quot;&quot;;<\/p>\n<p>if(isUpdate.equals(&quot;false&quot;))<br \/>\n{<br \/>\nm=&quot;insert into section_&quot;+section+&quot; set ID=&#8217;&quot;+id+&quot;&#8217;, RDate=Now(), &quot;+sql;<br \/>\n}<br \/>\nelse<br \/>\n{<br \/>\nm=&quot;update section_&quot;+section+&quot; set &quot;+sql+&quot; where ID=&#8217;&quot;+id+&quot;&#8217;&quot;;<br \/>\n}<\/p>\n<p>boolean done = mx.updateDoneSection(id,section,m);<\/p>\n<p>%&gt;<br \/>\n[\/sourcecode]<\/p>\n<p style=\"text-align:justify;\">Finally, I changed the destination JSP in all my &lt;form&gt; tags to saveSection.jsp.<\/p>\n<p style=\"text-align:justify;\">Now to retrieve the entered data, I placed some javascript snippet at the bottom of every form that talks to my java bean. This snippet checks if the user has completed a particular section. If yes, it fetches the entered data as a JSON, parses it and sets each form element value. The data entered for this section is then retrieved alog with the column names using ResultSetMetaData. Remember the column are derived from our form element names, so setting values for them should be pretty easy.<\/p>\n<p>[sourcecode language=&#8221;javascript&#8221;]<br \/>\n&lt;script&gt;<\/p>\n<p>var isDone = &quot;&lt;%=mainBean.checkisDone(&quot;9&quot;,id)%&gt;&quot;;\u00a0 \/\/Notice how the java bean is accessed from javascript code. The check isDone accepts the section number and the user ID as parameter<br \/>\nif(isDone == &quot;yes&quot;)<br \/>\n{<br \/>\nvar elementValues = &quot;&lt;%=m1.getElementValues(&quot;9&quot;,id)%&gt;&quot;;<br \/>\nvar words = elementValues.trim().split(&quot;%%%_&quot;);<br \/>\nfor (i = 0; i &lt; words.length; i++)<br \/>\n{<br \/>\nvar e = words[i].split(&quot;-:::-&quot;);<br \/>\nvar l=e[0];\u00a0 \/\/column name (form element name)<br \/>\nvar v=e[1]; \/\/ value<br \/>\n\/\/alert(l);<\/p>\n<p>var p = document.getElementsByName(l)[0].type;<br \/>\nswitch(p)<br \/>\n{<br \/>\ncase &#8216;text&#8217;:<br \/>\ncase &#8216;textarea&#8217;:<br \/>\ncase &#8216;radio&#8217;:<br \/>\ncase &#8216;select-one&#8217;:<br \/>\ndocument.getElementsByName(l)[0].value = v;<br \/>\nbreak;<br \/>\ncase &#8216;checkbox&#8217;:<br \/>\nif(v == &quot;OFF&quot;)<br \/>\ndocument.getElementsByName(l)[0].checked = true;<\/p>\n<p>}<br \/>\n}<\/p>\n<p>}<\/p>\n<p>&lt;\/script&gt;<br \/>\n[\/sourcecode]<\/p>\n<p style=\"text-align:justify;\">Ces&#8217;t fiini&#8230; I completed the entire application in two days because all I focused on was designing the forms. The\u00a0 DRY &#8211; Don&#8217;t Repeat Yourself principle that OOP preaches has been applied here and it worked really well.<\/p>\n<p style=\"text-align:justify;\">If you feel there is a better way I could have achieved my goal, please feel free to share. I am open minded. . .:)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>After downloading and watching &#8220;Omo Ghetto&#8221; aka Ghetto Child (A nigerian home video), and listening and re-listening to a wonderful, soulful, inspiring sermon &#8220;Put your trust in Allah&#8221; by brother Belal Asaad (watch here &#8211; its just 7 minutes), I decided to write this post to round off the weekend. One of the modules of the EMIS (Education Management Information System) platform I am working on presently is a capacity assessment system that enables member states (countries) submit data on&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":3,"footnotes":""},"categories":[6],"tags":[],"class_list":["post-64","post","type-post","status-publish","format-standard","hentry","category-java"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Processing Long Forms in Servlets\/JSP - An easy way out - Lukman<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Processing Long Forms in Servlets\/JSP - An easy way out - Lukman\" \/>\n<meta property=\"og:description\" content=\"After downloading and watching &#8220;Omo Ghetto&#8221; aka Ghetto Child (A nigerian home video), and listening and re-listening to a wonderful, soulful, inspiring sermon &#8220;Put your trust in Allah&#8221; by brother Belal Asaad (watch here &#8211; its just 7 minutes), I decided to write this post to round off the weekend. One of the modules of the EMIS (Education Management Information System) platform I am working on presently is a capacity assessment system that enables member states (countries) submit data on&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukman\" \/>\n<meta property=\"article:published_time\" content=\"2011-05-09T13:29:54+00:00\" \/>\n<meta name=\"author\" content=\"Lukman\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukman\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/\"},\"author\":{\"name\":\"Lukman\",\"@id\":\"https:\/\/lukmanjaji.com\/#\/schema\/person\/78a62e6239894a2171dba402227b0b96\"},\"headline\":\"Processing Long Forms in Servlets\/JSP &#8211; An easy way out\",\"datePublished\":\"2011-05-09T13:29:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/\"},\"wordCount\":1330,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/lukmanjaji.com\/#\/schema\/person\/78a62e6239894a2171dba402227b0b96\"},\"articleSection\":[\"Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/\",\"url\":\"https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/\",\"name\":\"Processing Long Forms in Servlets\/JSP - An easy way out - Lukman\",\"isPartOf\":{\"@id\":\"https:\/\/lukmanjaji.com\/#website\"},\"datePublished\":\"2011-05-09T13:29:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/lukmanjaji.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Processing Long Forms in Servlets\/JSP &#8211; An easy way out\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/lukmanjaji.com\/#website\",\"url\":\"https:\/\/lukmanjaji.com\/\",\"name\":\"Lukman\",\"description\":\"Me in 4 Nutshells\",\"publisher\":{\"@id\":\"https:\/\/lukmanjaji.com\/#\/schema\/person\/78a62e6239894a2171dba402227b0b96\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/lukmanjaji.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/lukmanjaji.com\/#\/schema\/person\/78a62e6239894a2171dba402227b0b96\",\"name\":\"Lukman\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/lukmanjaji.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a75f8a1133dbd0d25f80c79109b6dfd3179059c5ae0109ca2bcc3aa05c714642?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a75f8a1133dbd0d25f80c79109b6dfd3179059c5ae0109ca2bcc3aa05c714642?s=96&d=mm&r=g\",\"caption\":\"Lukman\"},\"logo\":{\"@id\":\"https:\/\/lukmanjaji.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/lukmanjaji.com\"],\"url\":\"https:\/\/lukmanjaji.com\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Processing Long Forms in Servlets\/JSP - An easy way out - Lukman","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:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/","og_locale":"en_US","og_type":"article","og_title":"Processing Long Forms in Servlets\/JSP - An easy way out - Lukman","og_description":"After downloading and watching &#8220;Omo Ghetto&#8221; aka Ghetto Child (A nigerian home video), and listening and re-listening to a wonderful, soulful, inspiring sermon &#8220;Put your trust in Allah&#8221; by brother Belal Asaad (watch here &#8211; its just 7 minutes), I decided to write this post to round off the weekend. One of the modules of the EMIS (Education Management Information System) platform I am working on presently is a capacity assessment system that enables member states (countries) submit data on&hellip;","og_url":"https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/","og_site_name":"Lukman","article_published_time":"2011-05-09T13:29:54+00:00","author":"Lukman","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukman","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/#article","isPartOf":{"@id":"https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/"},"author":{"name":"Lukman","@id":"https:\/\/lukmanjaji.com\/#\/schema\/person\/78a62e6239894a2171dba402227b0b96"},"headline":"Processing Long Forms in Servlets\/JSP &#8211; An easy way out","datePublished":"2011-05-09T13:29:54+00:00","mainEntityOfPage":{"@id":"https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/"},"wordCount":1330,"commentCount":2,"publisher":{"@id":"https:\/\/lukmanjaji.com\/#\/schema\/person\/78a62e6239894a2171dba402227b0b96"},"articleSection":["Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/","url":"https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/","name":"Processing Long Forms in Servlets\/JSP - An easy way out - Lukman","isPartOf":{"@id":"https:\/\/lukmanjaji.com\/#website"},"datePublished":"2011-05-09T13:29:54+00:00","breadcrumb":{"@id":"https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/lukmanjaji.com\/2011\/05\/09\/processing-long-forms-in-servletsjsp-an-easy-way-out\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/lukmanjaji.com\/"},{"@type":"ListItem","position":2,"name":"Processing Long Forms in Servlets\/JSP &#8211; An easy way out"}]},{"@type":"WebSite","@id":"https:\/\/lukmanjaji.com\/#website","url":"https:\/\/lukmanjaji.com\/","name":"Lukman","description":"Me in 4 Nutshells","publisher":{"@id":"https:\/\/lukmanjaji.com\/#\/schema\/person\/78a62e6239894a2171dba402227b0b96"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/lukmanjaji.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/lukmanjaji.com\/#\/schema\/person\/78a62e6239894a2171dba402227b0b96","name":"Lukman","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/lukmanjaji.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a75f8a1133dbd0d25f80c79109b6dfd3179059c5ae0109ca2bcc3aa05c714642?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a75f8a1133dbd0d25f80c79109b6dfd3179059c5ae0109ca2bcc3aa05c714642?s=96&d=mm&r=g","caption":"Lukman"},"logo":{"@id":"https:\/\/lukmanjaji.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/lukmanjaji.com"],"url":"https:\/\/lukmanjaji.com\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/lukmanjaji.com\/wp-json\/wp\/v2\/posts\/64","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lukmanjaji.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lukmanjaji.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lukmanjaji.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lukmanjaji.com\/wp-json\/wp\/v2\/comments?post=64"}],"version-history":[{"count":0,"href":"https:\/\/lukmanjaji.com\/wp-json\/wp\/v2\/posts\/64\/revisions"}],"wp:attachment":[{"href":"https:\/\/lukmanjaji.com\/wp-json\/wp\/v2\/media?parent=64"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lukmanjaji.com\/wp-json\/wp\/v2\/categories?post=64"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lukmanjaji.com\/wp-json\/wp\/v2\/tags?post=64"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}