<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-345401084154429965</id><updated>2012-02-15T23:37:18.610-08:00</updated><title type='text'>TEKNE - TECHNE</title><subtitle type='html'>You will find my technical articles and translations on software in this article.  My areas of interest include JAVA - J2EE with all its aspects, specially EJB3, Struts, JSF, Spring, WebServices and other frameworks.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tekne-techne.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default?start-index=101&amp;max-results=100'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>173</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-3831225627578118772</id><published>2011-12-05T12:32:00.000-08:00</published><updated>2011-12-05T12:40:41.840-08:00</updated><title type='text'>Eclipse Glassfish EE example</title><content type='html'>Hi, this is a simple ear application that demonstrates how to use eclipse with glassfish to build enterprise applications (J2EE). It combines the standard hello example of J2EE examples from NetBeans with the calculator example of web services example of NetBeans again. There is a simple trick in the web.xml of the war file to run the two examples seperately from the IE command line.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1.1 Create an Enterprise Application (name=ServletStatelessARSEAR)&lt;br /&gt;1.2 Say OK to create an ejbClient (name = ServletStatelessARS-ejbClient)&lt;br /&gt;1.3 Leave the rest as it is, you will add the EJB and war projects later on.&lt;br /&gt;As seen in the picture.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-O4qbk9r_66Q/Tt0q2sqvqEI/AAAAAAAAAjk/VvLqZ8Gmha8/s1600/EclipseGlassfishEE1.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 343px; DISPLAY: block; HEIGHT: 244px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5682745424003180610" border="0" alt="" src="http://1.bp.blogspot.com/-O4qbk9r_66Q/Tt0q2sqvqEI/AAAAAAAAAjk/VvLqZ8Gmha8/s400/EclipseGlassfishEE1.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2.1 Create under ejbModule an interface file at the ServletStatelessARS-ejbClient client application (loc/name=enterpriseARS.servlet_stateless_ejbClient/StatelessSessionARS.java)&lt;br /&gt;&lt;br /&gt;package enterpriseARS.servlet_stateless_ejbClient;&lt;br /&gt;&lt;br /&gt;public interface StatelessSessionARS {&lt;br /&gt;&lt;br /&gt;public String sayHelloARS(String name);&lt;br /&gt;public int add2Parms(int parm1, int parm2);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-1WQh72C6T8s/Tt0qzUkCrMI/AAAAAAAAAjY/VnPf4C3kTT4/s1600/EclipseGlassfishEE2.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 332px; DISPLAY: block; HEIGHT: 389px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5682745365993008322" border="0" alt="" src="http://3.bp.blogspot.com/-1WQh72C6T8s/Tt0qzUkCrMI/AAAAAAAAAjY/VnPf4C3kTT4/s400/EclipseGlassfishEE2.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2.2 Create an EJB application (name=ServletStatelessARS-ejb) and attach it to the Enterprise application using the related creation option.&lt;br /&gt;2.3 Create under ejbModule (loc/name=enterpriseARS.servlet_stateless_ejb/StatelessSessionARSBean.java)&lt;br /&gt;package enterpriseARS.servlet_stateless_ejb;&lt;br /&gt;import javax.ejb.LocalBean;&lt;br /&gt;import javax.ejb.Stateless;&lt;br /&gt;import javax.jws.WebService;&lt;br /&gt;&lt;br /&gt;import enterpriseARS.servlet_stateless_ejbClient.StatelessSessionARS;&lt;br /&gt;&lt;br /&gt;@WebService (only for diagnostic purposes, to be used for Glassfish endpoint testing)&lt;br /&gt;@Stateless&lt;br /&gt;public class StatelessSessionARSBean&lt;br /&gt;implements StatelessSessionARS {&lt;br /&gt;&lt;br /&gt;public String sayHelloARS(String name) {&lt;br /&gt;return "HelloARS, " + name + "!\n";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public int add2Parms(int parm1, int parm2){&lt;br /&gt;return(parm1+parm2);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;3.1 Create a dynamic web application (name=ServletStatelessARS-war) and attach it to the Enterprise application using the related creation option.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/-5V62P8OKXXs/Tt0qu4uoTgI/AAAAAAAAAjM/etIHht9EtyE/s1600/EclipseGlassfishEE3.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 282px; DISPLAY: block; HEIGHT: 400px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5682745289801747970" border="0" alt="" src="http://3.bp.blogspot.com/-5V62P8OKXXs/Tt0qu4uoTgI/AAAAAAAAAjM/etIHht9EtyE/s400/EclipseGlassfishEE3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3.2 Web/index.jsp should be:&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;"http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;GlassFish JSP Page&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;h1&amp;gt;Calculator Service&amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;lt;form name="Submit" action="Servlet2ParmsAddARS"&amp;gt;&lt;br /&gt;&amp;lt;input type="text" name="value1" value="2" size="3"/&amp;gt;+&lt;br /&gt;&amp;lt;input type="text" name="value2" value="2" size="3"/&amp;gt;=&lt;br /&gt;&amp;lt;input type="submit" value="Get Result" name="getResult" /&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;3.3 Web.xml should be:&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"&amp;gt;&lt;br /&gt;&amp;lt;display-name&amp;gt;ServletStatelessARS&amp;lt;/display-name&amp;gt;&lt;br /&gt;&amp;lt;distributable/&amp;gt;&lt;br /&gt;&amp;lt;servlet&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;Servlet2StatelessARS&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;servlet-class&amp;gt;enterpriseARS.servlet_stateless_war.Servlet2StatelessARS&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&amp;lt;/servlet&amp;gt;&lt;br /&gt;&amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;Servlet2StatelessARS&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;url-pattern&amp;gt;/servlet&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;servlet&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;Servlet2ParmsAddARS&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;servlet-class&amp;gt;enterpriseARS.servlet_stateless_war.Servlet2ParmsAddARS&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&amp;lt;/servlet&amp;gt;&lt;br /&gt;&amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;Servlet2ParmsAddARS&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;url-pattern&amp;gt;/Servlet2ParmsAddARS&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;welcome-file-list&amp;gt;&lt;br /&gt;&amp;lt;welcome-file&amp;gt;&lt;br /&gt;index.jsp&lt;br /&gt;servlet&lt;br /&gt;&amp;lt;/welcome-file&amp;gt;&lt;br /&gt;&amp;lt;/welcome-file-list&amp;gt;&lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;br /&gt;&lt;br /&gt;3.4 In the Java Resources/src/enterpriseARS.servlet_stateless_war package,&lt;br /&gt;Create Servlet2ParmsAddARS.java&lt;br /&gt;&lt;br /&gt;package enterpriseARS.servlet_stateless_war;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import javax.ejb.EJB;&lt;br /&gt;&lt;br /&gt;import javax.servlet.*;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;&lt;br /&gt;import javax.naming.*;&lt;br /&gt;&lt;br /&gt;import enterpriseARS.servlet_stateless_ejbClient.*;&lt;br /&gt;&lt;br /&gt;// Though it is perfectly fine to declare the dependency on the bean&lt;br /&gt;// at the type level, it is not required for stateless session bean&lt;br /&gt;// Hence the next two lines are commented and we rely on the&lt;br /&gt;// container to inject the bean.&lt;br /&gt;// @EJB(name="StatelessSession", beanInterface=StatelessSession.class)&lt;br /&gt;&lt;br /&gt;public class Servlet2ParmsAddARS&lt;br /&gt;extends HttpServlet {&lt;br /&gt;&lt;br /&gt;// Using injection for Stateless session bean is still thread-safe since&lt;br /&gt;// the ejb container will route every request to different&lt;br /&gt;// bean instances. However, for Stateful session beans the&lt;br /&gt;// dependency on the bean must be declared at the type level&lt;br /&gt;&lt;br /&gt;@EJB&lt;br /&gt;private StatelessSessionARS sless;&lt;br /&gt;&lt;br /&gt;public void service(HttpServletRequest req, HttpServletResponse resp)&lt;br /&gt;throws ServletException, IOException {&lt;br /&gt;&lt;br /&gt;resp.setContentType("text/html");&lt;br /&gt;PrintWriter out = resp.getWriter();&lt;br /&gt;&lt;br /&gt;try {&lt;br /&gt;&lt;br /&gt;out.println("&amp;lt;h2&amp;gt;Servlet ClientServlet at " + req.getContextPath () + "&amp;lt;/h2&amp;gt;");&lt;br /&gt;&lt;br /&gt;int i = Integer.parseInt(req.getParameter("value1"));&lt;br /&gt;int j = Integer.parseInt(req.getParameter("value2"));&lt;br /&gt;&lt;br /&gt;int result = sless.add2Parms(i,j);&lt;br /&gt;&lt;br /&gt;out.println("&amp;lt;br/&amp;gt;");&lt;br /&gt;out.println("Result:");&lt;br /&gt;out.println("" + i + " + " + j + " = " + result);&lt;br /&gt;&lt;br /&gt;} catch (Exception ex) {&lt;br /&gt;ex.printStackTrace();&lt;br /&gt;System.out.println("webclient servlet test failed");&lt;br /&gt;throw new ServletException(ex);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;3.5 create Servlet2StatelessARS.java at the same package location.&lt;br /&gt;&lt;br /&gt;package enterpriseARS.servlet_stateless_war;&lt;br /&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import javax.ejb.EJB;&lt;br /&gt;&lt;br /&gt;import javax.servlet.*;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;&lt;br /&gt;import javax.naming.*;&lt;br /&gt;&lt;br /&gt;import enterpriseARS.servlet_stateless_ejbClient.*;&lt;br /&gt;public class Servlet2StatelessARS&lt;br /&gt;extends HttpServlet {&lt;br /&gt;@EJB&lt;br /&gt;private StatelessSessionARS sless;&lt;br /&gt;&lt;br /&gt;public void service(HttpServletRequest req, HttpServletResponse resp)&lt;br /&gt;throws ServletException, IOException {&lt;br /&gt;&lt;br /&gt;resp.setContentType("text/html");&lt;br /&gt;PrintWriter out = resp.getWriter();&lt;br /&gt;&lt;br /&gt;try {&lt;br /&gt;&lt;br /&gt;out.println("&amp;lt;HTML&amp;gt; &amp;lt;HEAD&amp;gt; &amp;lt;TITLE&amp;gt; Servlet Output &amp;lt;/TITLE&amp;gt; &amp;lt;/HEAD&amp;gt; &amp;lt;BODY BGCOLOR=white&amp;gt;");&lt;br /&gt;out.println("&amp;lt;CENTER&amp;gt; &amp;lt;FONT size=+1&amp;gt; Servlet2Stateless:: Please enter your name &amp;lt;/FONT&amp;gt; &amp;lt;/CENTER&amp;gt; &amp;lt;p&amp;gt; ");&lt;br /&gt;out.println("&amp;lt;form method=\"POST\"&amp;gt;");&lt;br /&gt;out.println("&amp;lt;TABLE&amp;gt;");&lt;br /&gt;out.println("&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Name: &amp;lt;/td&amp;gt;");&lt;br /&gt;out.println("&amp;lt;td&amp;gt;&amp;lt;input type=\"text\" name=\"name\"&amp;gt; &amp;lt;/td&amp;gt;");&lt;br /&gt;out.println("&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;");&lt;br /&gt;out.println("&amp;lt;td&amp;gt;&amp;lt;input type=\"submit\" name=\"sub\"&amp;gt; &amp;lt;/td&amp;gt;");&lt;br /&gt;out.println("&amp;lt;/tr&amp;gt;");&lt;br /&gt;out.println("&amp;lt;/TABLE&amp;gt;");&lt;br /&gt;out.println("&amp;lt;/form&amp;gt;");&lt;br /&gt;String val = req.getParameter("name");&lt;br /&gt;&lt;br /&gt;if ((val != null) &amp;amp;&amp;amp; (val.trim().length() &amp;gt; 0)) {&lt;br /&gt;out&lt;br /&gt;.println("&amp;lt;FONT size=+1 color=red&amp;gt; Greeting from StatelessSessionBean: &amp;lt;/FONT&amp;gt; "&lt;br /&gt;+ sless.sayHelloARS(val) + "&amp;lt;br&amp;gt;");&lt;br /&gt;}&lt;br /&gt;out.println("&amp;lt;/BODY&amp;gt; &amp;lt;/HTML&amp;gt; ");&lt;br /&gt;&lt;br /&gt;} catch (Exception ex) {&lt;br /&gt;ex.printStackTrace();&lt;br /&gt;System.out.println("webclient servlet test failed");&lt;br /&gt;throw new ServletException(ex);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;4.1 It will give IDE and compile error for the EJB because currently the dynamic web application does not see the EJB application.&lt;br /&gt;4.2 Right click on the dynamic web application and check that Project references indicates ejb and ejbClient applications as referred.&lt;br /&gt;4.3 Go to the Java Build Path and click on the Projects tab. Add the ejb and ejbClient applications.&lt;br /&gt;4.4 The IDE – compile error for the EJB disappears.&lt;br /&gt;5. You may also check yhe ear application for the same items but they are done automatically for it.&lt;br /&gt;6. Make sure you test the application in an orderly manner. Build the EAR application and also build the others if necessary. When you run the war application the calculator works as default. If you run&lt;br /&gt;&lt;a href="http://localhost:8080/ServletStatelessARS-war/servlet"&gt;http://localhost:8080/ServletStatelessARS-war/servlet&lt;/a&gt; then the hello message works.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-N6sczAiZjcQ/Tt0qqtUj61I/AAAAAAAAAjA/20LRQOnSJkg/s1600/EclipseGlassfishEE4.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 286px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5682745218020141906" border="0" alt="" src="http://1.bp.blogspot.com/-N6sczAiZjcQ/Tt0qqtUj61I/AAAAAAAAAjA/20LRQOnSJkg/s400/EclipseGlassfishEE4.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-HAe5FymARMQ/Tt0qm4x-KII/AAAAAAAAAi0/s319vM4OrCo/s1600/EclipseGlassfishEE5.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 154px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5682745152376809602" border="0" alt="" src="http://1.bp.blogspot.com/-HAe5FymARMQ/Tt0qm4x-KII/AAAAAAAAAi0/s319vM4OrCo/s400/EclipseGlassfishEE5.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;7. If you experience any problems export the ear application to a war file at the&lt;br /&gt;C:\Program Files\glassfish-3.1\glassfish\domains\domain1\autodeploy&lt;br /&gt;Autodeploy directory of Glassfish. Then restart Glassfish, everything will be OK.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It is free of charge to request a copy of the source files. I am sometimes hecticly busy but I promise to respond in a couple of hours.&lt;br /&gt;&lt;br /&gt;Cheers.&lt;br /&gt;&lt;br /&gt;Ali R+ SARAL&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-3831225627578118772?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/3831225627578118772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/3831225627578118772'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/12/eclipse-glassfish-ee-example.html' title='Eclipse Glassfish EE example'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-O4qbk9r_66Q/Tt0q2sqvqEI/AAAAAAAAAjk/VvLqZ8Gmha8/s72-c/EclipseGlassfishEE1.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-4885076986761229807</id><published>2011-12-04T11:17:00.000-08:00</published><updated>2011-12-04T11:23:08.817-08:00</updated><title type='text'>Referring to another project using Eclipse</title><content type='html'>There are two seperate projects. Main project calls a method in the ReferredProject.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-kkmjH8BApyM/TtvH0Ee2I_I/AAAAAAAAAio/PbQQc199NS0/s1600/EclipseReferringAnotherProject1.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 230px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5682355052228256754" border="0" alt="" src="http://4.bp.blogspot.com/-kkmjH8BApyM/TtvH0Ee2I_I/AAAAAAAAAio/PbQQc199NS0/s400/EclipseReferringAnotherProject1.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;ReferredProject has &lt;br /&gt;referredProjectPackage/ReferenceClass.java&lt;br /&gt;package referredProjectPackage;&lt;br /&gt;&lt;br /&gt;public class ReferenceClass {&lt;br /&gt;public void sayHello(){&lt;br /&gt;System.out.println("Hello from the reference class.");&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;MainProject has&lt;br /&gt;mainPackage/MainClass.java&lt;br /&gt;package mainPackage;&lt;br /&gt;import referredProjectPackage.*;&lt;br /&gt;&lt;br /&gt;public class MainClass {&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* @param args&lt;br /&gt;*/&lt;br /&gt;public static void main(String[] args) {&lt;br /&gt;// TODO Auto-generated method stub&lt;br /&gt;System.out.println("MainClass works.");&lt;br /&gt;ReferenceClass rc = new ReferenceClass();&lt;br /&gt;rc.sayHello();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;It gives error:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-nWj8HPBEBu4/TtvHv2PlwEI/AAAAAAAAAic/rxHMONvb2Ew/s1600/EclipseReferringAnotherProject2.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 142px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5682354979686694978" border="0" alt="" src="http://2.bp.blogspot.com/-nWj8HPBEBu4/TtvHv2PlwEI/AAAAAAAAAic/rxHMONvb2Ew/s400/EclipseReferringAnotherProject2.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;Right Click on the MainProject in the PackageExplorer. Select properties at the bottom. Properties for the MainProject window opens. Select JAVA build path and then select the Projects tab.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-LUi0C643_ng/TtvHrQ5TjPI/AAAAAAAAAiQ/CB2MkF8-JR8/s1600/EclipseReferringAnotherProject3.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 268px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5682354900941638898" border="0" alt="" src="http://2.bp.blogspot.com/-LUi0C643_ng/TtvHrQ5TjPI/AAAAAAAAAiQ/CB2MkF8-JR8/s400/EclipseReferringAnotherProject3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;Select ReferredProject and then click OK. The errors disappear and the program works.&lt;br /&gt;But to be on the safe side, do not forget to do also:&lt;br /&gt;Right click on the MainProject, select Project References, select ReferredProject and click OK.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-4885076986761229807?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/4885076986761229807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/4885076986761229807'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/12/referring-to-another-project-using.html' title='Referring to another project using Eclipse'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-kkmjH8BApyM/TtvH0Ee2I_I/AAAAAAAAAio/PbQQc199NS0/s72-c/EclipseReferringAnotherProject1.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-6851977662621409369</id><published>2011-12-03T11:30:00.000-08:00</published><updated>2011-12-03T11:49:00.198-08:00</updated><title type='text'>How to use Eclipse with GlassFish server(2)</title><content type='html'>&lt;div&gt;13- Right Click on the application name and slide to the bottom and select ‘properties’ for our web app TestEclipseGlassFishARS.&lt;br /&gt;&lt;br /&gt;14- Select libraries and observe the source of the problem.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-yTzp2fZvT98/Ttp5h50Gr6I/AAAAAAAAAg8/srHVjfjV3E0/s1600/TestEclipseGlassfishARS14.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 233px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681987503243308962" border="0" alt="" src="http://2.bp.blogspot.com/-yTzp2fZvT98/Ttp5h50Gr6I/AAAAAAAAAg8/srHVjfjV3E0/s400/TestEclipseGlassfishARS14.jpg" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;15- Select JRE System Library and click the edit button on the right.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/--cVODqAfCR8/Ttp5czE90bI/AAAAAAAAAgw/niMKdXfowEU/s1600/TestEclipseGlassfishARS15.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 269px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681987415535636914" border="0" alt="" src="http://1.bp.blogspot.com/--cVODqAfCR8/Ttp5czE90bI/AAAAAAAAAgw/niMKdXfowEU/s400/TestEclipseGlassfishARS15.jpg" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;16- Click the Add button the Installed JREs window.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/-znrI05LCqDI/Ttp5X-InUcI/AAAAAAAAAgk/9-Hki1NBNU0/s1600/TestEclipseGlassfishARS16.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 245px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681987332604383682" border="0" alt="" src="http://3.bp.blogspot.com/-znrI05LCqDI/Ttp5X-InUcI/AAAAAAAAAgk/9-Hki1NBNU0/s400/TestEclipseGlassfishARS16.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;17- Select Standard VM on the JRE type window.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/-Zyzdp0InGVg/Ttp5TF1CreI/AAAAAAAAAgY/wdHZLmpNs0o/s1600/TestEclipseGlassfishARS17.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 238px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681987248770428386" border="0" alt="" src="http://3.bp.blogspot.com/-Zyzdp0InGVg/Ttp5TF1CreI/AAAAAAAAAgY/wdHZLmpNs0o/s400/TestEclipseGlassfishARS17.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;18- The JRE Definition window opens. Select JRE Home using the directory button and go to the JDK 1.6 installation directory.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/-cAwzOMnx4Sk/Ttp5OPFm6PI/AAAAAAAAAgM/Vk6en42Af7U/s1600/TestEclipseGlassfishARS18.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 244px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681987165356484850" border="0" alt="" src="http://3.bp.blogspot.com/-cAwzOMnx4Sk/Ttp5OPFm6PI/AAAAAAAAAgM/Vk6en42Af7U/s400/TestEclipseGlassfishARS18.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;19- Your choice fills in all the necessary fields on the JRE Definition window. Click the finish button.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-ckwKDFhY8Uo/Ttp7CL1p1BI/AAAAAAAAAiE/jJw2G408OW0/s1600/TestEclipseGlassfishARS19.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 243px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681989157349086226" border="0" alt="" src="http://2.bp.blogspot.com/-ckwKDFhY8Uo/Ttp7CL1p1BI/AAAAAAAAAiE/jJw2G408OW0/s400/TestEclipseGlassfishARS19.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;20- Installed JRE’s window appears again with the newly added JDK 1.6 directory.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-MLu8wk2uoAQ/Ttp67NOHDRI/AAAAAAAAAh4/ZgE117Qot2U/s1600/TestEclipseGlassfishARS20.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 144px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681989037461015826" border="0" alt="" src="http://4.bp.blogspot.com/-MLu8wk2uoAQ/Ttp67NOHDRI/AAAAAAAAAh4/ZgE117Qot2U/s400/TestEclipseGlassfishARS20.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;21- Select JDK 1.6 and return back to the JRE System Library window which also has the new addition as seen in the picture. Select JDK 1.6 as Alternate JRE and then click Finish.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-AnnbT3jgrbs/Ttp62lWdDeI/AAAAAAAAAhs/aOLGhESjIHs/s1600/TestEclipseGlassfishARS21.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 296px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681988958039117282" border="0" alt="" src="http://4.bp.blogspot.com/-AnnbT3jgrbs/Ttp62lWdDeI/AAAAAAAAAhs/aOLGhESjIHs/s400/TestEclipseGlassfishARS21.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;22- JRE System Library is now changed to JDK 1.6 as required by GlassFish.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-6p4bBWp_y3s/Ttp6xa5guLI/AAAAAAAAAhg/7FrmGWZnEek/s1600/TestEclipseGlassfishARS22.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 234px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681988869334022322" border="0" alt="" src="http://2.bp.blogspot.com/-6p4bBWp_y3s/Ttp6xa5guLI/AAAAAAAAAhg/7FrmGWZnEek/s400/TestEclipseGlassfishARS22.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;23- Try once more to run the test web app. It works. Don’t g’ve up! You will make it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-lSiV46sWuKs/Ttp6s4UCFyI/AAAAAAAAAhU/CoEyv1cWwxY/s1600/TestEclipseGlassfishARS23.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 218px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681988791330543394" border="0" alt="" src="http://2.bp.blogspot.com/-lSiV46sWuKs/Ttp6s4UCFyI/AAAAAAAAAhU/CoEyv1cWwxY/s400/TestEclipseGlassfishARS23.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;Cheers.&lt;br /&gt;&lt;br /&gt;Ali R+ SARAL&lt;br /&gt;&lt;br /&gt;Note: I know that the picture quality may not prove to be good. If you like you may obtain a Word format of this tutorial for free from arsaral(at)yahoo.com. Sometimes I may be hecticly busy but I promise a response with in a couple of hours.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-6851977662621409369?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/6851977662621409369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/6851977662621409369'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/12/how-to-use-eclipse-with-glassfish_03.html' title='How to use Eclipse with GlassFish server(2)'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-yTzp2fZvT98/Ttp5h50Gr6I/AAAAAAAAAg8/srHVjfjV3E0/s72-c/TestEclipseGlassfishARS14.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-4954489068328460526</id><published>2011-12-03T10:51:00.000-08:00</published><updated>2011-12-03T11:26:53.343-08:00</updated><title type='text'>How to use Eclipse with GlassFish server (1)</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;div&gt;I am going to explain how to use Eclipse with Glassfish as a server. This tutorial uses a very simple, picture based approach. So trust me and take my advises you will make it to the end for sure.&lt;br /&gt;1- Create a dynamic web project:&lt;br /&gt;Open eclipse, file, new, [web], dynamic web project &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-wbfyh8eTiSg/TtpwL3xSSoI/AAAAAAAAAdA/44ISz1atqus/s1600/TestEclipseGlassfishARS1.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 284px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681977229132843650" border="0" alt="" src="http://2.bp.blogspot.com/-wbfyh8eTiSg/TtpwL3xSSoI/AAAAAAAAAdA/44ISz1atqus/s400/TestEclipseGlassfishARS1.jpg" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;2- Create a new server&lt;br /&gt;Go to bottom right frame, select servers, right click in the frame content area, server, new&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/-i7r01O9JOIg/TtpxRZfYdBI/AAAAAAAAAeI/gC2BNsNb54A/s1600/TestEclipseGlassfishARS2.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 189px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681978423595529234" border="0" alt="" src="http://2.bp.blogspot.com/-i7r01O9JOIg/TtpxRZfYdBI/AAAAAAAAAeI/gC2BNsNb54A/s400/TestEclipseGlassfishARS2.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;3- If GlassFish connection has been made for your Eclipse installation previously you will get this picture. But in your case, GlassFish will not appear.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/--UZ2hUr8xco/TtpyFDZW3dI/AAAAAAAAAeU/l4BELhiKOxI/s1600/TestEclipseGlassfishARS3.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 234px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681979311017876946" border="0" alt="" src="http://3.bp.blogspot.com/--UZ2hUr8xco/TtpyFDZW3dI/AAAAAAAAAeU/l4BELhiKOxI/s400/TestEclipseGlassfishARS3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4- Click ‘Download additional web servers’. It will open ‘ install new extension’ window and begin searching the internet. This will take a long time.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-LBdtK_hhFfc/TtpyJ-lOVRI/AAAAAAAAAeg/5CLmBXS5jmo/s1600/TestEclipseGlassfishARS4.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 100px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681979395624817938" border="0" alt="" src="http://2.bp.blogspot.com/-LBdtK_hhFfc/TtpyJ-lOVRI/AAAAAAAAAeg/5CLmBXS5jmo/s400/TestEclipseGlassfishARS4.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5- Be patient and wait till the end when finally it finds GlassFish and Jboss.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Jpr_TarG-08/TtpzFTcScnI/AAAAAAAAAe4/B5xt7uBEZ4M/s1600/TestEclipseGlassfishARS5.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 192px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681980414836765298" border="0" alt="" src="http://4.bp.blogspot.com/-Jpr_TarG-08/TtpzFTcScnI/AAAAAAAAAe4/B5xt7uBEZ4M/s400/TestEclipseGlassfishARS5.jpg" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;6- Select GlassFish and see that the previous window has the GlassFish items now.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-212jznWyYdQ/TtpzAu1e-eI/AAAAAAAAAes/uQvbiNHipuc/s1600/TestEclipseGlassfishARS6.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 232px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681980336290855394" border="0" alt="" src="http://1.bp.blogspot.com/-212jznWyYdQ/TtpzAu1e-eI/AAAAAAAAAes/uQvbiNHipuc/s400/TestEclipseGlassfishARS6.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;7- Select GlassFish 3.1 and a new screen taht asks for the location of Glassfish on your computer opens. It also calls for your choice of jre.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-K0yGvZlXtaE/Ttp0vgOeusI/AAAAAAAAAgA/0ArTXtcziZo/s1600/TestEclipseGlassfishARS7.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 234px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681982239334644418" border="0" alt="" src="http://1.bp.blogspot.com/-K0yGvZlXtaE/Ttp0vgOeusI/AAAAAAAAAgA/0ArTXtcziZo/s400/TestEclipseGlassfishARS7.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;8- Then you are asked for the admin directory and the admin password which happens to be adminadmin&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/-c3VNcHMdPyE/Ttp0rrHOn-I/AAAAAAAAAf0/QX-WpdjA5LA/s1600/TestEclipseGlassfishARS8.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 233px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681982173537542114" border="0" alt="" src="http://1.bp.blogspot.com/-c3VNcHMdPyE/Ttp0rrHOn-I/AAAAAAAAAf0/QX-WpdjA5LA/s400/TestEclipseGlassfishARS8.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;9- Now it is time to try the very simple dynamic web program that we have created.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-pIRs4cq4K88/Ttp0nt4169I/AAAAAAAAAfo/X89WG8FBaWg/s1600/TestEclipseGlassfishARS9.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 233px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681982105563032530" border="0" alt="" src="http://4.bp.blogspot.com/-pIRs4cq4K88/Ttp0nt4169I/AAAAAAAAAfo/X89WG8FBaWg/s400/TestEclipseGlassfishARS9.jpg" /&gt;&lt;/a&gt;Do not forget to put index.jsp as a welcome file in the web.xml.&lt;br /&gt;Index.jsp is on the picture.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;10. Run the webapp on the new server.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-JR27nu44bbI/Ttp0j4QYNWI/AAAAAAAAAfc/JhKkg_vZbGg/s1600/TestEclipseGlassfishARS10.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 243px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681982039626626402" border="0" alt="" src="http://4.bp.blogspot.com/-JR27nu44bbI/Ttp0j4QYNWI/AAAAAAAAAfc/JhKkg_vZbGg/s400/TestEclipseGlassfishARS10.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;11- Select Glassfish&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-lg6yAc97tj0/Ttp0fWLYTPI/AAAAAAAAAfQ/-_rKtF_Gbcs/s1600/TestEclipseGlassfishARS11.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 267px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681981961759378674" border="0" alt="" src="http://2.bp.blogspot.com/-lg6yAc97tj0/Ttp0fWLYTPI/AAAAAAAAAfQ/-_rKtF_Gbcs/s400/TestEclipseGlassfishARS11.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;12- ERROR: Glassfish requires JDK 1.6 and not a JRE.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-X4YF42R1yT0/Ttp0beeYTBI/AAAAAAAAAfE/qeoatvVhN30/s1600/TestEclipseGlassfishARS12.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 217px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5681981895267077138" border="0" alt="" src="http://2.bp.blogspot.com/-X4YF42R1yT0/Ttp0beeYTBI/AAAAAAAAAfE/qeoatvVhN30/s400/TestEclipseGlassfishARS12.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can request a better printed World version of this tutorial from arsaral(at)yahoo.com&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The pictures are much better and scripts can be easily read in that version.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-4954489068328460526?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/4954489068328460526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/4954489068328460526'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/12/how-to-use-eclipse-with-glassfish.html' title='How to use Eclipse with GlassFish server (1)'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-wbfyh8eTiSg/TtpwL3xSSoI/AAAAAAAAAdA/44ISz1atqus/s72-c/TestEclipseGlassfishARS1.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-1121293042787270234</id><published>2011-09-25T10:48:00.000-07:00</published><updated>2011-10-02T00:55:34.884-07:00</updated><title type='text'>Struts2 Hibernate Spring Tutorial</title><content type='html'>Struts - Hibernate - Spring Application&lt;br /&gt;&lt;br /&gt;This is a tutorial that explains how Struts2 , Hibernate and Spring(IoC) is mixed together and used in the same application.&lt;br /&gt;&lt;br /&gt;I based my work on the examples given in Vaan Nila Struts2 tutorial. Vaan Nila gives the Struts2Example14 for Struts2 - Spring and Struts2Example17 for Struts2 - Hibernate.&lt;br /&gt;&lt;br /&gt;My trick is: I took the Struts2Example17 project and added it the lib/jars of the Struts2Example14. Then I changed the struts.xml from:&lt;br /&gt;&lt;action class="com.vaannila.web.UserAction" method="list" name="listUser"&gt;&lt;br /&gt;&lt;result name="success"&gt;/register.jsp&lt;/result&gt; &lt;/action&gt;&lt;br /&gt;to: (my StrutsHibernateSpring application)&lt;br /&gt;&lt;action class="userActionClass" method="list" name="listUser"&gt;&lt;br /&gt;&lt;result name="success"&gt;/register.jsp&lt;/result&gt;&lt;br /&gt;&lt;/action&gt;&lt;br /&gt;&lt;br /&gt;Similar Struts2Example14 's WEB-INF/applicationContext.xml:&lt;br /&gt;&lt;beans&gt;&lt;br /&gt;&lt;bean id="helloWorldClass" class="com.vaannila.HelloWorld"&gt;&lt;br /&gt;&lt;property name="message" value="Hello World!"&gt;&lt;/property&gt;&lt;br /&gt;&lt;/bean&gt;&lt;br /&gt;&lt;/beans&gt;&lt;br /&gt;I did WEB-INF/applicationContext.xml in StrutsHibernateSpring:&lt;br /&gt;&lt;beans&gt;&lt;br /&gt;&lt;bean id="userActionClass" class="com.vaannila.web.UserAction"&gt;&lt;br /&gt;&lt;/bean&gt;&lt;br /&gt;&lt;/beans&gt;&lt;br /&gt;&lt;br /&gt;I also added the Spring listener to the web.xml in StrutsHibernateSpring :&lt;br /&gt;&lt;listener&gt;&lt;br /&gt;&lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/LISTENER-CLASS&gt;&lt;br /&gt;&lt;/listener&gt;&lt;br /&gt;which is similar to the Struts2Example14 web.xml.&lt;br /&gt;&lt;br /&gt;It worked.&lt;br /&gt;&lt;br /&gt;Here is the code:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;struts.xml&lt;br /&gt;"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"&lt;br /&gt;"http://struts.apache.org/dtds/struts-2.0.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;struts&gt;&lt;br /&gt;&lt;package name="default" extends="struts-default,hibernate-default"&gt;&lt;br /&gt;&lt;action class="com.vaannila.web.UserAction" method="add" name="addUser"&gt;&lt;br /&gt;&lt;result name="success" type="redirect"&gt;listUser&lt;/result&gt;&lt;br /&gt;&lt;/action&gt;&lt;br /&gt;&lt;br /&gt;&lt;action class="userActionClass" method="list" name="listUser"&gt;&lt;br /&gt;&lt;result name="success"&gt;/register.jsp&lt;/result&gt;&lt;br /&gt;&lt;/action&gt;&lt;br /&gt;&lt;/package&gt;&lt;br /&gt;&lt;/struts&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;hibernate.config.xml&lt;br /&gt;&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt;"-//Hibernate/Hibernate Configuration DTD 3.0//EN"&lt;br /&gt;"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&amp;gt;&lt;br /&gt;&lt;hibernate-configuration&gt;&lt;br /&gt;&lt;session-factory&gt;&lt;br /&gt;&lt;property name="hibernate.connection.driver_class"&gt;org.hsqldb.jdbcDriver&lt;/property&gt;&lt;br /&gt;&lt;property name="hibernate.connection.url"&gt;jdbc:hsqldb:hsql://localhost&lt;/property&gt;&lt;br /&gt;&lt;property name="hibernate.connection.username"&gt;sa&lt;/property&gt;&lt;br /&gt;&lt;property name="connection.password"&gt;&lt;/property&gt;&lt;br /&gt;&lt;property name="connection.pool_size"&gt;1&lt;/property&gt;&lt;br /&gt;&lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.HSQLDialect&lt;/property&gt;&lt;br /&gt;&lt;property name="show_sql"&gt;true&lt;/property&gt;&lt;br /&gt;&lt;property name="hbm2ddl.auto"&gt;create&lt;/property&gt;&lt;br /&gt;&lt;mapping class="com.vaannila.domain.User"&gt;&lt;br /&gt;&lt;/SESSION-FACTORY&gt;&lt;br /&gt;&lt;/HIBERNATE-CONFIGURATION&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;com.vaannila.dao&lt;br /&gt;UserDAO.java&lt;br /&gt;package com.vaannila.dao;&lt;br /&gt;&lt;br /&gt;import java.util.List;&lt;br /&gt;import com.vaannila.domain.User;&lt;br /&gt;&lt;br /&gt;public interface UserDAO {&lt;br /&gt;&lt;br /&gt;public void saveUser(User user);&lt;br /&gt;public List&lt;user&gt; listUser();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;UserDAOImpl.java&lt;br /&gt;package com.vaannila.dao;&lt;br /&gt;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;import org.hibernate.Session;&lt;br /&gt;import org.hibernate.Transaction;&lt;br /&gt;&lt;br /&gt;import com.googlecode.s2hibernate.struts2.plugin.annotations.SessionTarget;&lt;br /&gt;import com.googlecode.s2hibernate.struts2.plugin.annotations.TransactionTarget;&lt;br /&gt;import com.vaannila.domain.User;&lt;br /&gt;&lt;br /&gt;public class UserDAOImpl implements UserDAO {&lt;br /&gt;&lt;br /&gt;@SessionTarget&lt;br /&gt;Session session;&lt;br /&gt;@TransactionTarget&lt;br /&gt;Transaction transaction;&lt;br /&gt;&lt;br /&gt;@SuppressWarnings("unchecked")&lt;br /&gt;@Override&lt;br /&gt;public List&lt;user&gt; listUser() {&lt;br /&gt;List&lt;user&gt; courses = null;&lt;br /&gt;try {&lt;br /&gt;courses = session.createQuery("from User").list();&lt;br /&gt;} catch (Exception e) {&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;return courses;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;public void saveUser(User user) {&lt;br /&gt;try {&lt;br /&gt;session.save(user);&lt;br /&gt;} catch (Exception e) {&lt;br /&gt;transaction.rollback();&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;com.vaannila.domain&lt;br /&gt;User.java&lt;br /&gt;package com.vaannila.domain;&lt;br /&gt;&lt;br /&gt;import javax.persistence.Column;&lt;br /&gt;import javax.persistence.Entity;&lt;br /&gt;import javax.persistence.GeneratedValue;&lt;br /&gt;import javax.persistence.Id;&lt;br /&gt;import javax.persistence.Table;&lt;br /&gt;&lt;br /&gt;@Entity&lt;br /&gt;@Table(name="USER")&lt;br /&gt;public class User {&lt;br /&gt;&lt;br /&gt;private Long id;&lt;br /&gt;private String name;&lt;br /&gt;private String password;&lt;br /&gt;private String gender;&lt;br /&gt;private String country;&lt;br /&gt;private String aboutYou;&lt;br /&gt;private Boolean mailingList;&lt;br /&gt;&lt;br /&gt;@Id&lt;br /&gt;@GeneratedValue&lt;br /&gt;@Column(name="USER_ID")&lt;br /&gt;public Long getId() {&lt;br /&gt;return id;&lt;br /&gt;}&lt;br /&gt;public void setId(Long id) {&lt;br /&gt;this.id = id;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Column(name="USER_NAME")&lt;br /&gt;public String getName() {&lt;br /&gt;return name;&lt;br /&gt;}&lt;br /&gt;public void setName(String name) {&lt;br /&gt;this.name = name;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Column(name="USER_PASSWORD")&lt;br /&gt;public String getPassword() {&lt;br /&gt;return password;&lt;br /&gt;}&lt;br /&gt;public void setPassword(String password) {&lt;br /&gt;this.password = password;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Column(name="USER_GENDER")&lt;br /&gt;public String getGender() {&lt;br /&gt;return gender;&lt;br /&gt;}&lt;br /&gt;public void setGender(String gender) {&lt;br /&gt;this.gender = gender;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Column(name="USER_COUNTRY")&lt;br /&gt;public String getCountry() {&lt;br /&gt;return country;&lt;br /&gt;}&lt;br /&gt;public void setCountry(String country) {&lt;br /&gt;this.country = country;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Column(name="USER_ABOUT_YOU")&lt;br /&gt;public String getAboutYou() {&lt;br /&gt;return aboutYou;&lt;br /&gt;}&lt;br /&gt;public void setAboutYou(String aboutYou) {&lt;br /&gt;this.aboutYou = aboutYou;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Column(name="USER_MAILING_LIST")&lt;br /&gt;public Boolean getMailingList() {&lt;br /&gt;return mailingList;&lt;br /&gt;}&lt;br /&gt;public void setMailingList(Boolean mailingList) {&lt;br /&gt;this.mailingList = mailingList;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;WebContent&lt;br /&gt;WEB-INF&lt;br /&gt;lib&lt;br /&gt;application-Context.xml&lt;br /&gt;&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt;&lt;br /&gt;&lt;beans&gt;&lt;br /&gt;&lt;bean id="userActionClass" class="com.vaannila.web.UserAction"&gt;&lt;br /&gt;&lt;/bean&gt;&lt;br /&gt;&lt;/beans&gt;&lt;br /&gt;&lt;br /&gt;web.xml&lt;br /&gt;&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt;&lt;?XML:NAMESPACE PREFIX = [default] http://java.sun.com/xml/ns/javaee NS = "http://java.sun.com/xml/ns/javaee" /&gt;&lt;web-app id="WebApp_ID" version="2.5" schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns="http://java.sun.com/xml/ns/javaee" xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;&lt;br /&gt;&lt;display-name&gt;StrutsHibernateSpringARS&lt;/display-name&gt;&lt;br /&gt;&lt;filter&gt;&lt;br /&gt;&lt;filter-name&gt;struts2&lt;/filter-name&gt;&lt;br /&gt;&lt;filter-class&gt;&lt;br /&gt;org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&lt;/filter-class&gt;&lt;br /&gt;&lt;/filter&gt;&lt;br /&gt;&lt;listener&gt;&lt;br /&gt;&lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt;&lt;br /&gt;&lt;/listener&gt;&lt;br /&gt;&lt;filter-mapping&gt;&lt;br /&gt;&lt;filter-name&gt;struts2&lt;/filter-name&gt;&lt;br /&gt;&lt;url-pattern&gt;/*&lt;/url-pattern&gt;&lt;br /&gt;&lt;/filter-mapping&gt;&lt;br /&gt;&lt;br /&gt;&lt;welcome-file-list&gt;&lt;br /&gt;&lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;&lt;br /&gt;&lt;/welcome-file-list&gt;&lt;br /&gt;&lt;/web-app&gt;&lt;br /&gt;&lt;br /&gt;WebContent&lt;br /&gt;hs.bat&lt;br /&gt;set classpath=.\WEB-INF\lib\hsqldb.jar;%classpath%&lt;br /&gt;java org.hsqldb.Server&lt;br /&gt;hs2.bat&lt;br /&gt;java -cp ./WEB-INF/lib/hsqldb.jar org.hsqldb.util.DatabaseManager&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I went one step further and I did a DAO dependency injection in my application StrHibSprARS2.&lt;br /&gt;applicationContext.xml in src together with hibernate.cfg.xml and struts.xml&lt;br /&gt;&lt;br /&gt;&lt;beans&gt;&lt;br /&gt;&lt;bean id="userActionClass" class="com.vaannila.web.UserAction"&gt;&lt;br /&gt;&lt;/bean&gt;&lt;br /&gt;&lt;bean id="userDAOImplClass" class="com.vaannila.dao.UserDAOImpl"&gt;&lt;br /&gt;&lt;/bean&gt;&lt;br /&gt;&lt;/beans&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(It would be wiser to change the name of the applicationContext.xml to beans.xml.)&lt;br /&gt;UserAction.java would change to:&lt;br /&gt;...&lt;br /&gt;//private UserDAO userDAO = new UserDAOImpl();&lt;br /&gt;&lt;br /&gt;XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));&lt;br /&gt;private UserDAO userDAO = (UserDAOImpl) factory.getBean("userDAOImplClass");&lt;br /&gt;...&lt;br /&gt;(again the name applicationContext.xml gets mixed with the real one in the WEB-INF. I tried&lt;br /&gt;successfully to clean up the unnecessary entries in these two applicationContext files, namely&lt;br /&gt;I deleted id="userActionClass" item from the src beans.xml and vise versa. No problem.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-1121293042787270234?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/1121293042787270234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/1121293042787270234'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/09/struts2-hibernate-spring-tutorial.html' title='Struts2 Hibernate Spring Tutorial'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-3490569281522590174</id><published>2011-09-13T10:36:00.000-07:00</published><updated>2011-09-13T10:37:20.177-07:00</updated><title type='text'>Some notes about VaanNila's Hibernate Tutorial Examples</title><content type='html'>This note explains how to run the hibernate examples given&lt;br /&gt;in VaanNila's Hibernate Tutorial.&lt;br /&gt;http://www.vaannila.com/hibernate/hibernate-tutorial/hibernate-tutorial.html&lt;br /&gt;&lt;br /&gt;ERRORS MESSAGES AND THE SOLUTIONS:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Initial SessionFactory creation failed.java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory&lt;br /&gt;Exception in thread "main" java.lang.ExceptionInInitializerError&lt;br /&gt; at com.vaannila.util.HibernateUtil.&lt;clinit&gt;(HibernateUtil.java:14)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;add commons-logging-1.1.1&lt;br /&gt;------------------------------------&lt;br /&gt;12.Eyl.2011 20:08:36 org.hibernate.cfg.Environment &lt;clinit&gt;&lt;br /&gt;INFO: Hibernate 3.2.5&lt;br /&gt;12.Eyl.2011 20:08:36 org.hibernate.cfg.Environment &lt;clinit&gt;&lt;br /&gt;INFO: hibernate.properties not found&lt;br /&gt;12.Eyl.2011 20:08:36 org.hibernate.cfg.Environment buildBytecodeProvider&lt;br /&gt;INFO: Bytecode provider name : cglib&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;INFO: building session factory&lt;br /&gt;Initial SessionFactory creation failed.java.lang.NoClassDefFoundError: net/sf/cglib/proxy/CallbackFilter&lt;br /&gt;Exception in thread "main" java.lang.ExceptionInInitializerError&lt;br /&gt; at com.vaannila.util.HibernateUtil.&lt;clinit&gt;(HibernateUtil.java:14)&lt;br /&gt;&lt;br /&gt;cglib problem&lt;br /&gt;add cglib.jar&lt;br /&gt;-------------------------------&lt;br /&gt;12.Eyl.2011 20:10:55 org.hibernate.impl.SessionFactoryImpl &lt;init&gt;&lt;br /&gt;INFO: building session factory&lt;br /&gt;Initial SessionFactory creation failed.java.lang.NoClassDefFoundError: org/objectweb/asm/Type&lt;br /&gt;&lt;br /&gt;cglib needs asm.jar&lt;br /&gt;-------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;INFO: exporting generated schema to database&lt;br /&gt;12.Eyl.2011 20:12:25 org.hibernate.tool.hbm2ddl.SchemaExport execute&lt;br /&gt;INFO: schema export complete&lt;br /&gt;Hibernate: insert into COURSES (COURSE_ID, COURSE_NAME) values (null, ?)&lt;br /&gt;Hibernate: call identity()&lt;br /&gt;Hibernate: insert into COURSES (COURSE_ID, COURSE_NAME) values (null, ?)&lt;br /&gt;Hibernate: call identity()&lt;br /&gt;Hibernate: insert into COURSES (COURSE_ID, COURSE_NAME) values (null, ?)&lt;br /&gt;Hibernate: call identity()&lt;br /&gt;Hibernate: select course0_.COURSE_ID as COURSE1_0_, course0_.COURSE_NAME as COURSE2_0_ from COURSES course0_&lt;br /&gt;Physics&lt;br /&gt;Chemistry&lt;br /&gt;Maths&lt;br /&gt;Hibernate: select course0_.COURSE_ID as COURSE1_0_0_, course0_.COURSE_NAME as COURSE2_0_0_ from COURSES course0_ where course0_.COURSE_ID=?&lt;br /&gt;Hibernate: update COURSES set COURSE_NAME=? where COURSE_ID=?&lt;br /&gt;Hibernate: select course0_.COURSE_ID as COURSE1_0_0_, course0_.COURSE_NAME as COURSE2_0_0_ from COURSES course0_ where course0_.COURSE_ID=?&lt;br /&gt;Hibernate: delete from COURSES where COURSE_ID=?&lt;br /&gt;Hibernate: select course0_.COURSE_ID as COURSE1_0_, course0_.COURSE_NAME as COURSE2_0_ from COURSES course0_&lt;br /&gt;Physics&lt;br /&gt;Mathematics&lt;br /&gt;&lt;br /&gt;It works...&lt;br /&gt;-----------&lt;br /&gt;Directory of C:\Users\ars\Desktop\VN_Hibernate\HibernateExample1\lib&lt;br /&gt;&lt;br /&gt;antlr-2.7.6.jar&lt;br /&gt;asm.jar&lt;br /&gt;cglib-2.2.jar&lt;br /&gt;commons-collections-3.2.1.jar&lt;br /&gt;commons-logging-1.1.1.jar&lt;br /&gt;dom4j-1.6.1.jar&lt;br /&gt;hibernate3.jar&lt;br /&gt;hibernate-annotations&lt;br /&gt;hibernate-commons-annotations&lt;br /&gt;hsqldb.jar&lt;br /&gt;javassist-3.4.GA.jar&lt;br /&gt;jta-1.1.jar&lt;br /&gt;slf4j-api-1.6.2.jar&lt;br /&gt;slf4j-simple-1.6.2.jar&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-3490569281522590174?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/3490569281522590174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/3490569281522590174'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/09/some-notes-about-vaannilas-hibernate.html' title='Some notes about VaanNila&apos;s Hibernate Tutorial Examples'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-8143475675066609081</id><published>2011-09-09T12:29:00.001-07:00</published><updated>2011-09-09T12:33:23.039-07:00</updated><title type='text'>Some notes about VaanNila's Spring Hibernate Integration Tutorial</title><content type='html'>&lt;span style="font-size:85%;"&gt;Some notes about Vaanilla's Spring Hibernate Integration Tutorial&lt;br /&gt;http://www.vaannila.com/spring/spring-hibernate-integration-1.html&lt;br /&gt;&lt;br /&gt;SpringExample17 indicates the below list as necessary dependecies.&lt;br /&gt;&lt;br /&gt;01.antlr-2.7.6&lt;br /&gt;02.antlr-runtime-3.0&lt;br /&gt;03.commons-collections-3.1&lt;br /&gt;04.commons-dbcp&lt;br /&gt;05.commons-logging-1.0.4&lt;br /&gt;06.commons-pool&lt;br /&gt;07.dom4j-1.6.1&lt;br /&gt;08.ejb3-persistence&lt;br /&gt;09.hibernate3&lt;br /&gt;10.hibernate-annotations&lt;br /&gt;11.hibernate-commons-annotations&lt;br /&gt;12.hsqldb&lt;br /&gt;13.javassist-3.4.GA&lt;br /&gt;14.jstl&lt;br /&gt;15.jta-1.1&lt;br /&gt;16.org.springframework.asm-3.0.0.M3&lt;br /&gt;17.org.springframework.beans-3.0.0.M3&lt;br /&gt;18.org.springframework.context-3.0.0.M3&lt;br /&gt;19.org.springframework.context.support-3.0.0.M3&lt;br /&gt;20.org.springframework.core-3.0.0.M3&lt;br /&gt;21.org.springframework.expression-3.0.0.M3&lt;br /&gt;22.org.springframework.jdbc-3.0.0.M3&lt;br /&gt;23.org.springframework.orm-3.0.0.M3&lt;br /&gt;24.org.springframework.transaction-3.0.0.M3&lt;br /&gt;25.org.springframework.web-3.0.0.M3&lt;br /&gt;26.org.springframework.web.servlet-3.0.0.M3&lt;br /&gt;27.slf4j-api-1.5.6&lt;br /&gt;28.slf4j-simple-1.5.6&lt;br /&gt;29.standard&lt;br /&gt;&lt;br /&gt;I used the below list of dependecies:&lt;br /&gt;Directory of C:\Users\ars\Desktop\Str_Hib_Spr\SpringExample17\WebContent\WEB-INF\lib&lt;br /&gt;&lt;br /&gt;antlr-2.7.6.jar&lt;br /&gt;antlr-runtime-3.0.jar&lt;br /&gt;asm.jar&lt;br /&gt;cglib-2.2.jar&lt;br /&gt;commons-collections.jar&lt;br /&gt;commons-dbcp.jar&lt;br /&gt;commons-logging.jar&lt;br /&gt;commons-pool.jar&lt;br /&gt;dom4j-1.6.1.jar&lt;br /&gt;hibernate-annotations.jar&lt;br /&gt;hibernate-commons-annotations.jar&lt;br /&gt;hibernate3.jar&lt;br /&gt;hsqldb.jar&lt;br /&gt;javassist-3.4.GA.jar&lt;br /&gt;javax.persistence.jar&lt;br /&gt;javax.servlet_2.4.0.v200706111738.jar&lt;br /&gt;jstl.jar&lt;br /&gt;jta-1.1.jar&lt;br /&gt;org.springframework.asm-3.1.0.M2.jar&lt;br /&gt;org.springframework.beans-3.1.0.M2.jar&lt;br /&gt;org.springframework.context-3.1.0.M2.jar&lt;br /&gt;org.springframework.context.support-3.1.0.M2.jar&lt;br /&gt;org.springframework.core-3.1.0.M2.jar&lt;br /&gt;org.springframework.expression-3.1.0.M2.jar&lt;br /&gt;org.springframework.jdbc-3.1.0.M2.jar&lt;br /&gt;org.springframework.orm-3.1.0.M2.jar&lt;br /&gt;org.springframework.transaction-3.1.0.M2.jar&lt;br /&gt;org.springframework.web-3.1.0.M2.jar&lt;br /&gt;org.springframework.web.servlet-3.1.0.M2.jar&lt;br /&gt;slf4j-api-1.6.2.jar&lt;br /&gt;slf4j-simple-1.6.2.jar&lt;br /&gt;standard.jar&lt;br /&gt;&lt;br /&gt;I had to add asm.jar and cglib-2.2.jar because of the problems listed below.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;exception&lt;br /&gt;&lt;br /&gt;org.springframework.web.util.NestedServletException: Request processing failed;&lt;br /&gt;nested exception is org.springframework.jdbc.UncategorizedSQLException: Hibernate operation:&lt;br /&gt;Cannot open connection; uncategorized SQLException for SQL [???]; SQL state [null]; error code [0];&lt;br /&gt;Cannot create PoolableConnectionFactory (socket creation error);&lt;br /&gt;nested exception is org.apache.commons.dbcp.SQLNestedException:&lt;br /&gt;Cannot create PoolableConnectionFactory (socket creation error)&lt;br /&gt;&lt;br /&gt;root cause&lt;br /&gt;&lt;br /&gt;org.springframework.jdbc.UncategorizedSQLException: Hibernate operation:&lt;br /&gt;Cannot open connection; uncategorized SQLException for SQL [???];&lt;br /&gt;SQL state [null]; error code [0];&lt;br /&gt;Cannot create PoolableConnectionFactory (socket creation error);&lt;br /&gt;nested exception is org.apache.commons.dbcp.SQLNestedException:&lt;br /&gt;Cannot create PoolableConnectionFactory (socket creation error)&lt;br /&gt;&lt;br /&gt;SOLUTION:&lt;br /&gt;Vaanilla assumes that you know how to run HSQLDB :-)&lt;br /&gt;add hs.bat :&lt;br /&gt;set classpath=.\web-inf\lib\hsqldb.jar;%classpath%&lt;br /&gt;java org.hsqldb.Server&lt;br /&gt;&lt;br /&gt;OUTPUT:&lt;br /&gt;C:\Users\ars\Desktop\Str_Hib_Spr\SpringExample17\WebContent&amp;gt;set classpath=.\web-&lt;br /&gt;inf\lib\hsqldb.jar;&lt;br /&gt;&lt;br /&gt;C:\Users\ars\Desktop\Str_Hib_Spr\SpringExample17\WebContent&amp;gt;java org.hsqldb.Serv&lt;br /&gt;er&lt;br /&gt;[Server@6ac2a132]: [Thread[main,5,main]]: checkRunning(false) entered&lt;br /&gt;[Server@6ac2a132]: [Thread[main,5,main]]: checkRunning(false) exited&lt;br /&gt;[Server@6ac2a132]: Startup sequence initiated from main() method&lt;br /&gt;[Server@6ac2a132]: Loaded properties from [C:\Users\ars\Desktop\Str_Hib_Spr\Spri&lt;br /&gt;ngExample17\WebContent\server.properties]&lt;br /&gt;[Server@6ac2a132]: Initiating startup sequence...&lt;br /&gt;[Server@6ac2a132]: Server socket opened successfully in 358 ms.&lt;br /&gt;[Server@6ac2a132]: Database [index=0, id=0, db=file:test, alias=] opened sucessf&lt;br /&gt;ully in 156 ms.&lt;br /&gt;[Server@6ac2a132]: Startup sequence completed in 514 ms.&lt;br /&gt;[Server@6ac2a132]: 2011-09-09 20:21:26.494 HSQLDB server 1.8.0 is online&lt;br /&gt;[Server@6ac2a132]: To close normally, connect and execute SHUTDOWN SQL&lt;br /&gt;[Server@6ac2a132]: From command line, use [Ctrl]+[C] to abort abruptly&lt;br /&gt;----------------&lt;br /&gt;&lt;br /&gt;exception&lt;br /&gt;...&lt;br /&gt;SEVERE: Context initialization failed&lt;br /&gt;org.springframework.beans.factory.BeanCreationException:&lt;br /&gt;Error creating bean with name 'mySessionFactory' defined in ServletContext resource [/WEB-INF/dispatcher-servlet.xml]:&lt;br /&gt;Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError:&lt;br /&gt;net/sf/cglib/proxy/CallbackFilter&lt;br /&gt;...&lt;br /&gt;SEVERE: Servlet /SpringExample17 threw load() exception&lt;br /&gt;java.lang.ClassNotFoundException: net.sf.cglib.proxy.CallbackFilter&lt;br /&gt;&lt;br /&gt;SOLUTION:&lt;br /&gt;add cglib.jar&lt;br /&gt;--------------------&lt;br /&gt;&lt;br /&gt;exception&lt;br /&gt;&lt;br /&gt;root cause&lt;br /&gt;&lt;br /&gt;org.springframework.beans.factory.BeanCreationException:&lt;br /&gt;Error creating bean with name 'mySessionFactory' defined in ServletContext resource [/WEB-INF/dispatcher-servlet.xml]:&lt;br /&gt;Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError:&lt;br /&gt;Could not initialize class net.sf.cglib.proxy.Enhancer&lt;br /&gt;&lt;br /&gt;SOLUTION:&lt;br /&gt;cglib depends on asm.jar:&lt;br /&gt;&lt;br /&gt;add asm.jar&lt;br /&gt;---------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If there are any problems related to antlr add:&lt;br /&gt;antlr-2.7.5H3&lt;br /&gt;&lt;br /&gt;If there are still any more problems:&lt;br /&gt;arsaral [at] yahoo [dot] com&lt;br /&gt;&lt;br /&gt;Cheers.&lt;br /&gt;&lt;br /&gt;Ali R+&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-8143475675066609081?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/8143475675066609081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/8143475675066609081'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/09/some-notes-about-vaanillas-spring.html' title='Some notes about VaanNila&apos;s Spring Hibernate Integration Tutorial'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-6179569291591122377</id><published>2011-03-31T12:50:00.000-07:00</published><updated>2011-03-31T12:52:48.857-07:00</updated><title type='text'>Struts2 JQuery AjaxFORMS-4</title><content type='html'>Here comes some button set examples.  It is so simple that it can not be explained.  The AJAX-JSON call has to be pondered a bit.  &lt;br /&gt;&lt;br /&gt;The AJAX submit activates the jsonsample action. the data structures that are defined in the jsonsample and updated in the execute method can be accessed at AjaxForms10.jsp's &lt;br /&gt;...&lt;br /&gt;&amp;lt;sj:checkboxlist&lt;br /&gt;...&lt;br /&gt; list="languageList"&lt;br /&gt;...&lt;br /&gt;So, when the JsonSample.java works the list of the checkbox is set.&lt;br /&gt;&lt;br /&gt;struts.xml has the below entry for jsonsample:&lt;br /&gt;...&lt;br /&gt;&amp;lt;action name="jsonsample" class="ARS.JsonSample" method="execute"&amp;gt;&lt;br /&gt; &amp;lt;result type="json"&amp;gt;&amp;lt;/result&amp;gt;&lt;br /&gt;&amp;lt;/action&amp;gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;The full code is below:&lt;br /&gt;&lt;br /&gt;AjaxForms10.jsp&lt;br /&gt;---------------&lt;br /&gt;&amp;lt;%-- &lt;br /&gt;   Buttonset / Checkboxes&lt;br /&gt;&lt;br /&gt;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="sj" uri="/struts-jquery-tags"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;sj:head/&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        &amp;lt;div id="formResult"&amp;gt;formResult&amp;lt;/div&amp;gt;&lt;br /&gt;Buttonset that was populated from a List with String values.&lt;br /&gt;    &amp;lt;s:form id="form" action="echo" theme="xhtml"&amp;gt;&lt;br /&gt;       &amp;lt;sj:checkboxlist&lt;br /&gt;         id="checkboxbuttonset"&lt;br /&gt;               tooltip="Choose your Friends"&lt;br /&gt;               label="Friends"&lt;br /&gt;               list="{'Patrick', 'Jason', 'Jay', 'Toby', 'Rene'}"&lt;br /&gt;               name="echo"/&amp;gt;&lt;br /&gt;             &amp;lt;sj:submit&lt;br /&gt;              targets="formResult"&lt;br /&gt;              value="AJAX Submit"&lt;br /&gt;              indicator="indicator"&lt;br /&gt;              button="true"&lt;br /&gt;              /&amp;gt;&lt;br /&gt;    &amp;lt;/s:form&amp;gt;&lt;br /&gt;    &amp;lt;br/&amp;gt;&lt;br /&gt;    Buttonset that was populated from AJAX JSON Result.&lt;br /&gt;    &amp;lt;s:form id="form2" action="echo" theme="xhtml"&amp;gt;&lt;br /&gt;    &amp;lt;s:url id="remoteurl" action="jsonsample"/&amp;gt;&lt;br /&gt;    &amp;lt;sj:checkboxlist&lt;br /&gt;     href="%{remoteurl}"&lt;br /&gt;     id="remoteCheckboxlist"&lt;br /&gt;     name="echo"&lt;br /&gt;     list="languageList"&lt;br /&gt;     label="Language"&lt;br /&gt;    /&amp;gt;&lt;br /&gt;             &amp;lt;sj:submit&lt;br /&gt;              targets="formResult"&lt;br /&gt;              value="AJAX Submit"&lt;br /&gt;              indicator="indicator"&lt;br /&gt;              button="true"&lt;br /&gt;              /&amp;gt;&lt;br /&gt;   &amp;lt;/s:form&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;img id="indicator" src="images/indicator.gif" alt="Loading..." style="display:none"/&amp;gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;JsonSample.java&lt;br /&gt;---------------&lt;br /&gt;/*&lt;br /&gt; * To change this template, choose Tools | Templates&lt;br /&gt; * and open the template in the editor.&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;package ARS;&lt;br /&gt;&lt;br /&gt;import com.opensymphony.xwork2.Action;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;import java.util.List;&lt;br /&gt;import java.util.Map;&lt;br /&gt;&lt;br /&gt;import com.opensymphony.xwork2.ActionSupport;&lt;br /&gt;&lt;br /&gt;public class JsonSample extends ActionSupport{&lt;br /&gt;&lt;br /&gt;    private static final long serialVersionUID = -2223948287805083119L;&lt;br /&gt;    private List&amp;lt;String&amp;gt; languageList;&lt;br /&gt;    private List&amp;lt;ListValue&amp;gt; languageObjList;&lt;br /&gt;    private Map&amp;lt;String, String&amp;gt; languageMap;&lt;br /&gt;&lt;br /&gt;//    @Actions({&lt;br /&gt;//     @Action(&lt;br /&gt;//     value="/jsonsample",&lt;br /&gt;//     results={&lt;br /&gt;//     @Result(name="success",type="json")&lt;br /&gt;//     })&lt;br /&gt;//    })&lt;br /&gt;    public String execute() {&lt;br /&gt;&lt;br /&gt;      languageList = new ArrayList&amp;lt;String&amp;gt;();&lt;br /&gt;      languageObjList = new ArrayList&amp;lt;ListValue&amp;gt;();&lt;br /&gt;      languageMap = new HashMap&amp;lt;String, String&amp;gt;();&lt;br /&gt;&lt;br /&gt;      languageList.add("Java");&lt;br /&gt;      languageList.add("PHP");&lt;br /&gt;      languageList.add("C++");&lt;br /&gt;&lt;br /&gt;      languageMap.put("J", "Java");&lt;br /&gt;      languageMap.put("P", "PHP");&lt;br /&gt;      languageMap.put("C", "C++");&lt;br /&gt;&lt;br /&gt;      languageObjList.add(new ListValue("J", "Java"));&lt;br /&gt;      languageObjList.add(new ListValue("P", "PHP"));&lt;br /&gt;      languageObjList.add(new ListValue("C", "C++"));&lt;br /&gt;&lt;br /&gt;      return SUCCESS;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String getJSON(){&lt;br /&gt;     return execute();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public List&amp;lt;String&amp;gt; getLanguageList()&lt;br /&gt;    {&lt;br /&gt;      return languageList;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Map&amp;lt;String, String&amp;gt; getLanguageMap()&lt;br /&gt;    {&lt;br /&gt;      return languageMap;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public List&amp;lt;ListValue&amp;gt; getLanguageObjList()&lt;br /&gt;    {&lt;br /&gt;      return languageObjList;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public class ListValue {&lt;br /&gt;    private String myKey;&lt;br /&gt;    private String myValue;&lt;br /&gt;&lt;br /&gt;    public ListValue(String myKey, String myValue) {&lt;br /&gt;      super();&lt;br /&gt;      this.myKey = myKey;&lt;br /&gt;      this.myValue = myValue;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String getMyKey()&lt;br /&gt;    {&lt;br /&gt;      return myKey;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setMyKey(String myKey)&lt;br /&gt;    {&lt;br /&gt;      this.myKey = myKey;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String getMyValue()&lt;br /&gt;    {&lt;br /&gt;      return myValue;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setMyValue(String myValue)&lt;br /&gt;    {&lt;br /&gt;      this.myValue = myValue;&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Almost the same...&lt;br /&gt;&lt;br /&gt;AjaxForms11.jsp&lt;br /&gt;---------------&lt;br /&gt;&amp;lt;%-- &lt;br /&gt;    Buttonset / Radio Buttons&lt;br /&gt;&lt;br /&gt;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="sj" uri="/struts-jquery-tags"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;sj:head/&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;strong&amp;gt;Result Div :&amp;lt;/strong&amp;gt;&lt;br /&gt; &amp;lt;div id="formResult" class="result ui-widget-content ui-corner-all"&amp;gt;Submit form bellow.&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;strong&amp;gt;Buttonset that was populated from a List with String values.&amp;lt;/strong&amp;gt;&lt;br /&gt;    &amp;lt;s:form id="form" action="echo" theme="simple"&amp;gt;&lt;br /&gt;            &amp;lt;label for="echo"&amp;gt;Choose your Friend: &amp;lt;/label&amp;gt;&lt;br /&gt;      &amp;lt;sj:radio&lt;br /&gt;       id="radiobuttonset"&lt;br /&gt;          list="{'Patrick', 'Jason', 'Jay', 'Toby', 'Rene'}"&lt;br /&gt;          name="echo"&lt;br /&gt;   onChangeTopics="submitForm1"&lt;br /&gt;      /&amp;gt;&lt;br /&gt;      &amp;lt;br/&amp;gt;&lt;br /&gt;            &amp;lt;sj:submit&lt;br /&gt;             targets="formResult"&lt;br /&gt;             value="AJAX Submit"&lt;br /&gt;             indicator="indicator"&lt;br /&gt;             button="true"&lt;br /&gt;             listenTopics="submitForm1"&lt;br /&gt;             cssStyle="display:none;"&lt;br /&gt;            /&amp;gt;&lt;br /&gt;    &amp;lt;/s:form&amp;gt;&lt;br /&gt; &amp;lt;br/&amp;gt;&lt;br /&gt;    &amp;lt;strong&amp;gt;Buttonset that was populated from AJAX JSON Result with onChangeTopic.&amp;lt;/strong&amp;gt;&lt;br /&gt;    &amp;lt;s:form id="form2" action="echo" theme="xhtml"&amp;gt;&lt;br /&gt;    &amp;lt;s:url id="remoteurl" action="jsonsample"/&amp;gt;&lt;br /&gt;    &amp;lt;sj:radio&lt;br /&gt;     href="%{remoteurl}"&lt;br /&gt;     id="remoteRadiobuttons"&lt;br /&gt;     name="echo"&lt;br /&gt;     list="languageMap"&lt;br /&gt;     label="Language"&lt;br /&gt;     onChangeTopics="submitForm2"&lt;br /&gt;    /&amp;gt;&lt;br /&gt;             &amp;lt;sj:submit&lt;br /&gt;              id="form2button"&lt;br /&gt;              targets="formResult"&lt;br /&gt;              value="AJAX Submit"&lt;br /&gt;              indicator="indicator"&lt;br /&gt;              button="true"&lt;br /&gt;              listenTopics="submitForm2"&lt;br /&gt;              cssStyle="display:none;"&lt;br /&gt;              /&amp;gt;&lt;br /&gt;   &amp;lt;/s:form&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;img id="indicator" src="images/indicator.gif" alt="Loading..." style="display:none"/&amp;gt;&lt;br /&gt;   &amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;AJAX select examples.&lt;br /&gt;&lt;br /&gt;AjaxForms12.jsp&lt;br /&gt;---------------&lt;br /&gt;&amp;lt;%-- &lt;br /&gt;    form example from the AJAX command section&lt;br /&gt;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="sj" uri="/struts-jquery-tags"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;sj:head/&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        &amp;lt;s:form id="formSelectOne" action="echo" theme="simple" cssClass="yform"&amp;gt;&lt;br /&gt;        &amp;lt;fieldset&amp;gt;&lt;br /&gt;            &amp;lt;legend&amp;gt;AJAX Form populated by a String List&amp;lt;/legend&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-text"&amp;gt;&lt;br /&gt;             &amp;lt;label for="echo"&amp;gt;Echo: &amp;lt;/label&amp;gt;&lt;br /&gt;    &amp;lt;s:url id="remoteurl" action="jsonsample"/&amp;gt;&lt;br /&gt;    &amp;lt;sj:select&lt;br /&gt;     href="%{remoteurl}"&lt;br /&gt;     id="echo"&lt;br /&gt;     name="echo"&lt;br /&gt;     list="languageList"&lt;br /&gt;     emptyOption="true"&lt;br /&gt;     headerKey="-1"&lt;br /&gt;     headerValue="Please Select a Language"&lt;br /&gt;    /&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-button"&amp;gt;&lt;br /&gt;    &amp;lt;sj:submit&lt;br /&gt;     targets="result1"&lt;br /&gt;     value="AJAX Submit"&lt;br /&gt;     indicator="indicator"&lt;br /&gt;     button="true"&lt;br /&gt;    /&amp;gt;&lt;br /&gt;    &amp;lt;img id="indicator" src="images/indicator.gif" alt="Loading..." style="display:none"/&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;/fieldset&amp;gt;&lt;br /&gt;    &amp;lt;/s:form&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;strong&amp;gt;Result Div 1 :&amp;lt;/strong&amp;gt;&lt;br /&gt; &amp;lt;div id="result1" class="result ui-widget-content ui-corner-all"&amp;gt;Submit form above.&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;s:form id="formSelectTwo" action="echo" theme="simple" cssClass="yform"&amp;gt;&lt;br /&gt;        &amp;lt;fieldset&amp;gt;&lt;br /&gt;            &amp;lt;legend&amp;gt;AJAX Form populated by a Map&amp;lt;/legend&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-text"&amp;gt;&lt;br /&gt;             &amp;lt;label for="echo"&amp;gt;Echo: &amp;lt;/label&amp;gt;&lt;br /&gt;    &amp;lt;s:url id="remoteurl" action="jsonsample"/&amp;gt;&lt;br /&gt;    &amp;lt;sj:select&lt;br /&gt;     href="%{remoteurl}"&lt;br /&gt;     id="echo2"&lt;br /&gt;     name="echo"&lt;br /&gt;     list="languageMap"&lt;br /&gt;     emptyOption="true"&lt;br /&gt;     headerKey="-1"&lt;br /&gt;     headerValue="Please Select a Language"&lt;br /&gt;    /&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-button"&amp;gt;&lt;br /&gt;    &amp;lt;sj:submit&lt;br /&gt;     targets="result2"&lt;br /&gt;     value="AJAX Submit"&lt;br /&gt;     indicator="indicator"&lt;br /&gt;     button="true"&lt;br /&gt;    /&amp;gt;&lt;br /&gt;    &amp;lt;img id="indicator"&lt;br /&gt;     src="images/indicator.gif"&lt;br /&gt;     alt="Loading..." style="display:none"&lt;br /&gt;    /&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;/fieldset&amp;gt;&lt;br /&gt;    &amp;lt;/s:form&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;strong&amp;gt;Result Div 2 :&amp;lt;/strong&amp;gt;&lt;br /&gt; &amp;lt;div id="result2" class="result ui-widget-content ui-corner-all"&amp;gt;Submit form above.&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;s:form id="formSelectThree" action="echo" theme="simple" cssClass="yform"&amp;gt;&lt;br /&gt;        &amp;lt;fieldset&amp;gt;&lt;br /&gt;            &amp;lt;legend&amp;gt;AJAX Form populated by a List with Objects&amp;lt;/legend&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-text"&amp;gt;&lt;br /&gt;             &amp;lt;label for="echo"&amp;gt;Echo: &amp;lt;/label&amp;gt;&lt;br /&gt;    &amp;lt;s:url id="remoteurl" action="jsonsample"/&amp;gt;&lt;br /&gt;    &amp;lt;sj:select&lt;br /&gt;     href="%{remoteurl}"&lt;br /&gt;     id="echo3"&lt;br /&gt;     name="echo"&lt;br /&gt;     list="languageObjList"&lt;br /&gt;     listKey="myKey"&lt;br /&gt;     listValue="myValue"&lt;br /&gt;     emptyOption="true"&lt;br /&gt;     headerKey="-1"&lt;br /&gt;     headerValue="Please Select a Language"&lt;br /&gt;    /&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-button"&amp;gt;&lt;br /&gt;    &amp;lt;sj:submit&lt;br /&gt;     targets="result3"&lt;br /&gt;     value="AJAX Submit"&lt;br /&gt;     indicator="indicator"&lt;br /&gt;     button="true"&lt;br /&gt;    /&amp;gt;&lt;br /&gt;    &amp;lt;img id="indicator"&lt;br /&gt;     src="images/indicator.gif"&lt;br /&gt;     alt="Loading..."&lt;br /&gt;     style="display:none"/&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;/fieldset&amp;gt;&lt;br /&gt;    &amp;lt;/s:form&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;strong&amp;gt;Result Div 3 :&amp;lt;/strong&amp;gt;&lt;br /&gt; &amp;lt;div id="result3" class="result ui-widget-content ui-corner-all"&amp;gt;Submit form above.&amp;lt;/div&amp;gt;&lt;br /&gt;    &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;This example uses jsonsample2.  There is a slight difference with the previous one here.  The difference comes because of the levels.  The second select has to be set according to the first selection.  This is reflected in the JsonSample2.java code.&lt;br /&gt;&lt;br /&gt;AjaxForms13.jsp&lt;br /&gt;---------------&lt;br /&gt;&amp;lt;%-- &lt;br /&gt;    form example from the AJAX command section&lt;br /&gt;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="sj" uri="/struts-jquery-tags"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;sj:head/&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        Reload example with two select boxes.&lt;br /&gt;     &amp;lt;s:form id="formSelectReload" action="echo" theme="simple" cssClass="yform"&amp;gt;&lt;br /&gt;        &amp;lt;fieldset&amp;gt;&lt;br /&gt;            &amp;lt;legend&amp;gt;AJAX Form&amp;lt;/legend&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-text"&amp;gt;&lt;br /&gt;             &amp;lt;label for="language"&amp;gt;Language: &amp;lt;/label&amp;gt;&lt;br /&gt;    &amp;lt;s:url id="remoteurl" action="jsonsample2"/&amp;gt;&lt;br /&gt;    &amp;lt;sj:select&lt;br /&gt;     href="%{remoteurl}"&lt;br /&gt;     id="language"&lt;br /&gt;     onChangeTopics="reloadsecondlist"&lt;br /&gt;     name="language"&lt;br /&gt;     list="languageObjList"&lt;br /&gt;     listKey="myKey"&lt;br /&gt;     listValue="myValue"&lt;br /&gt;     emptyOption="true"&lt;br /&gt;     headerKey="-1"&lt;br /&gt;     headerValue="Please Select a Language"&lt;br /&gt;    /&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-text"&amp;gt;&lt;br /&gt;             &amp;lt;label for="echo"&amp;gt;Framework: &amp;lt;/label&amp;gt;&lt;br /&gt;    &amp;lt;s:url id="remoteurl" action="jsonsample2"/&amp;gt;&lt;br /&gt;    &amp;lt;sj:select&lt;br /&gt;     href="%{remoteurl}"&lt;br /&gt;     id="selectWithReloadTopic"&lt;br /&gt;     formIds="formSelectReload"&lt;br /&gt;     reloadTopics="reloadsecondlist"&lt;br /&gt;     name="echo"&lt;br /&gt;     list="reloadList"&lt;br /&gt;     emptyOption="true"&lt;br /&gt;     headerKey="-1"&lt;br /&gt;     headerValue="Please Select a Framework"&lt;br /&gt;    /&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-button"&amp;gt;&lt;br /&gt;    &amp;lt;sj:submit&lt;br /&gt;     id="submitFormSelectReload"&lt;br /&gt;     targets="result"&lt;br /&gt;     value="AJAX Submit"&lt;br /&gt;     indicator="indicator"&lt;br /&gt;     button="true"&lt;br /&gt;     /&amp;gt;&lt;br /&gt;     &amp;lt;img id="indicator"&lt;br /&gt;      src="images/indicator.gif"&lt;br /&gt;      alt="Loading..."&lt;br /&gt;      style="display:none"&lt;br /&gt;     /&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;/fieldset&amp;gt;&lt;br /&gt;    &amp;lt;/s:form&amp;gt;&lt;br /&gt; &amp;lt;br/&amp;gt;&lt;br /&gt; Reload example with one select box and an buttonset.&lt;br /&gt;     &amp;lt;s:form id="formSelectCheckBox" action="echo" theme="xhtml"&amp;gt;&lt;br /&gt;  &amp;lt;s:url id="remoteurl" action="jsonsample2"/&amp;gt;&lt;br /&gt;  &amp;lt;sj:select&lt;br /&gt;   href="%{remoteurl}"&lt;br /&gt;   id="languageSelect"&lt;br /&gt;   onChangeTopics="reloadcheckboxes"&lt;br /&gt;   name="language"&lt;br /&gt;   list="languageObjList"&lt;br /&gt;   listKey="myKey"&lt;br /&gt;   listValue="myValue"&lt;br /&gt;   emptyOption="true"&lt;br /&gt;   headerKey="-1"&lt;br /&gt;   headerValue="Please Select a Language"&lt;br /&gt;   label="Language"&lt;br /&gt;   required="true"&lt;br /&gt;  /&amp;gt;&lt;br /&gt;  &amp;lt;s:url id="remoteurl" action="jsonsample2"/&amp;gt;&lt;br /&gt;  &amp;lt;sj:checkboxlist&lt;br /&gt;   href="%{remoteurl}"&lt;br /&gt;   id="frameworkCheckboxes"&lt;br /&gt;   formIds="formSelectCheckBox"&lt;br /&gt;   reloadTopics="reloadcheckboxes"&lt;br /&gt;   name="echo"&lt;br /&gt;   list="reloadList"&lt;br /&gt;   label="Framework"&lt;br /&gt;   required="true"&lt;br /&gt;   onChangeTopics="submitCheckboxForm"&lt;br /&gt;  /&amp;gt;&lt;br /&gt;  &amp;lt;sj:submit&lt;br /&gt;   id="submitFormSelectCheckBox"&lt;br /&gt;   listenTopics="submitCheckboxForm"&lt;br /&gt;   targets="result"&lt;br /&gt;   value="AJAX Submit"&lt;br /&gt;   indicator="indicator2"&lt;br /&gt;   cssStyle="display : none;"&lt;br /&gt;  /&amp;gt;&lt;br /&gt;    &amp;lt;/s:form&amp;gt;&lt;br /&gt; &amp;lt;img id="indicator2"&lt;br /&gt;  src="images/indicator.gif"&lt;br /&gt;  alt="Loading..."&lt;br /&gt;  style="display:none"&lt;br /&gt; /&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;strong&amp;gt;Result Div :&amp;lt;/strong&amp;gt;&lt;br /&gt; &amp;lt;div id="result" class="result ui-widget-content ui-corner-all"&amp;gt;Submit a form.&amp;lt;/div&amp;gt;&lt;br /&gt;   &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;JsonSample2.java&lt;br /&gt;----------------&lt;br /&gt;/*&lt;br /&gt; * Licensed to the Apache Software Foundation (ASF) under one&lt;br /&gt; * or more contributor license agreements.  See the NOTICE file&lt;br /&gt; * distributed with this work for additional information&lt;br /&gt; * regarding copyright ownership.  The ASF licenses this file&lt;br /&gt; * to you under the Apache License, Version 2.0 (the&lt;br /&gt; * "License"); you may not use this file except in compliance&lt;br /&gt; * with the License.  You may obtain a copy of the License at&lt;br /&gt; *&lt;br /&gt; *  http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt; *&lt;br /&gt; * Unless required by applicable law or agreed to in writing,&lt;br /&gt; * software distributed under the License is distributed on an&lt;br /&gt; * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY&lt;br /&gt; * KIND, either express or implied.  See the License for the&lt;br /&gt; * specific language governing permissions and limitations&lt;br /&gt; * under the License.&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;package ARS;&lt;br /&gt;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;import java.util.List;&lt;br /&gt;import java.util.Map;&lt;br /&gt;&lt;br /&gt;import org.apache.commons.logging.Log;&lt;br /&gt;import org.apache.commons.logging.LogFactory;&lt;br /&gt;&lt;br /&gt;import com.opensymphony.xwork2.ActionSupport;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class JsonSample2 extends ActionSupport {&lt;br /&gt;&lt;br /&gt;  private static final long   serialVersionUID = -2223948287805083119L;&lt;br /&gt;  private static final Log    log              = LogFactory.getLog(JsonSample2.class);&lt;br /&gt;  private List&amp;lt;String&amp;gt;        languageList;&lt;br /&gt;  private List&amp;lt;ListValue&amp;gt;     languageObjList;&lt;br /&gt;  private Map&amp;lt;String, String&amp;gt; languageMap;&lt;br /&gt;  private List&amp;lt;String&amp;gt;        reloadList;&lt;br /&gt;  private String              language;&lt;br /&gt;&lt;br /&gt;  public String execute()&lt;br /&gt;  {&lt;br /&gt;&lt;br /&gt;    log.info("build json lists language : " + language);&lt;br /&gt;&lt;br /&gt;    languageList = new ArrayList&amp;lt;String&amp;gt;();&lt;br /&gt;    languageObjList = new ArrayList&amp;lt;ListValue&amp;gt;();&lt;br /&gt;    languageMap = new HashMap&amp;lt;String, String&amp;gt;();&lt;br /&gt;&lt;br /&gt;    languageList.add("Java");&lt;br /&gt;    languageList.add("PHP");&lt;br /&gt;    languageList.add("C#");&lt;br /&gt;&lt;br /&gt;    languageMap.put("J", "Java");&lt;br /&gt;    languageMap.put("P", "PHP");&lt;br /&gt;    languageMap.put("C", "C#");&lt;br /&gt;&lt;br /&gt;    languageObjList.add(new ListValue("J", "Java"));&lt;br /&gt;    languageObjList.add(new ListValue("P", "PHP"));&lt;br /&gt;    languageObjList.add(new ListValue("C", "C#"));&lt;br /&gt;&lt;br /&gt;    reloadList = new ArrayList&amp;lt;String&amp;gt;();&lt;br /&gt;    if (language != null &amp;&amp; language.equalsIgnoreCase("J"))&lt;br /&gt;    {&lt;br /&gt;      reloadList.add("Struts2");&lt;br /&gt;      reloadList.add("MyFaces");&lt;br /&gt;      reloadList.add("Tapestry");&lt;br /&gt;    }&lt;br /&gt;    else if (language != null &amp;&amp; language.equalsIgnoreCase("P"))&lt;br /&gt;    {&lt;br /&gt;      reloadList.add("CakePHP");&lt;br /&gt;      reloadList.add("Symfony");&lt;br /&gt;      reloadList.add("Zend");&lt;br /&gt;    }&lt;br /&gt;    else if (language != null &amp;&amp; language.equalsIgnoreCase("C"))&lt;br /&gt;    {&lt;br /&gt;      reloadList.add("NStruts");&lt;br /&gt;      reloadList.add("ProMesh.NET");&lt;br /&gt;      reloadList.add("Websharp");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    return SUCCESS;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public String getJSON()&lt;br /&gt;  {&lt;br /&gt;    return execute();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public List&amp;lt;String&amp;gt; getLanguageList()&lt;br /&gt;  {&lt;br /&gt;    return languageList;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public Map&amp;lt;String, String&amp;gt; getLanguageMap()&lt;br /&gt;  {&lt;br /&gt;    return languageMap;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public List&amp;lt;ListValue&amp;gt; getLanguageObjList()&lt;br /&gt;  {&lt;br /&gt;    return languageObjList;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public List&amp;lt;String&amp;gt; getReloadList()&lt;br /&gt;  {&lt;br /&gt;    return reloadList;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void setLanguage(String language)&lt;br /&gt;  {&lt;br /&gt;    this.language = language;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;ListValue.java&lt;br /&gt;--------------&lt;br /&gt;/**&lt;br /&gt; * &lt;br /&gt; */&lt;br /&gt;package ARS;&lt;br /&gt;&lt;br /&gt;public class ListValue {&lt;br /&gt;  private String myKey;&lt;br /&gt;  private String myValue;&lt;br /&gt;&lt;br /&gt;  public ListValue(String myKey, String myValue) {&lt;br /&gt;    super();&lt;br /&gt;    this.myKey = myKey;&lt;br /&gt;    this.myValue = myValue;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public String getMyKey()&lt;br /&gt;  {&lt;br /&gt;    return myKey;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void setMyKey(String myKey)&lt;br /&gt;  {&lt;br /&gt;    this.myKey = myKey;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public String getMyValue()&lt;br /&gt;  {&lt;br /&gt;    return myValue;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void setMyValue(String myValue)&lt;br /&gt;  {&lt;br /&gt;    this.myValue = myValue;&lt;br /&gt;  }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-6179569291591122377?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/6179569291591122377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/6179569291591122377'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/03/struts2-jquery-ajaxforms-4.html' title='Struts2 JQuery AjaxFORMS-4'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-1321838265172179189</id><published>2011-03-31T12:48:00.000-07:00</published><updated>2011-03-31T12:50:28.444-07:00</updated><title type='text'>Struts2 JQuery AjaxFORMS-3</title><content type='html'>There is a text area in this example.  You first write something into the text area and then you push the submit button.  The AJAX call copies this text into the result area.&lt;br /&gt;&lt;br /&gt;1. The text area takes its default value from the&lt;br /&gt;...&lt;br /&gt;&amp;lt;s:url id="remoteurl" action="ajax1"/&amp;gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;in the struts.xml:&lt;br /&gt;...&lt;br /&gt;&amp;lt;action name="ajax1"&amp;gt;&lt;br /&gt; &amp;lt;result&amp;gt;/Ajax1.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;&amp;lt;/action&amp;gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Ajax1.jsp:&lt;br /&gt;----------&lt;br /&gt;testARS&lt;br /&gt;(it is composed of only a single word text)&lt;br /&gt;&lt;br /&gt;The submit button targets:&lt;br /&gt;...&lt;br /&gt;&amp;lt;sj:submit&lt;br /&gt; targets="result"&lt;br /&gt;...&lt;br /&gt;the result area is at the bottom:&lt;br /&gt;...&lt;br /&gt; &amp;lt;div id="result" class="result ui-widget-content ui-corner-all"&amp;gt;&lt;br /&gt;  Enter some text in the Textarea above.&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;The submit button trigs the action echo:&lt;br /&gt;...&lt;br /&gt;&amp;lt;s:form id="formTextarea" action="echo" theme="simple" cssClass="yform"&amp;gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;in the struts.xml:&lt;br /&gt;                &amp;lt;action name="echo" class="ARS.Echo" method="execute"&amp;gt;&lt;br /&gt;   &amp;lt;result name="success"&amp;gt;/echo.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;The code for the action echo lies in the echo.java, listed below under the&lt;br /&gt;AjaxForms7.jsp's full code:&lt;br /&gt;&lt;br /&gt;AjaxForms7.jsp&lt;br /&gt;--------------&lt;br /&gt;&amp;lt;%-- &lt;br /&gt;    AJAX Textarea&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="sj" uri="/struts-jquery-tags"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;sj:head/&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;s:form id="formTextarea" action="echo" theme="simple" cssClass="yform"&amp;gt;&lt;br /&gt;        &amp;lt;fieldset&amp;gt;&lt;br /&gt;            &amp;lt;legend&amp;gt;AJAX Form&amp;lt;/legend&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-text"&amp;gt;&lt;br /&gt;             &amp;lt;label for="echo"&amp;gt;Echo: &amp;lt;/label&amp;gt;&lt;br /&gt;    &amp;lt;s:url id="remoteurl" action="ajax1"/&amp;gt;&lt;br /&gt;    &amp;lt;sj:textarea&lt;br /&gt;     href="%{remoteurl}"&lt;br /&gt;     id="echo"&lt;br /&gt;     name="echo"&lt;br /&gt;     rows="10"&lt;br /&gt;     cols="80"&lt;br /&gt;     effect="highlight"&lt;br /&gt;     effectDuration="1500"&lt;br /&gt;     loadingText="Loading content of textarea ..."&lt;br /&gt;    /&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-button"&amp;gt;&lt;br /&gt;    &amp;lt;sj:submit&lt;br /&gt;     targets="result"&lt;br /&gt;     effect="slide"&lt;br /&gt;     value="AJAX Submit"&lt;br /&gt;     indicator="indicator"&lt;br /&gt;     button="true"&lt;br /&gt;    /&amp;gt;&lt;br /&gt;    &amp;lt;img id="indicator"&lt;br /&gt;     src="images/indicator.gif"&lt;br /&gt;     alt="Loading..."&lt;br /&gt;     style="display:none"/&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;/fieldset&amp;gt;&lt;br /&gt;    &amp;lt;/s:form&amp;gt;&lt;br /&gt;        &amp;lt;strong&amp;gt;Result Div :&amp;lt;/strong&amp;gt;&lt;br /&gt; &amp;lt;div id="result" class="result ui-widget-content ui-corner-all"&amp;gt;&lt;br /&gt;  Enter some text in the Textarea above.&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;Echo.java&lt;br /&gt;---------&lt;br /&gt;package ARS;&lt;br /&gt;&lt;br /&gt;import org.apache.commons.logging.Log;&lt;br /&gt;import org.apache.commons.logging.LogFactory;&lt;br /&gt;&lt;br /&gt;import com.opensymphony.xwork2.ActionSupport;&lt;br /&gt;&lt;br /&gt;public class Echo extends ActionSupport {&lt;br /&gt;&lt;br /&gt;  private static final long serialVersionUID = 7968544374444173511L;&lt;br /&gt;  private static final Log  log              = LogFactory.getLog(Echo.class);&lt;br /&gt;&lt;br /&gt;  private String            echo;&lt;br /&gt;  private boolean           escape           = true;&lt;br /&gt;&lt;br /&gt;  public String execute() throws Exception&lt;br /&gt;  {&lt;br /&gt;&lt;br /&gt;    log.info("Echo : " + echo);&lt;br /&gt;&lt;br /&gt;    return SUCCESS;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public String getEcho()&lt;br /&gt;  {&lt;br /&gt;    return echo;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void setEcho(String echo)&lt;br /&gt;  {&lt;br /&gt;    this.echo = echo;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public boolean isEscape()&lt;br /&gt;  {&lt;br /&gt;    return escape;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void setEscape(boolean escape)&lt;br /&gt;  {&lt;br /&gt;    this.escape = escape;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;The result of the ecgo action is directed to echo.jsp:&lt;br /&gt;&lt;br /&gt;echo.jsp&lt;br /&gt;--------&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;Echo : &amp;lt;s:property value="echo" escape="%{escape}"/&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;echo.jsp puts "Echo :" and then the value of the echo request variable&lt;br /&gt;(echo field on the JSP).  The output of the echo.jsp is targeted to the result field on the AjaxForms7.jsp&lt;br /&gt;&lt;br /&gt;AjaxForms8.jsp has not much new, only the text area is resizable.&lt;br /&gt;&lt;br /&gt;AjaxForms8.jsp&lt;br /&gt;--------------&lt;br /&gt;&amp;lt;%-- &lt;br /&gt;    AJAX Text Area / Resizable&lt;br /&gt;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="sj" uri="/struts-jquery-tags"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;sj:head/&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        &amp;lt;s:form id="formTextareaResize" action="simpleecho" theme="simple" cssClass="yform"&amp;gt;&lt;br /&gt;        &amp;lt;fieldset&amp;gt;&lt;br /&gt;            &amp;lt;legend&amp;gt;AJAX Form&amp;lt;/legend&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-text"&amp;gt;&lt;br /&gt;             &amp;lt;label for="echo"&amp;gt;Echo: &amp;lt;/label&amp;gt;&lt;br /&gt;    &amp;lt;sj:textarea&lt;br /&gt;     resizable="true"&lt;br /&gt;     resizableGhost="true"&lt;br /&gt;     resizableHelper="ui-state-highlight"&lt;br /&gt;     id="echo"&lt;br /&gt;     name="echo"&lt;br /&gt;     rows="4"&lt;br /&gt;     cols="80"&lt;br /&gt;     onChangeTopics="submitThisForm"&lt;br /&gt;    /&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-button"&amp;gt;&lt;br /&gt;    &amp;lt;sj:submit&lt;br /&gt;     targets="result"&lt;br /&gt;     value="AJAX Submit"&lt;br /&gt;     indicator="indicator"&lt;br /&gt;     button="true"&lt;br /&gt;     listenTopics="submitThisForm"&lt;br /&gt;    /&amp;gt;&lt;br /&gt;    &amp;lt;img id="indicator"&lt;br /&gt;     src="images/indicator.gif"&lt;br /&gt;     alt="Loading..." style="display:none"/&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;/fieldset&amp;gt;&lt;br /&gt;    &amp;lt;/s:form&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;strong&amp;gt;Result Div :&amp;lt;/strong&amp;gt;&lt;br /&gt; &amp;lt;div id="result" class="result ui-widget-content ui-corner-all"&amp;gt;&lt;br /&gt;  Enter some text in the Textarea above.&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;AjaxForms8.jsp has not much new, only this time it is a text field that is resizable.&lt;br /&gt;&lt;br /&gt;AjaxForms9.jsp&lt;br /&gt;--------------&lt;br /&gt;&amp;lt;%-- &lt;br /&gt;   AJAX Textfield / Resizable &lt;br /&gt;&lt;br /&gt;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="sj" uri="/struts-jquery-tags"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;sj:head/&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        &amp;lt;s:form id="formTextfieldResize" action="echo" theme="simple" cssClass="yform"&amp;gt;&lt;br /&gt;        &amp;lt;fieldset&amp;gt;&lt;br /&gt;            &amp;lt;legend&amp;gt;AJAX Form&amp;lt;/legend&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-text"&amp;gt;&lt;br /&gt;             &amp;lt;label for="echo"&amp;gt;Echo: &amp;lt;/label&amp;gt;&lt;br /&gt;       &amp;lt;s:url id="urlsimpleecho" action="simpleecho"&amp;gt;&lt;br /&gt;        &amp;lt;s:param name="echo"&amp;gt;remote content for textfield!&amp;lt;/s:param&amp;gt;&lt;br /&gt;       &amp;lt;/s:url&amp;gt;&lt;br /&gt;    &amp;lt;sj:textfield&lt;br /&gt;     href="%{urlsimpleecho}"&lt;br /&gt;     resizable="true"&lt;br /&gt;     resizableGhost="true"&lt;br /&gt;     resizableHelper="ui-state-highlight"&lt;br /&gt;     resizableMaxHeight="30"&lt;br /&gt;     effect="blind"&lt;br /&gt;     effectDuration="1500"&lt;br /&gt;     effectOptions="{&lt;br /&gt;      mode: 'show'&lt;br /&gt;     }"&lt;br /&gt;     id="echo"&lt;br /&gt;     name="echo"&lt;br /&gt;     loadingText="Loading content of textfield ..."&lt;br /&gt;    /&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-button"&amp;gt;&lt;br /&gt;    &amp;lt;sj:submit&lt;br /&gt;     targets="result"&lt;br /&gt;     effect="highlight"&lt;br /&gt;     effectDuration="1500"&lt;br /&gt;     value="AJAX Submit"&lt;br /&gt;     indicator="indicator"&lt;br /&gt;     button="true"&lt;br /&gt;    /&amp;gt;&lt;br /&gt;    &amp;lt;img id="indicator"&lt;br /&gt;     src="images/indicator.gif"&lt;br /&gt;     alt="Loading..."&lt;br /&gt;     style="display:none"/&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;/fieldset&amp;gt;&lt;br /&gt;    &amp;lt;/s:form&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;strong&amp;gt;Result Div :&amp;lt;/strong&amp;gt;&lt;br /&gt; &amp;lt;div id="result" class="result ui-widget-content ui-corner-all"&amp;gt;&lt;br /&gt;  Enter some text in the Textarea above.&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-1321838265172179189?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/1321838265172179189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/1321838265172179189'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/03/struts2-jquery-ajaxforms-3.html' title='Struts2 JQuery AjaxFORMS-3'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-5479804523883263133</id><published>2011-03-31T12:45:00.000-07:00</published><updated>2011-03-31T12:47:43.316-07:00</updated><title type='text'>Struts2 JQuery AjaxFORMS-2</title><content type='html'>AjaxForms5.jsp is a form example with validation.  This example does not work in the struts2-jquery-showcase-2.5.0 version.  There is a fix note from Herr Geppert on the internet about this.  Some javascript has been changed at struts2-jquery-showcase-2.5.3 version.  You have to add the utils.js and validation.js references also as seen below.&lt;br /&gt;&lt;br /&gt;There is a difficulty about struts2-jquery-showcase-2.5.3.  It does not run when compiled.  The showcase related with the grid works though.  So I copied the lib from the grid showcase of the same version.  It worked. &lt;br /&gt;&lt;br /&gt;The form activates the login action at the AJAX submit event.  The AJAX submit event targets 'result' div with pulsate effect.  There are two text fields, loginuser and loginpassword. These are handled at Login.java&lt;br /&gt;&lt;br /&gt;Error processing can be done both in the Login.java or with xml validation.&lt;br /&gt;&lt;br /&gt;AjaxForms5.jsp&lt;br /&gt;--------------&lt;br /&gt;&amp;lt;%-- &lt;br /&gt;    form example from the AJAX command section&lt;br /&gt;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="sj" uri="/struts-jquery-tags"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;sj:head/&amp;gt;&lt;br /&gt; &amp;lt;script type="text/javascript" src="${pageContext.request.contextPath}/struts/utils.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt; &amp;lt;script type="text/javascript" src="${pageContext.request.contextPath}/struts/xhtml/validation.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;    &amp;lt;strong&amp;gt;Result Div :&amp;lt;/strong&amp;gt;&lt;br /&gt; &amp;lt;div id="result" class="result ui-widget-content ui-corner-all"&amp;gt;Submit form bellow.&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;s:form id="formValidate" action="login" theme="xhtml"&amp;gt;&lt;br /&gt;      &amp;lt;s:textfield&lt;br /&gt;       id="loginuser"&lt;br /&gt;       name="loginuser"&lt;br /&gt;       label="User"&lt;br /&gt;       required="true"&lt;br /&gt;      /&amp;gt;&lt;br /&gt;      &amp;lt;s:textfield&lt;br /&gt;       id="loginpassword"&lt;br /&gt;       name="loginpassword"&lt;br /&gt;       label="Password (test)"&lt;br /&gt;       required="true"&lt;br /&gt;      /&amp;gt;&lt;br /&gt;     &amp;lt;sj:submit&lt;br /&gt;      targets="result"&lt;br /&gt;      button="true"&lt;br /&gt;      validate="true"&lt;br /&gt;      effect="pulsate"&lt;br /&gt;      value="Submit"&lt;br /&gt;      indicator="indicator"&lt;br /&gt;      /&amp;gt;&lt;br /&gt;        &amp;lt;input type="hidden" id="struts.enableJSONValidation" name="struts.enableJSONValidation" value="true" /&amp;gt;&lt;br /&gt;    &amp;lt;/s:form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;Login.java&lt;br /&gt;----------&lt;br /&gt;/*&lt;br /&gt; * To change this template, choose Tools | Templates&lt;br /&gt; * and open the template in the editor.&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;package ARS;&lt;br /&gt;&lt;br /&gt;import org.apache.commons.logging.Log;&lt;br /&gt;import org.apache.commons.logging.LogFactory;&lt;br /&gt;import com.opensymphony.xwork2.ActionSupport;&lt;br /&gt;&lt;br /&gt;public class Login extends ActionSupport {&lt;br /&gt;&lt;br /&gt;  private static final long serialVersionUID = 7968544374444173511L;&lt;br /&gt;  private static final Log  log              = LogFactory.getLog(Login.class);&lt;br /&gt;&lt;br /&gt;  private String            loginuser;&lt;br /&gt;  private String            loginpassword;&lt;br /&gt;  private String            echo;&lt;br /&gt;&lt;br /&gt;  public String execute() throws Exception&lt;br /&gt;  {&lt;br /&gt;    echo = "Welcome " + loginuser;&lt;br /&gt;    log.info(echo);&lt;br /&gt;&lt;br /&gt;    return SUCCESS;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public String getEcho()&lt;br /&gt;  {&lt;br /&gt;    return echo;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public String getLoginuser()&lt;br /&gt;  {&lt;br /&gt;    return loginuser;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void setLoginuser(String loginuser)&lt;br /&gt;  {&lt;br /&gt;    this.loginuser = loginuser;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public String getLoginpassword()&lt;br /&gt;  {&lt;br /&gt;    return loginpassword;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void setLoginpassword(String loginpassword)&lt;br /&gt;  {&lt;br /&gt;    this.loginpassword = loginpassword;&lt;br /&gt;  }&lt;br /&gt;//  public void validate(){&lt;br /&gt;//&lt;br /&gt;//  if ( loginuser.length() == 0 ){&lt;br /&gt;//   addFieldError( "loginuser", "loginuser is required." );&lt;br /&gt;//  }&lt;br /&gt;//&lt;br /&gt;//  if ( loginpassword.length() == 0 ){&lt;br /&gt;//   addFieldError( "loginpassword", "loginpassword is required." );&lt;br /&gt;//  }&lt;br /&gt;// }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Login-validation.xml&lt;br /&gt;--------------------&lt;br /&gt;&amp;lt;!DOCTYPE validators PUBLIC&lt;br /&gt;"-//OpenSymphony Group//XWork Validator 1.0.2//EN"&lt;br /&gt;"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"&amp;gt;&lt;br /&gt;&amp;lt;validators&amp;gt;&lt;br /&gt; &amp;lt;validator type="requiredstring"&amp;gt;&lt;br /&gt;  &amp;lt;param name="fieldname"&amp;gt;loginuser&amp;lt;/param&amp;gt;&lt;br /&gt;  &amp;lt;message&amp;gt;loginuser is required.&amp;lt;/message&amp;gt;&lt;br /&gt; &amp;lt;/validator&amp;gt;&lt;br /&gt;  &amp;lt;validator type="requiredstring"&amp;gt;&lt;br /&gt;  &amp;lt;param name="fieldname"&amp;gt;loginpassword&amp;lt;/param&amp;gt;&lt;br /&gt;  &amp;lt;message&amp;gt;loginpassword is required.&amp;lt;/message&amp;gt;&lt;br /&gt; &amp;lt;/validator&amp;gt;&lt;br /&gt;&amp;lt;/validators&amp;gt;&lt;br /&gt;&lt;br /&gt;AjaxForms6.jsp is a custom Validation example.  It still uses some js substructure though.  The example works without problem.&lt;br /&gt;&lt;br /&gt;AjaxForms6.jsp&lt;br /&gt;--------------&lt;br /&gt;&amp;lt;%-- &lt;br /&gt;    form example from the AJAX command section&lt;br /&gt;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="sj" uri="/struts-jquery-tags"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;sj:head/&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;$(document).ready( function() {&lt;br /&gt; $.subscribe('removeErrors', function(event,data) {&lt;br /&gt;  $('.errorLabel').html('').removeClass('errorLabel');&lt;br /&gt;  $('#formerrors').html('');&lt;br /&gt; });&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;function customeValidation(form, errors) {&lt;br /&gt;&lt;br /&gt; //List for errors&lt;br /&gt; var list = $('#formerrors');&lt;br /&gt;&lt;br /&gt; //Handle non field errors&lt;br /&gt; if (errors.errors) {&lt;br /&gt;  $.each(errors.errors, function(index, value) {&lt;br /&gt;   list.append(''+value+'\n');&lt;br /&gt;  });&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; //Handle field errors&lt;br /&gt; if (errors.fieldErrors) {&lt;br /&gt;  $.each(errors.fieldErrors, function(index, value) {&lt;br /&gt;   var elem = $('#'+index+'Error');&lt;br /&gt;   if(elem)&lt;br /&gt;   {&lt;br /&gt;    elem.html(value[0]);&lt;br /&gt;    elem.addClass('errorLabel');&lt;br /&gt;   }&lt;br /&gt;  });&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        &amp;lt;div id="result" class="result ui-widget-content ui-corner-all"&amp;gt;Submit form bellow.&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;ul id="formerrors" class="errorMessage"&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;    &amp;lt;s:form id="formValidateCustom" action="login" theme="simple" cssClass="yform"&amp;gt;&lt;br /&gt;        &amp;lt;fieldset&amp;gt;&lt;br /&gt;            &amp;lt;legend&amp;gt;AJAX Form with Validation&amp;lt;/legend&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-text"&amp;gt;&lt;br /&gt;             &amp;lt;label for="echo"&amp;gt;User: &amp;lt;span id="loginuserError"&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;       &amp;lt;s:textfield&lt;br /&gt;         id="loginuser"&lt;br /&gt;         name="loginuser"&lt;br /&gt;        /&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-text"&amp;gt;&lt;br /&gt;             &amp;lt;label for="echo"&amp;gt;Password: &amp;lt;span id="loginpasswordError"&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;        &amp;lt;s:textfield&lt;br /&gt;         id="loginpassword"&lt;br /&gt;         name="loginpassword"&lt;br /&gt;        /&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-button"&amp;gt;&lt;br /&gt;       &amp;lt;sj:submit&lt;br /&gt;        targets="result"&lt;br /&gt;        button="true"&lt;br /&gt;        validate="true"&lt;br /&gt;        validateFunction="customeValidation"&lt;br /&gt;        onBeforeTopics="removeErrors"&lt;br /&gt;        onSuccessTopics="removeErrors"&lt;br /&gt;        value="Submit"&lt;br /&gt;        indicator="indicator"&lt;br /&gt;       /&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;/fieldset&amp;gt;&lt;br /&gt;    &amp;lt;/s:form&amp;gt;&lt;br /&gt;    &amp;lt;img id="indicator" src="images/indicator.gif" alt="Loading..." style="display:none"/&amp;gt;&lt;br /&gt;   &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-5479804523883263133?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/5479804523883263133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/5479804523883263133'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/03/struts2-jquery-ajaxforms-2.html' title='Struts2 JQuery AjaxFORMS-2'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-6031259361750032951</id><published>2011-03-31T12:41:00.000-07:00</published><updated>2011-03-31T12:55:32.033-07:00</updated><title type='text'>Struts2 JQuery AjaxFORMS-1</title><content type='html'>I have taken these examples from Herr GEPPERT's showcase for Struts2-JQuery applications.  My intention was to try whether they can work individually for specific purposes.  The problem is you can not run struts2-jquery-showcase-2.5.3 as it is provided.  There are missing files in the lib folder.  But the same site provides a grid showcase which works.  So, I copied the whole lib from there on to the original struts2-jquery-showcase-2.5.3 lib.  It works now.&lt;br /&gt;&lt;br /&gt;After fixing the lib problem, I returned back to the original problem I had.  The examples for validation did not work healthily on struts2-jquery-showcase-2.5.0 which I had chosen to be 'safe'.  So, I tried the new lib with my old problem, it worked.  (I had seen Herr Geppert's note on a fix about this matter).  There is also another small fix I had to do, which I will explain when I come to that matter.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Md4vphhr1_4/TZTby0LKYeI/AAAAAAAAAa0/8vIqAeKB2zI/s1600/Struts2JQAjaxFORMS1.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 174px; height: 400px;" src="http://4.bp.blogspot.com/-Md4vphhr1_4/TZTby0LKYeI/AAAAAAAAAa0/8vIqAeKB2zI/s400/Struts2JQAjaxFORMS1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5590334703519031778" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-m7rMYFar7mo/TZTb93BId1I/AAAAAAAAAa8/G6m3buWozrA/s1600/Struts2JQAjaxFORMS2.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 159px; height: 400px;" src="http://2.bp.blogspot.com/-m7rMYFar7mo/TZTb93BId1I/AAAAAAAAAa8/G6m3buWozrA/s400/Struts2JQAjaxFORMS2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5590334893260830546" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/--jCng4dSF_U/TZTcHzNO1KI/AAAAAAAAAbE/_HHNfd8F74M/s1600/Struts2JQAjaxFORMS3.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 153px; height: 400px;" src="http://4.bp.blogspot.com/--jCng4dSF_U/TZTcHzNO1KI/AAAAAAAAAbE/_HHNfd8F74M/s400/Struts2JQAjaxFORMS3.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5590335064036529314" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;web.xml&lt;br /&gt;-------&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&amp;gt;&lt;br /&gt;&amp;lt;display-name&amp;gt;Basic_Struts2_Ant&amp;lt;/display-name&amp;gt;&lt;br /&gt;  &amp;lt;welcome-file-list&amp;gt;&lt;br /&gt;    &amp;lt;welcome-file&amp;gt;/test.action&amp;lt;/welcome-file&amp;gt;&lt;br /&gt;  &amp;lt;/welcome-file-list&amp;gt;&lt;br /&gt;  &lt;br /&gt;        &lt;br /&gt;    &amp;lt;filter&amp;gt;&lt;br /&gt;        &amp;lt;filter-name&amp;gt;struts2&amp;lt;/filter-name&amp;gt;&lt;br /&gt;        &amp;lt;filter-class&amp;gt;org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;   &amp;lt;/filter&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;        &amp;lt;filter-name&amp;gt;struts2&amp;lt;/filter-name&amp;gt;&lt;br /&gt;        &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;    &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;    &lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;br /&gt;&lt;br /&gt;struts.xml&lt;br /&gt;----------&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE struts PUBLIC&lt;br /&gt;    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"&lt;br /&gt;    "http://struts.apache.org/dtds/struts-2.0.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;struts&amp;gt;&lt;br /&gt; &amp;lt;constant name="struts.devMode" value="true" /&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;package name="basicstruts2" extends="struts-default, json-default"&amp;gt;&lt;br /&gt;                &amp;lt;action name="echo" class="ARS.Echo" method="execute"&amp;gt;&lt;br /&gt;   &amp;lt;result name="success"&amp;gt;/echo.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;                &amp;lt;action name="simpleecho" class="ARS.SimpleEcho" method="execute"&amp;gt;&lt;br /&gt;   &amp;lt;result name="success"&amp;gt;/simpleecho.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;                &amp;lt;action name="ajax1"&amp;gt;&lt;br /&gt;   &amp;lt;result&amp;gt;/Ajax1.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;                &amp;lt;action name="jsonsample" class="ARS.JsonSample" method="execute"&amp;gt;&lt;br /&gt;   &amp;lt;result type="json"&amp;gt;&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;                &amp;lt;action name="jsonsample2" class="ARS.JsonSample2" method="execute"&amp;gt;&lt;br /&gt;   &amp;lt;result type="json"&amp;gt;&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;                &amp;lt;action name="jsonlanguages" class="ARS.Jsonlanguages" method="execute"&amp;gt;&lt;br /&gt;   &amp;lt;result type="json"&amp;gt;&amp;lt;param name="root"&amp;gt;languages&amp;lt;/param&amp;gt;&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;                &amp;lt;action name="login" class="ARS.Login" method="execute"&amp;gt;&lt;br /&gt;                        &amp;lt;interceptor-ref name="jsonValidationWorkflowStack"/&amp;gt;&lt;br /&gt;   &amp;lt;result name = "success"&amp;gt;/simpleecho.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;        &amp;lt;/package&amp;gt;&lt;br /&gt;&amp;lt;/struts&amp;gt;&lt;br /&gt;&lt;br /&gt;AjaxForms0.jsp uses an AJAX call that targets the div formResult.&lt;br /&gt;There is a field named echo of which value is copied by the&lt;br /&gt;action echo to the result field.  &lt;br /&gt;AjaxForms0.jsp&lt;br /&gt;--------------&lt;br /&gt;&amp;lt;%-- &lt;br /&gt;    form example from the AJAX command section&lt;br /&gt;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="sj" uri="/struts-jquery-tags"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;sj:head/&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        &amp;lt;div id="formResult"&amp;gt;formResult&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;s:form id="form" action="echo" theme="xhtml"&amp;gt;&lt;br /&gt;     Echo: &amp;lt;s:textfield id="echo" name="echo" value="Hello World!!!"/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;    &amp;lt;/s:form&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;sj:a &lt;br /&gt;     id="ajaxformlink"&lt;br /&gt;     formIds="form"&lt;br /&gt;     targets="formResult"&lt;br /&gt;     indicator="indicator"&lt;br /&gt;     button="true"&lt;br /&gt; buttonIcon="ui-icon-gear"&lt;br /&gt;    &amp;gt;&lt;br /&gt;      Submit form here&lt;br /&gt;    &amp;lt;/sj:a&amp;gt;&lt;br /&gt;    &amp;lt;img id="indicator" src="images/indicator.gif" alt="Loading..." style="display:none"/&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;The echo action trigs the echo.java of which result is fed to the result file echo.jsp.  Echo.jsp is then targeted to the result field on the jsp.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Echo.java&lt;br /&gt;---------&lt;br /&gt;package ARS;&lt;br /&gt;&lt;br /&gt;import org.apache.commons.logging.Log;&lt;br /&gt;import org.apache.commons.logging.LogFactory;&lt;br /&gt;&lt;br /&gt;import com.opensymphony.xwork2.ActionSupport;&lt;br /&gt;&lt;br /&gt;public class Echo extends ActionSupport {&lt;br /&gt;&lt;br /&gt;  private static final long serialVersionUID = 7968544374444173511L;&lt;br /&gt;  private static final Log  log              = LogFactory.getLog(Echo.class);&lt;br /&gt;&lt;br /&gt;  private String            echo;&lt;br /&gt;  private boolean           escape           = true;&lt;br /&gt;&lt;br /&gt;  public String execute() throws Exception&lt;br /&gt;  {&lt;br /&gt;&lt;br /&gt;    log.info("Echo : " + echo);&lt;br /&gt;&lt;br /&gt;    return SUCCESS;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public String getEcho()&lt;br /&gt;  {&lt;br /&gt;    return echo;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void setEcho(String echo)&lt;br /&gt;  {&lt;br /&gt;    this.echo = echo;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public boolean isEscape()&lt;br /&gt;  {&lt;br /&gt;    return escape;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void setEscape(boolean escape)&lt;br /&gt;  {&lt;br /&gt;    this.escape = escape;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Echo.jsp&lt;br /&gt;--------&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;Echo : &amp;lt;s:property value="echo" escape="%{escape}"/&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is a simple repetition in Herr Geppert's examples. simpleecho is not simpler than echo I guess.&lt;br /&gt;&lt;br /&gt;AjaxForms1.jsp&lt;br /&gt;--------------&lt;br /&gt;&amp;lt;%-- &lt;br /&gt;    AJAX Forms&lt;br /&gt;&lt;br /&gt;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;   "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="sj" uri="/struts-jquery-tags"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;sj:head/&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        &amp;lt;div id="formResult"&amp;gt;formResult&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;s:form id="form" action="echo" theme="simple" cssClass="yform"&amp;gt;&lt;br /&gt;        &amp;lt;fieldset&amp;gt;&lt;br /&gt;            &amp;lt;legend&amp;gt;AJAX Form&amp;lt;/legend&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-text"&amp;gt;&lt;br /&gt;             &amp;lt;label for="echo"&amp;gt;Echo: &amp;lt;/label&amp;gt;&lt;br /&gt;             &amp;lt;s:textfield id="echo" name="echo" value="Hello World!!!"/&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-button"&amp;gt;&lt;br /&gt;             &amp;lt;sj:submit&lt;br /&gt;              id="formSubmit1"&lt;br /&gt;              targets="formResult"&lt;br /&gt;              value="AJAX Submit"&lt;br /&gt;              indicator="indicator"&lt;br /&gt;              button="true"&lt;br /&gt;              /&amp;gt;&lt;br /&gt;    &amp;lt;s:url id="simpleecho" value="/simpleecho.action"/&amp;gt;&lt;br /&gt;             &amp;lt;sj:submit&lt;br /&gt;              id="formSubmit2"&lt;br /&gt;              href="%{simpleecho}"&lt;br /&gt;              targets="formResult"&lt;br /&gt;              value="AJAX Submit 2"&lt;br /&gt;              indicator="indicator"&lt;br /&gt;              button="true"&lt;br /&gt;              /&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;/fieldset&amp;gt;&lt;br /&gt;    &amp;lt;/s:form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;SimpleEcho.java&lt;br /&gt;---------------&lt;br /&gt;/*&lt;br /&gt; * Licensed to the Apache Software Foundation (ASF) under one&lt;br /&gt; * or more contributor license agreements.  See the NOTICE file&lt;br /&gt; * distributed with this work for additional information&lt;br /&gt; * regarding copyright ownership.  The ASF licenses this file&lt;br /&gt; * to you under the Apache License, Version 2.0 (the&lt;br /&gt; * "License"); you may not use this file except in compliance&lt;br /&gt; * with the License.  You may obtain a copy of the License at&lt;br /&gt; *&lt;br /&gt; *  http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt; *&lt;br /&gt; * Unless required by applicable law or agreed to in writing,&lt;br /&gt; * software distributed under the License is distributed on an&lt;br /&gt; * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY&lt;br /&gt; * KIND, either express or implied.  See the License for the&lt;br /&gt; * specific language governing permissions and limitations&lt;br /&gt; * under the License.&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;package ARS;&lt;br /&gt;&lt;br /&gt;import org.apache.struts2.convention.annotation.Action;&lt;br /&gt;import org.apache.struts2.convention.annotation.ParentPackage;&lt;br /&gt;import org.apache.struts2.convention.annotation.Result;&lt;br /&gt;&lt;br /&gt;import com.opensymphony.xwork2.ActionSupport;&lt;br /&gt;&lt;br /&gt;public class SimpleEcho extends ActionSupport {&lt;br /&gt;&lt;br /&gt;  private static final long serialVersionUID = 6999864671102333041L;&lt;br /&gt;  private String            echo;&lt;br /&gt;  private boolean           escape           = true;&lt;br /&gt;&lt;br /&gt;  public String execute() throws Exception&lt;br /&gt;  {&lt;br /&gt;    return SUCCESS;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public String getEcho()&lt;br /&gt;  {&lt;br /&gt;    return echo;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void setEcho(String echo)&lt;br /&gt;  {&lt;br /&gt;    this.echo = echo;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public boolean isEscape()&lt;br /&gt;  {&lt;br /&gt;    return escape;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void setEscape(boolean escape)&lt;br /&gt;  {&lt;br /&gt;    this.escape = escape;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Addition of effects etc cosmetic changes.&lt;br /&gt;&lt;br /&gt;AjaxForms2.jsp&lt;br /&gt;--------------&lt;br /&gt;&amp;lt;%-- &lt;br /&gt;    AJAX Forms with Effects&lt;br /&gt;&lt;br /&gt;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="sj" uri="/struts-jquery-tags"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;sj:head/&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        &amp;lt;div id="result"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;s:form id="formEffect" action="echo" theme="xhtml"&amp;gt;&lt;br /&gt;                &amp;lt;s:textfield id="echo" name="echo" label="Echo" value="Hello World!!!"/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;                &amp;lt;sj:submit&lt;br /&gt;                 targets="result"&lt;br /&gt;                 effect="slide"&lt;br /&gt;                 effectMode="blind"&lt;br /&gt;                 onEffectCompleteTopics="hideTarget"&lt;br /&gt;                 value="AJAX Submit"&lt;br /&gt;                 indicator="indicator"&lt;br /&gt;                 button="true"&lt;br /&gt;                /&amp;gt;&lt;br /&gt;    &amp;lt;/s:form&amp;gt;&lt;br /&gt;    &amp;lt;img id="indicator" src="images/indicator.gif" alt="Loading..." style="display:none"/&amp;gt; &amp;lt;/body&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;AjaxForms3.jsp&lt;br /&gt;--------------&lt;br /&gt;&amp;lt;%-- &lt;br /&gt;   AJAX Forms with Outside Button&lt;br /&gt;&lt;br /&gt;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="sj" uri="/struts-jquery-tags"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;sj:head/&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        &amp;lt;div id="result"&amp;gt;formResult&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;s:form id="formOutside" action="echo" theme="simple" cssClass="yform"&amp;gt;&lt;br /&gt;        &amp;lt;fieldset&amp;gt;&lt;br /&gt;            &amp;lt;legend&amp;gt;AJAX Form with Button outside&amp;lt;/legend&amp;gt;&lt;br /&gt;            &amp;lt;div class="type-text"&amp;gt;&lt;br /&gt;                &amp;lt;label for="echo"&amp;gt;Echo: &amp;lt;/label&amp;gt;&lt;br /&gt;                &amp;lt;s:textfield id="echo" name="echo" value="Hello World!!!"/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;            &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;/fieldset&amp;gt;&lt;br /&gt;    &amp;lt;/s:form&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;sj:submit&lt;br /&gt;     formIds="formOutside"&lt;br /&gt;     targets="result"&lt;br /&gt;     effect="pulsate"&lt;br /&gt;     value="Submit outside the Form"&lt;br /&gt;     indicator="indicator"&lt;br /&gt;     button="true"&lt;br /&gt;    /&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;The events are interesting.  It is pretty straight forward, you create the JSP and it works.&lt;br /&gt;&lt;br /&gt;AjaxForms4.jsp&lt;br /&gt;--------------&lt;br /&gt;&amp;lt;%-- &lt;br /&gt;    AJAX Forms with Events&lt;br /&gt;&lt;br /&gt;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="sj" uri="/struts-jquery-tags"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;sj:head/&amp;gt;&lt;br /&gt;    &amp;lt;script type="text/javascript" charset="utf-8"&amp;gt;&lt;br /&gt;        $.subscribe('beforeForm', function(event,data) {&lt;br /&gt;     var fData = event.originalEvent.formData;&lt;br /&gt;  alert('About to submit: \n\n' + fData[0].value + ' to target '+event.originalEvent.options.target+' with timeout '+event.originalEvent.options.timeout );&lt;br /&gt;     var form = event.originalEvent.form[0];&lt;br /&gt;     if (form.echo.value.length  &amp;lt; 2) {&lt;br /&gt;         alert('Please enter a value with min 2 characters');&lt;br /&gt;         event.originalEvent.options.submit = false;&lt;br /&gt;     }&lt;br /&gt;    });&lt;br /&gt;    $.subscribe('completeForm', function(event,data) {&lt;br /&gt;     alert('status: ' + event.originalEvent.status + '\n\nresponseText: \n' + event.originalEvent.request.responseText +&lt;br /&gt;     '\n\nThe output div should have already been updated with the responseText.');&lt;br /&gt;    });&lt;br /&gt;    $.subscribe('errorStateForm', function(event,data) {&lt;br /&gt;        alert('status: ' + event.originalEvent.status + '\n\nrequest status: ' +event.originalEvent.request.status);&lt;br /&gt;    });&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        &amp;lt;div id="result"&amp;gt;formResult&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;s:form id="formevent" action="echo" theme="simple" cssClass="yform"&amp;gt;&lt;br /&gt;        &amp;lt;fieldset&amp;gt;&lt;br /&gt;            &amp;lt;legend&amp;gt;AJAX Form&amp;lt;/legend&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-text"&amp;gt;&lt;br /&gt;             &amp;lt;label for="echo"&amp;gt;Echo: &amp;lt;/label&amp;gt;&lt;br /&gt;             &amp;lt;s:textfield id="echo" name="echo" value="Hello World!!!"/&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;         &amp;lt;div class="type-button"&amp;gt;&lt;br /&gt;             &amp;lt;sj:submit&lt;br /&gt;              targets="result"&lt;br /&gt;              value="AJAX Submit"&lt;br /&gt;              timeout="2500"&lt;br /&gt;              indicator="indicator"&lt;br /&gt;              onBeforeTopics="beforeForm"&lt;br /&gt;              onCompleteTopics="completeForm"&lt;br /&gt;              onErrorTopics="errorState"&lt;br /&gt;              button="true"&lt;br /&gt;             /&amp;gt;&lt;br /&gt;         &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;/fieldset&amp;gt;&lt;br /&gt;    &amp;lt;/s:form&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;img id="indicator" src="images/indicator.gif" alt="Loading..." style="display:none"/&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;s:form id="formeventerror" action="file-does-not-exist.html" theme="simple" cssClass="yform"&amp;gt;&lt;br /&gt;        &amp;lt;fieldset&amp;gt;&lt;br /&gt;            &amp;lt;legend&amp;gt;AJAX Form with Error Result&amp;lt;/legend&amp;gt;&lt;br /&gt;            &amp;lt;div class="type-text"&amp;gt;&lt;br /&gt;                &amp;lt;label for="echo"&amp;gt;Echo: &amp;lt;/label&amp;gt;&lt;br /&gt;                &amp;lt;s:textfield id="echo" name="echo" value="Hello World!!!"/&amp;gt;&lt;br /&gt;            &amp;lt;/div&amp;gt;&lt;br /&gt;            &amp;lt;div class="type-button"&amp;gt;&lt;br /&gt;                &amp;lt;sj:submit&lt;br /&gt;                 targets="result"&lt;br /&gt;                 value="AJAX Submit with Error"&lt;br /&gt;                 timeout="2500"&lt;br /&gt;                 indicator="indicator"&lt;br /&gt;                 onBeforeTopics="beforeForm"&lt;br /&gt;                 onCompleteTopics="completeForm"&lt;br /&gt;                 onErrorTopics="errorState"&lt;br /&gt;              button="true"&lt;br /&gt;                /&amp;gt;&lt;br /&gt;            &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;/fieldset&amp;gt;&lt;br /&gt;    &amp;lt;/s:form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-6031259361750032951?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/6031259361750032951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/6031259361750032951'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/03/struts2-jquery-ajaxforms-1.html' title='Struts2 JQuery AjaxFORMS-1'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Md4vphhr1_4/TZTby0LKYeI/AAAAAAAAAa0/8vIqAeKB2zI/s72-c/Struts2JQAjaxFORMS1.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-6451778955983846335</id><published>2011-03-25T11:57:00.000-07:00</published><updated>2011-03-25T12:00:49.297-07:00</updated><title type='text'>Struts2 - Jquery AJAX tutorial3</title><content type='html'>The AJAX with JSON example required more if not much to understand.&lt;br /&gt;Let's begin from the easiest point.&lt;br /&gt;&lt;br /&gt;The div named "result" is targeted by the AJAX call to put the&lt;br /&gt;output.  It is located in the body part of the AjaxTest6.JSP .&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&amp;lt;div id="result" class="result ui-widget-content ui-corner-all"&amp;gt;Click on the link below.&amp;lt;/div&amp;gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The AJAX call is located in the body part of the AjaxTest6.jsp  .&lt;br /&gt;...&lt;br /&gt; &amp;lt;sj:a id="ajaxjsonlink"&lt;br /&gt;  href="%{jsonurl}"&lt;br /&gt;  dataType="json"&lt;br /&gt;  onSuccessTopics="handleJsonResult"&lt;br /&gt;  indicator="indicator"&lt;br /&gt;  button="true"&lt;br /&gt;  buttonIcon="ui-icon-gear"&lt;br /&gt; &amp;gt;&lt;br /&gt;    Run AJAX Action with JSON Rsult&lt;br /&gt; &amp;lt;/sj:a&amp;gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;It uses the jsonurl which is set to&lt;br /&gt;...&lt;br /&gt;&amp;lt;s:url id="jsonurl" action="jsonlanguages"/&amp;gt;&lt;br /&gt;...&lt;br /&gt;So the action trigged by the AJAX call lies at the struts.xml with the label "jsonlanguages":&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;action name="jsonlanguages" class="ARS.Jsonlanguages" method="execute"&amp;gt;&lt;br /&gt;   &amp;lt;result type="json"&amp;gt;&amp;lt;param name="root"&amp;gt;languages&amp;lt;/param&amp;gt;&amp;lt;/result&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;The struts entry fro jsonlanguages at the struts.xml points to the class address as&lt;br /&gt;jsonlanguages.java at the ARS library.  IMPORTANT:  It also gives a hint about how the result should be returned.  The result should be based on the parameter "languages" not the default result definition.  I will further elaborate on this below.&lt;br /&gt;&lt;br /&gt;jsonlanguages.java uses a static string array of:&lt;br /&gt;...&lt;br /&gt;  private static String[]       staticLanguages  =&lt;br /&gt;                                                   {&lt;br /&gt;      "Actionscript (Flash)",&lt;br /&gt;      "ABAP Objects",&lt;br /&gt;      "Ada",&lt;br /&gt;      "Aleph",&lt;br /&gt;      "AppleScript",&lt;br /&gt;      "Beta",&lt;br /&gt;      "BlitzMax",&lt;br /&gt;//...&lt;br /&gt;      "Zonnon"&lt;br /&gt;                                                   };&lt;br /&gt;&lt;br /&gt;and later on it copies this string into languages array:&lt;br /&gt; in the execute method (the method that works as action default).&lt;br /&gt;...&lt;br /&gt;private String[]              languages        = Jsonlanguages.staticLanguages;&lt;br /&gt;&lt;br /&gt;  public String execute() throws Exception&lt;br /&gt;  {&lt;br /&gt;      ArrayList&amp;lt;String&amp;gt; tmp = new ArrayList&amp;lt;String&amp;gt;();&lt;br /&gt;      for (int i = 0; i &amp;lt; staticLanguages.length; i++)&lt;br /&gt;      {&lt;br /&gt;          tmp.add(staticLanguages[i]);&lt;br /&gt;      }&lt;br /&gt;      languages = tmp.toArray(new String[ tmp.size()]);&lt;br /&gt;    &lt;br /&gt;    return SUCCESS;&lt;br /&gt;  }&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;The execute method returns SUCCESS.  The difficulty is:  By default, the jsonlanguages action returns the staticLanguages if we say:&lt;br /&gt;...&lt;br /&gt;&amp;lt;action name="jsonlanguages" class="ARS.Jsonlanguages" method="execute"&amp;gt;&lt;br /&gt;   &amp;lt;result type="json"/&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;In order to return the languages we must indicate it as base to the parameter:&lt;br /&gt;...&lt;br /&gt;&amp;lt;action name="jsonlanguages" class="ARS.Jsonlanguages" method="execute"&amp;gt;&lt;br /&gt;   &amp;lt;result type="json"&amp;gt;&amp;lt;param name="root"&amp;gt;languages&amp;lt;/param&amp;gt;&amp;lt;/result&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is done somewhat different by Herr GEPPERT as he has chosen to do things in the &lt;br /&gt;convention fashion globally.&lt;br /&gt;&lt;br /&gt;Here is the full working code.&lt;br /&gt;&lt;br /&gt;AjaxTest6.jsp&lt;br /&gt;-------------&lt;br /&gt;&amp;lt;%-- &lt;br /&gt;    Document   : testAJAX&lt;br /&gt;    Created on : 15.Mar.2011, 20:08:02&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="sj" uri="/struts-jquery-tags"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;sj:head/&amp;gt;&lt;br /&gt;    &amp;lt;script&amp;gt;&lt;br /&gt;         $.subscribe('handleJsonResult', function(event,data) {      &lt;br /&gt;        $('#result').html("&amp;lt;ul id='languagesList'&amp;gt;&amp;lt;/ul&amp;gt;");&lt;br /&gt;        var list = $('#languagesList');&lt;br /&gt;  $.each(event.originalEvent.data, function(index, value) {&lt;br /&gt;   list.append('&amp;lt;li&amp;gt;'+value+'&amp;lt;/li&amp;gt;\n');&lt;br /&gt;  });&lt;br /&gt;    });&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div id="result" class="result ui-widget-content ui-corner-all"&amp;gt;Click on the link below.&amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;s:url id="jsonurl" action="jsonlanguages"/&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;sj:a id="ajaxjsonlink"&lt;br /&gt;  href="%{jsonurl}"&lt;br /&gt;  dataType="json"&lt;br /&gt;  onSuccessTopics="handleJsonResult"&lt;br /&gt;  indicator="indicator"&lt;br /&gt;  button="true"&lt;br /&gt;  buttonIcon="ui-icon-gear"&lt;br /&gt; &amp;gt;&lt;br /&gt;    Run AJAX Action with JSON Rsult&lt;br /&gt; &amp;lt;/sj:a&amp;gt;&lt;br /&gt;    &amp;lt;img id="indicator" src="./images/indicator.gif" alt="Loading..." style="display:none"/&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;struts.xml&lt;br /&gt;-----------&lt;br /&gt;...&lt;br /&gt;&amp;lt;action name="jsonlanguages" class="ARS.Jsonlanguages" method="execute"&amp;gt;&lt;br /&gt;   &amp;lt;result type="json"&amp;gt;&amp;lt;param name="root"&amp;gt;languages&amp;lt;/param&amp;gt;&amp;lt;/result&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;jsonlanguages.java&lt;br /&gt;------------------&lt;br /&gt;package ARS;&lt;br /&gt;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;import java.util.List;&lt;br /&gt;import java.util.Map;&lt;br /&gt;&lt;br /&gt;import org.apache.commons.lang.StringUtils;&lt;br /&gt;import com.opensymphony.xwork2.ActionSupport;&lt;br /&gt;&lt;br /&gt;public class Jsonlanguages extends ActionSupport {&lt;br /&gt;&lt;br /&gt;  private static final long     serialVersionUID = -3066791113091431706L;&lt;br /&gt;  private static String[]       staticLanguages  =&lt;br /&gt;                                                   {&lt;br /&gt;      "Actionscript (Flash)",&lt;br /&gt;      "ABAP Objects",&lt;br /&gt;      "Ada",&lt;br /&gt;      "Aleph",&lt;br /&gt;      "AppleScript",&lt;br /&gt;      "Beta",&lt;br /&gt;      "BlitzMax",&lt;br /&gt;// ...&lt;br /&gt;//      "XOTcl",&lt;br /&gt;// ...&lt;br /&gt;      "Zonnon"&lt;br /&gt;                                                   };&lt;br /&gt;  private String[]              languages        = Jsonlanguages.staticLanguages;&lt;br /&gt;&lt;br /&gt;  public String execute() throws Exception&lt;br /&gt;  {&lt;br /&gt;      ArrayList&amp;lt;String&amp;gt; tmp = new ArrayList&amp;lt;String&amp;gt;();&lt;br /&gt;      for (int i = 0; i &amp;lt; staticLanguages.length; i++)&lt;br /&gt;      {&lt;br /&gt;          tmp.add(staticLanguages[i]);&lt;br /&gt;      }&lt;br /&gt;      languages = tmp.toArray(new String[ tmp.size()]);&lt;br /&gt;    &lt;br /&gt;    return SUCCESS;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public String[] getLanguages()&lt;br /&gt;  {&lt;br /&gt;    return languages;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;The AJAX call trigs "handleJsonResult" via:&lt;br /&gt;...&lt;br /&gt;onSuccessTopics="handleJsonResult"&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;HandleJsonResult simply buids up a list;&lt;br /&gt;first creates the ist named "languagesList" and then&lt;br /&gt;adds each value in the "event.originalEvent.data" using the&lt;br /&gt;each iterator.&lt;br /&gt;&lt;br /&gt;         $.subscribe('handleJsonResult', function(event,data) {      &lt;br /&gt;        $('#result').html("&amp;lt;ul id='languagesList'&amp;gt;&amp;lt;/ul&amp;gt;");&lt;br /&gt;        var list = $('#languagesList');&lt;br /&gt;  $.each(event.originalEvent.data, function(index, value) {&lt;br /&gt;   list.append('&amp;lt;li&amp;gt;'+value+'&amp;lt;/li&amp;gt;\n');&lt;br /&gt;  });&lt;br /&gt;    });&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;This list is placed into the "targets" area of tha AJAX call, namely the div named "result".&lt;br /&gt;&lt;br /&gt;Kind regards.  Enjoy!&lt;br /&gt;&lt;br /&gt;Ali R+&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-6451778955983846335?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/6451778955983846335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/6451778955983846335'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/03/struts2-jquery-ajax-tutorial3.html' title='Struts2 - Jquery AJAX tutorial3'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-7469936170745046670</id><published>2011-03-25T11:56:00.000-07:00</published><updated>2011-03-25T11:57:24.859-07:00</updated><title type='text'>Struts2 - Jquery AJAX tutorial2</title><content type='html'>AjaxTest3.jsp is an example of form AJAX action.&lt;br /&gt;AjaxTest3.jsp&lt;br /&gt;-------------&lt;br /&gt;&amp;lt;%-- &lt;br /&gt;    Document   : testAJAX&lt;br /&gt;    Created on : 15.Mar.2011, 20:08:02&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="sj" uri="/struts-jquery-tags"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;sj:head/&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        &amp;lt;div id="formResult"&amp;gt;formResult&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;s:form id="form" action="echo" theme="xhtml"&amp;gt;&lt;br /&gt;     Echo: &amp;lt;s:textfield id="echo" name="echo" value="Hello World!!!"/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;    &amp;lt;/s:form&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;sj:a &lt;br /&gt;     id="ajaxformlink"&lt;br /&gt;     formIds="form"&lt;br /&gt;     targets="formResult"&lt;br /&gt;     indicator="indicator"&lt;br /&gt;     button="true"&lt;br /&gt; buttonIcon="ui-icon-gear"&lt;br /&gt;    &amp;gt;&lt;br /&gt;      Submit form here&lt;br /&gt;    &amp;lt;/sj:a&amp;gt;&lt;br /&gt;    &amp;lt;img id="indicator" src="images/indicator.gif" alt="Loading..." style="display:none"/&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;The action echo is trigged when the form is submitted.&lt;br /&gt;The echo action is defined at the struts.xml as&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;action name="echo" class="ARS.Echo" method="execute"&amp;gt;&lt;br /&gt; &amp;lt;result name="success"&amp;gt;/echo.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;&amp;lt;/action&amp;gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;It's source is at the ARS lib's echo.jsp member.&lt;br /&gt;/ARS/echo.jsp&lt;br /&gt;-------------&lt;br /&gt;package ARS;&lt;br /&gt;&lt;br /&gt;import org.apache.commons.logging.Log;&lt;br /&gt;import org.apache.commons.logging.LogFactory;&lt;br /&gt;&lt;br /&gt;import com.opensymphony.xwork2.ActionSupport;&lt;br /&gt;&lt;br /&gt;public class Echo extends ActionSupport {&lt;br /&gt;&lt;br /&gt;  private static final long serialVersionUID = 7968544374444173511L;&lt;br /&gt;  private static final Log  log              = LogFactory.getLog(Echo.class);&lt;br /&gt;&lt;br /&gt;  private String            echo;&lt;br /&gt;  private boolean           escape           = true;&lt;br /&gt;&lt;br /&gt;  public String execute() throws Exception&lt;br /&gt;  {&lt;br /&gt;&lt;br /&gt;    log.info("Echo : " + echo);&lt;br /&gt;&lt;br /&gt;    return SUCCESS;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public String getEcho()&lt;br /&gt;  {&lt;br /&gt;    return echo;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void setEcho(String echo)&lt;br /&gt;  {&lt;br /&gt;    this.echo = echo;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public boolean isEscape()&lt;br /&gt;  {&lt;br /&gt;    return escape;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void setEscape(boolean escape)&lt;br /&gt;  {&lt;br /&gt;    this.escape = escape;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Now, let's concentrate on the form of AjaxTest3.jsp:&lt;br /&gt;...&lt;br /&gt;&amp;lt;s:form id="form" action="echo" theme="xhtml"&amp;gt;&lt;br /&gt;     Echo: &amp;lt;s:textfield id="echo" name="echo" value="Hello World!!!"/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;    &amp;lt;/s:form&amp;gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;This form has a textfield named echo with a default value.&lt;br /&gt;If we look at the ARS.echo once again:&lt;br /&gt;&lt;br /&gt;public class Echo extends ActionSupport {&lt;br /&gt;...&lt;br /&gt;  private String            echo;&lt;br /&gt;  private boolean           escape           = true;&lt;br /&gt;&lt;br /&gt;  public String execute() throws Exception&lt;br /&gt;  {&lt;br /&gt;&lt;br /&gt;    log.info("Echo : " + echo);&lt;br /&gt;&lt;br /&gt;    return SUCCESS;&lt;br /&gt;  }&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;The execute method takes this default value and adds "Echo :" to its&lt;br /&gt;front and uses its setter and getters to change this value.&lt;br /&gt;&lt;br /&gt;struts.xml has:&lt;br /&gt;...&lt;br /&gt;&amp;lt;action name="echo" class="ARS.Echo" method="execute"&amp;gt;&lt;br /&gt; &amp;lt;result name="success"&amp;gt;/echo.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;&amp;lt;/action&amp;gt;&lt;br /&gt;It returns echo.jsp...&lt;br /&gt;&lt;br /&gt;echo.jsp&lt;br /&gt;--------&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;Echo : &amp;lt;s:property value="echo" escape="%{escape}"/&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;Now, it is clearer how it takes the echo and returns it back to&lt;br /&gt;AjaxTest3 which targets this output to &lt;br /&gt;...&lt;br /&gt;targets="formResult"&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;namely the div named formResult.&lt;br /&gt;&lt;br /&gt;AjaxTest4.jsp uses AJAX calls with events.  The events are triggered&lt;br /&gt;by the:&lt;br /&gt;...&lt;br /&gt;     onClickTopics="beforeLink"&lt;br /&gt;     onCompleteTopics="completeLink"&lt;br /&gt;     onErrorTopics="errorStateLink"&lt;br /&gt;...&lt;br /&gt;handlers.&lt;br /&gt;&lt;br /&gt;The events are defined in the subscribing section in the&lt;br /&gt;script part at the beginning.  Namely:&lt;br /&gt;...&lt;br /&gt;&amp;lt;script type="text/javascript" charset="utf-8"&amp;gt;&lt;br /&gt;        //$(document).ready(function() {&lt;br /&gt;               $.subscribe('beforeLink', function(event,data) {&lt;br /&gt;                   alert('Before request ');&lt;br /&gt;                   $('#result').html('Loading ...');&lt;br /&gt;               });&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;I have added file-does-not-exist1.html so that you can rename&lt;br /&gt;and play with it.&lt;br /&gt;The complete code follows:&lt;br /&gt;&lt;br /&gt;AjaxTest4.jsp&lt;br /&gt;-------------&lt;br /&gt;&amp;lt;%-- &lt;br /&gt;    Document   : testAJAX&lt;br /&gt;    Created on : 15.Mar.2011, 20:08:02&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="sj" uri="/struts-jquery-tags"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;sj:head/&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;script type="text/javascript" charset="utf-8"&amp;gt;&lt;br /&gt;        //$(document).ready(function() {&lt;br /&gt;               $.subscribe('beforeLink', function(event,data) {&lt;br /&gt;                   alert('Before request ');&lt;br /&gt;                   $('#result').html('Loading ...');&lt;br /&gt;               });&lt;br /&gt;               $.subscribe('completeLink', function(event,data) {&lt;br /&gt;                   $('#result').append('&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;strong&amp;gt;Completed request '+event.originalEvent.request.statusText+' completed with '+event.originalEvent.status+ '.&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;Status: '+event.originalEvent.request.status);&lt;br /&gt;               });&lt;br /&gt;               $.subscribe('errorStateLink', function(event,data) {&lt;br /&gt;                   $('#result').html('&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;strong&amp;gt;Error request '+event.originalEvent.request.statusText+' completed with '+event.originalEvent.status+ '.&amp;lt;/strong&amp;gt;&amp;lt;br/&amp;gt;Status: '+event.originalEvent.request.status);&lt;br /&gt;               });&lt;br /&gt;        //});&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        &amp;lt;s:url id="ajax" value="/ajax1.action"/&amp;gt;&lt;br /&gt;        &amp;lt;div id="result" name="result"&amp;gt;result&amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;div id="result2" name="result2"&amp;gt;result&amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;sj:a&lt;br /&gt;  id="ajaxlink"&lt;br /&gt;  href="%{ajax}"&lt;br /&gt;  indicator="indicator"&lt;br /&gt;  targets="result"&lt;br /&gt;  onClickTopics="beforeLink"&lt;br /&gt;  onCompleteTopics="completeLink"&lt;br /&gt;  effect="pulsate"&lt;br /&gt;     button="true"&lt;br /&gt;  buttonIcon="ui-icon-gear"&lt;br /&gt; &amp;gt;&lt;br /&gt;   Run AJAX Action&lt;br /&gt; &amp;lt;/sj:a&amp;gt;&lt;br /&gt;    &amp;lt;img id="indicator" src="images/indicator.gif" alt="Loading..." style="display:none"/&amp;gt;&lt;br /&gt;    &amp;lt;br/&amp;gt;&lt;br /&gt;    &amp;lt;br/&amp;gt;&lt;br /&gt;    &amp;lt;sj:a&lt;br /&gt;     id="ajaxlink2"&lt;br /&gt;     href="file-does-not-exist.html"&lt;br /&gt;     indicator="indicator2"&lt;br /&gt;     targets="result"&lt;br /&gt;     onClickTopics="beforeLink"&lt;br /&gt;     onCompleteTopics="completeLink"&lt;br /&gt;     onErrorTopics="errorStateLink"&lt;br /&gt;     effect="pulsate"&lt;br /&gt;     effectDuration="1500"&lt;br /&gt;     button="true"&lt;br /&gt;  buttonIcon="ui-icon-gear"&lt;br /&gt;    &amp;gt;&lt;br /&gt;      Run AJAX Error Action&lt;br /&gt;    &amp;lt;/sj:a&amp;gt;&lt;br /&gt;    &amp;lt;img id="indicator2" src="images/indicator.gif" alt="Loading..." style="display:none"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;I added bounce effect to the highlight effect example for economy.&lt;br /&gt;The AJAX function's effects can be used for highlight:&lt;br /&gt;...&lt;br /&gt;  effect="highlight"&lt;br /&gt;  effectOptions="{ color : '#222222' }"&lt;br /&gt;  effectDuration="3000"&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;and bounce:&lt;br /&gt;...&lt;br /&gt;  effect="bounce"&lt;br /&gt;  effectDuration="2200"&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;The full code follows:&lt;br /&gt;&lt;br /&gt;AjaxTest5.jsp&lt;br /&gt;-------------&lt;br /&gt;&amp;lt;%-- &lt;br /&gt;    Document   : testAJAX&lt;br /&gt;    Created on : 15.Mar.2011, 20:08:02&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="sj" uri="/struts-jquery-tags"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;sj:head/&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        &amp;lt;div id="result"&amp;gt;formResult&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;s:url id="ajax" value="/ajax1.action"/&amp;gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;sj:a&lt;br /&gt;  id="ajaxlink"&lt;br /&gt;  href="%{ajax}"&lt;br /&gt;  targets="result"&lt;br /&gt;  effect="highlight"&lt;br /&gt;  effectOptions="{ color : '#222222' }"&lt;br /&gt;  effectDuration="3000"&lt;br /&gt;                button="true"&lt;br /&gt;  buttonIcon="ui-icon-gear"&lt;br /&gt; &amp;gt;&lt;br /&gt;   Run AJAX Action&lt;br /&gt; &amp;lt;/sj:a&amp;gt;&lt;br /&gt;&amp;lt;s:url id="ajax2" value="/ajax1.action"/&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;sj:a&lt;br /&gt;  id="ajaxlink2"&lt;br /&gt;  href="%{ajax}"&lt;br /&gt;  indicator="indicator"&lt;br /&gt;  targets="result" &lt;br /&gt;  effect="bounce"&lt;br /&gt;  effectDuration="2200"&lt;br /&gt;     button="true"&lt;br /&gt;  buttonIcon="ui-icon-gear"&lt;br /&gt; &amp;gt;&lt;br /&gt;   Run AJAX Action&lt;br /&gt; &amp;lt;/sj:a&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-7469936170745046670?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/7469936170745046670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/7469936170745046670'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/03/struts2-jquery-ajax-tutorial2.html' title='Struts2 - Jquery AJAX tutorial2'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-7253770348736830281</id><published>2011-03-25T11:51:00.000-07:00</published><updated>2011-03-25T11:54:49.125-07:00</updated><title type='text'>Struts2 - Jquery AJAX tutorial1</title><content type='html'>This is a simplified, easy to understand version of AJAX events section from the STRUTS2 JQUERY PLUGIN SHOWCASE-2.5.0 of Johannes Geppert Hosted by weinfreund.de.  The difference is GEPPERT has provided all the examples in the frameworks of a showcase using STRUTS2-convention, velocity, YAML, Maven and others.&lt;br /&gt;&lt;br /&gt;My approach is to minimize the external connections, make each example independent and break the big pieces to smaller ones.  Each of the pieces I provide will work alone and I will provide complete and working examples.  I made a few additions when it is unavoidable.&lt;br /&gt;&lt;br /&gt;Herr GEPPERT's showcase can easily be compiled and run without any problem.  It was great fun to analyze and break down his work to smaller pieces.  His work is very well written and logically documented, easy to understand but it is complex and it must be well deserved, a piece of art.  &lt;br /&gt;&lt;br /&gt;1- First things first.  Create a Web application.&lt;br /&gt;2- Create a lib and put everything in the showcases lib here.  Put them into the CLASSPATH.  I did not change the css and themes references to button and div definitions of Herr GEPPERT.&lt;br /&gt;3- I put all the AJAX examples in a single application's WEB lib.&lt;br /&gt;4- Of course I used the Struts.xml for all the actions because of 3.&lt;br /&gt;5- Web.xml is different from Herr GEPPERT's.  He uses convention and I use the classic STRUTS2.&lt;br /&gt;&lt;br /&gt;Here are :&lt;br /&gt;&lt;br /&gt;web.xml&lt;br /&gt;---------&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&amp;gt;&lt;br /&gt;&amp;lt;display-name&amp;gt;Basic_Struts2_Ant&amp;lt;/display-name&amp;gt;&lt;br /&gt;  &amp;lt;welcome-file-list&amp;gt;&lt;br /&gt;    &amp;lt;welcome-file&amp;gt;/test.action&amp;lt;/welcome-file&amp;gt;&lt;br /&gt;  &amp;lt;/welcome-file-list&amp;gt;&lt;br /&gt;  &lt;br /&gt;        &lt;br /&gt;    &amp;lt;filter&amp;gt;&lt;br /&gt;        &amp;lt;filter-name&amp;gt;struts2&amp;lt;/filter-name&amp;gt;&lt;br /&gt;        &amp;lt;filter-class&amp;gt;org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;    &amp;lt;/filter&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;        &amp;lt;filter-name&amp;gt;struts2&amp;lt;/filter-name&amp;gt;&lt;br /&gt;        &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;    &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;    &lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;br /&gt;&lt;br /&gt;struts.xml&lt;br /&gt;----------&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE struts PUBLIC&lt;br /&gt;    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"&lt;br /&gt;    "http://struts.apache.org/dtds/struts-2.0.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;struts&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;constant name="struts.devMode" value="true" /&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;package name="basicstruts2" extends="struts-default, json-default"&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;action name="index"&amp;gt;&lt;br /&gt;   &amp;lt;result&amp;gt;/index.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;                &amp;lt;action name="AjaxTest"&amp;gt;&lt;br /&gt;   &amp;lt;result&amp;gt;/data_server.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;                &amp;lt;action name="myremoteactionone"&amp;gt;&lt;br /&gt;   &amp;lt;result&amp;gt;/data_server.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;                &amp;lt;action name="myremoteactiontwo"&amp;gt;&lt;br /&gt;   &amp;lt;result&amp;gt;/data_server.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;                &amp;lt;action name="myremoteactionthree"&amp;gt;&lt;br /&gt;   &amp;lt;result&amp;gt;/data_server.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;                &amp;lt;action name="myremact1"&amp;gt;&lt;br /&gt;   &amp;lt;result&amp;gt;/index.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;                &amp;lt;action name="myremact2"&amp;gt;&lt;br /&gt;   &amp;lt;result&amp;gt;/index.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;                &amp;lt;action name="myremact3"&amp;gt;&lt;br /&gt;   &amp;lt;result&amp;gt;/index.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;                &amp;lt;action name="myremoteaction"&amp;gt;&lt;br /&gt;   &amp;lt;result&amp;gt;/data_server.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;                &amp;lt;action name="ajax1"&amp;gt;&lt;br /&gt;   &amp;lt;result&amp;gt;/data_server1.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;                &amp;lt;action name="ajax2"&amp;gt;&lt;br /&gt;   &amp;lt;result&amp;gt;/data_server2.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;                &amp;lt;action name="ajax3"&amp;gt;&lt;br /&gt;   &amp;lt;result&amp;gt;/data_server3.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;                &amp;lt;action name="ajax4"&amp;gt;&lt;br /&gt;   &amp;lt;result&amp;gt;/data_server4.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;                &amp;lt;action name="echo" class="ARS.Echo" method="execute"&amp;gt;&lt;br /&gt;   &amp;lt;result name="success"&amp;gt;/echo.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt;                &amp;lt;action name="jsonlanguages" class="ARS.Jsonlanguages" method="execute"&amp;gt;&lt;br /&gt;   &amp;lt;result type="json"&amp;gt;&amp;lt;param name="root"&amp;gt;languages&amp;lt;/param&amp;gt;&amp;lt;/result&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;/action&amp;gt;&lt;br /&gt; &amp;lt;/package&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/struts&amp;gt;&lt;br /&gt;&lt;br /&gt;I used a very simple data server JSP file.&lt;br /&gt;&lt;br /&gt;data_server.jsp&lt;br /&gt;---------------&lt;br /&gt;&amp;lt;%-- &lt;br /&gt;    Document   : data_server&lt;br /&gt;    Created on : 19.Mar.2011, 21:10:39&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;   "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%&lt;br /&gt;    out.println("Hello world!");&lt;br /&gt;%&lt;br /&gt;&lt;br /&gt;Later I moved to Herr GEPPERT's approach.  Namely just a few words as data in the JSP.&lt;br /&gt;All four of them are the same.  You can change and play with them.&lt;br /&gt;&lt;br /&gt;data_server1.jsp&lt;br /&gt;data_server2.jsp&lt;br /&gt;data_server3.jsp&lt;br /&gt;data_server4.jsp&lt;br /&gt;----------------&lt;br /&gt;test ARS&lt;br /&gt;&lt;br /&gt;You have to right click on AjaxTest.jsp and then RUN this file to test our first example.&lt;br /&gt;&lt;br /&gt;The first AJAX example targets a div namely div1.  The related action is AjaxTest.action which can be tracked at the struts.xml to data_server.jsp which&lt;br /&gt;returns "Hello World!".  This phrase is written to the target div1 area.&lt;br /&gt;&lt;br /&gt;Please note the use of the struts URL tag.&lt;br /&gt;&lt;br /&gt;AjaxTest.jsp&lt;br /&gt;------------&lt;br /&gt;&amp;lt;%-- &lt;br /&gt;    Document   : testAJAX&lt;br /&gt;    Created on : 15.Mar.2011, 20:08:02&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="sj" uri="/struts-jquery-tags"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;sj:head/&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;    &amp;lt;div id="div1"&amp;gt;Div 1&amp;lt;/div&amp;gt;&lt;br /&gt;    &amp;lt;s:url id="ajaxTest" value="/AjaxTest.action"/&amp;gt;&lt;br /&gt;    &amp;lt;sj:a id="link1" href="%{ajaxTest}" targets="div1"&amp;gt;       Update Content     &amp;lt;/sj:a&amp;gt;&lt;br /&gt;    &amp;lt;br&amp;gt;&lt;br /&gt;    &amp;lt;br&amp;gt;&lt;br /&gt;&amp;lt;s:url id="ajax" value="ajax1.action"/&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;sj:a id="ajaxlink"&lt;br /&gt;  href="%{ajax}"&lt;br /&gt;  targets="result"&lt;br /&gt;  indicator="indicator"&lt;br /&gt;  button="true"&lt;br /&gt;  buttonIcon="ui-icon-refresh"&lt;br /&gt; &amp;gt;&lt;br /&gt;    Run AJAX Action&lt;br /&gt; &amp;lt;/sj:a&amp;gt;&lt;br /&gt;    &amp;lt;br&amp;gt;&lt;br /&gt;    &amp;lt;br&amp;gt;&lt;br /&gt;    &amp;lt;s:url id="ajax2" value="ajax1.action"/&amp;gt;&lt;br /&gt;     &amp;lt;sj:a id="ajaxlink2"&lt;br /&gt;  href="%{ajax2}"&lt;br /&gt;  targets="div1"&lt;br /&gt;  indicator="indicator2"&lt;br /&gt;  button="true"&lt;br /&gt;  buttonIcon="ui-icon-refresh"&lt;br /&gt; &amp;gt;&lt;br /&gt;    Run AJAX Action2&lt;br /&gt; &amp;lt;/sj:a&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;The second example AjaxTest2.jsp&lt;br /&gt;&lt;br /&gt;AjaxTest2.jsp&lt;br /&gt;--------------&lt;br /&gt;&amp;lt;%-- &lt;br /&gt;    Document   : testAJAX&lt;br /&gt;    Created on : 15.Mar.2011, 20:08:02&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="s" uri="/struts-tags"%&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib prefix="sj" uri="/struts-jquery-tags"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;sj:head/&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;    &amp;lt;strong&amp;gt;Result Div 1 :&amp;lt;/strong&amp;gt;&lt;br /&gt; &amp;lt;div id="result1" class="result ui-widget-content ui-corner-all"&amp;gt;Click on the link bellow.&amp;lt;/div&amp;gt;&lt;br /&gt;    &amp;lt;strong&amp;gt;Result Div 2 :&amp;lt;/strong&amp;gt;&lt;br /&gt;    &amp;lt;div id="result2" class="result ui-widget-content ui-corner-all"&amp;gt;Click on the link bellow.&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;s:url id="ajax" value="/ajax3.action"/&amp;gt;&lt;br /&gt;    &amp;lt;sj:a&lt;br /&gt;     id="ajaxlink" &lt;br /&gt;     href="%{ajax}"&lt;br /&gt;     targets="result1,result2"&lt;br /&gt;     button="true"&lt;br /&gt;  buttonIcon="ui-icon-gear"&lt;br /&gt;    &amp;gt;&lt;br /&gt;      Run AJAX Action&lt;br /&gt;    &amp;lt;/sj:a&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-7253770348736830281?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/7253770348736830281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/7253770348736830281'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/03/struts2-jquery-ajax-tutorial1.html' title='Struts2 - Jquery AJAX tutorial1'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-6979307396351743494</id><published>2011-03-19T09:44:00.000-07:00</published><updated>2011-03-19T09:46:01.153-07:00</updated><title type='text'>Simple DAO Tutorial - 5</title><content type='html'>This DAO is a new version of the original one that &lt;br /&gt;you can find at:&lt;br /&gt;http://tekne-techne.blogspot.com/2011/01/simple-dao-tutorial-1.html &lt;br /&gt;&lt;br /&gt;I have used this original DAO's MySQL implementation files&lt;br /&gt;in the Simple CRUD with JQuery and many other examples at my blog.&lt;br /&gt;&lt;br /&gt;The problem in the original DAO was it reorganised the DB as soon as&lt;br /&gt;a record was deleted.  This was caused by a wrong design&lt;br /&gt;decision that each record should have a sequential id with no&lt;br /&gt;ids missing in between them.&lt;br /&gt;&lt;br /&gt;I removed this requirement in this new version of DAO with:&lt;br /&gt;&lt;br /&gt;public Person readNextRec() throws PersonDAOSysException {&lt;br /&gt;...&lt;br /&gt;stmt = conn.prepareStatement("select id, firstName, lastName, "&lt;br /&gt;         + " hobby from personTab where id &gt; ? ORDER BY ID ASC LIMIT 1");&lt;br /&gt;...&lt;br /&gt;This is true for only HSQL and MySQL DBs.  The vector 'DB' is left as&lt;br /&gt;it was.&lt;br /&gt;&lt;br /&gt;To read an in depth analysis of this package please refer to&lt;br /&gt;http://tekne-techne.blogspot.com/2011/01/simple-dao-tutorial-1.html&lt;br /&gt;&lt;br /&gt;To correct speed problems at the delete function of Simple CRUD with JQuery&lt;br /&gt;you may use PersonDAOMySQLDBImpl.java of nbDAObasicARSv1.0.&lt;br /&gt;&lt;br /&gt;I will provide a new version as such for Simple CRUD with JQuery&lt;br /&gt;in the near future.  Also a new master - detail on the same JSP&lt;br /&gt;will follow.&lt;br /&gt;&lt;br /&gt;Once again this for only training purposes, it is not meant for&lt;br /&gt;any other.&lt;br /&gt;&lt;br /&gt;You can download the source files from sourceforge:&lt;br /&gt;http://sourceforge.net/projects/crudjquery/files/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-6979307396351743494?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/6979307396351743494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/6979307396351743494'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/03/simple-dao-tutorial-5.html' title='Simple DAO Tutorial - 5'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-7030353756725669173</id><published>2011-03-17T04:43:00.008-07:00</published><updated>2011-03-17T04:55:05.308-07:00</updated><title type='text'>Crud with JQuery Master-Detail 7</title><content type='html'>The data table at personList.jsp uses PersonServer.jsp.&lt;br /&gt;PersonServer.jsp is a translation of PHP source provided&lt;br /&gt;by Monseur Allan Jardine at&lt;br /&gt;http://www.datatables.net/examples&lt;br /&gt;&lt;br /&gt;some more explanation:&lt;br /&gt;http://tekne-techne.blogspot.com/2011/02/jquery-server-processing-with-jsp-java.html&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PersonServer.jsp&lt;br /&gt;----------------&lt;br /&gt;&amp;lt%--&lt;br /&gt;    Document   : person_server.jsp&lt;br /&gt;    Created on : 04.?ub.2011, 17:53:53&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lt%@page import="java.sql.Connection"%&amp;gt&lt;br /&gt;&amp;lt%@page import="atg.taglib.json.util.*"%&amp;gt&lt;br /&gt;&amp;lt%@page import= "java.util.*"%&amp;gt&lt;br /&gt;&amp;lt%@page import= "java.sql.*"%&amp;gt&lt;br /&gt;&amp;lt%@page import= "org.apache.commons.lang.*"%&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt%&lt;br /&gt;            class Utilities {&lt;br /&gt;&lt;br /&gt;                Utilities() {&lt;br /&gt;                };&lt;br /&gt;&lt;br /&gt;                String escape_string(String input) {&lt;br /&gt;                    return StringEscapeUtils.escapeHtml(input);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;%&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lt%&lt;br /&gt;            System.out.println("test arsssssssssssssssssssssss");&lt;br /&gt;            Utilities util = new Utilities();&lt;br /&gt;            /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *&lt;br /&gt;             * Easy set variables&lt;br /&gt;             */&lt;br /&gt;&lt;br /&gt;            /* Array of database columns which should be read and sent back to DataTables. Use a space where&lt;br /&gt;             * you want to insert a non-database field (for example a counter or static image)&lt;br /&gt;             */&lt;br /&gt;            String[] aColumns = {"id", "firstname", "lastname", "hobby"};&lt;br /&gt;&lt;br /&gt;            /* Indexed column (used for fast and accurate table cardinality) */&lt;br /&gt;            String sIndexColumn = "id";&lt;br /&gt;&lt;br /&gt;            /* DB table to use */&lt;br /&gt;            String sTable = "persontab";&lt;br /&gt;            /* Database connection information */&lt;br /&gt;            String user = "root";&lt;br /&gt;            String password = "3391309";&lt;br /&gt;            String db = "persondao";&lt;br /&gt;            String server = "localhost";&lt;br /&gt;&lt;br /&gt;            /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *&lt;br /&gt;             * If you just want to use the basic configuration for DataTables with PHP server-side, there is&lt;br /&gt;             * no need to edit below this line&lt;br /&gt;             */&lt;br /&gt;&lt;br /&gt;            /*&lt;br /&gt;             * MySQL connection&lt;br /&gt;             */&lt;br /&gt;&lt;br /&gt;            Connection conn = null;&lt;br /&gt;&lt;br /&gt;            try {&lt;br /&gt;                Class.forName("com.mysql.jdbc.Driver").newInstance();&lt;br /&gt;                conn = DriverManager.getConnection("jdbc:mysql://localhost/" + db,&lt;br /&gt;                        user, password);&lt;br /&gt;&lt;br /&gt;                if (!conn.isClosed()) {&lt;br /&gt;                    System.out.println("Successfully connected to "&lt;br /&gt;                            + "MySQL server using TCP/IP...");&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;            } catch (Exception e) {&lt;br /&gt;                System.err.println("Exception: " + e.getMessage());&lt;br /&gt;            } finally {&lt;br /&gt;//                try {&lt;br /&gt;//                    if (conn != null) {&lt;br /&gt;//                        //conn.close();&lt;br /&gt;//                    }&lt;br /&gt;//                } catch (SQLException e) {&lt;br /&gt;//                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;                /*&lt;br /&gt;                 * Paging&lt;br /&gt;                 */&lt;br /&gt;                String sLimit = "";&lt;br /&gt;                if (request.getParameter("iDisplayStart") != null&lt;br /&gt;                        &amp;&amp; request.getParameter("iDisplayLength") != "-1") {&lt;br /&gt;                    sLimit = "LIMIT " + util.escape_string(request.getParameter("iDisplayStart")) +&lt;br /&gt;                            ", " + util.escape_string(request.getParameter("iDisplayLength"));&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                /*&lt;br /&gt;                 * Ordering&lt;br /&gt;                 */&lt;br /&gt;                String sOrder = "";&lt;br /&gt;               &lt;br /&gt;                if (request.getParameter("iSortCol_0") != null) {&lt;br /&gt;                    sOrder = "ORDER BY  ";&lt;br /&gt;&lt;br /&gt;                    for (int i = 0; i &amp;lt Integer.valueOf(request.getParameter("iSortingCols")); i++) {&lt;br /&gt;                        if (request.getParameter("bSortable_" + Integer.valueOf(request.getParameter("iSortCol_" + String.valueOf(i)))).equals("true")) {&lt;br /&gt;                            sOrder += aColumns[Integer.valueOf(request.getParameter("iSortCol_" + String.valueOf(i)))] + " "&lt;br /&gt;                                    + util.escape_string(request.getParameter("sSortDir_" + String.valueOf(i))) + ", ";&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;&lt;br /&gt;                    sOrder = sOrder.substring(0, sOrder.length()-2);&lt;br /&gt;                    if (sOrder.equals("ORDER BY")) {&lt;br /&gt;                        sOrder = "";&lt;br /&gt;                    }&lt;br /&gt;                    sOrder += " ";&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                /*&lt;br /&gt;                 * Filtering&lt;br /&gt;                 * NOTE this does not match the built-in DataTables filtering which does it&lt;br /&gt;                 * word by word on any field. It's possible to do here, but concerned about efficiency&lt;br /&gt;                 * on very large tables, and MySQL's regex functionality is very limited&lt;br /&gt;                 */&lt;br /&gt;                String sWhere = "";&lt;br /&gt;                 System.out.println("sSearch="+ request.getParameter("sSearch"));&lt;br /&gt;                 &lt;br /&gt;                if (request.getParameter("sSearch") != "") {&lt;br /&gt;                    sWhere = "WHERE (";&lt;br /&gt;                    for (int i = 0; i &amp;lt aColumns.length; i++) {&lt;br /&gt;                        sWhere += aColumns[i] + " LIKE '%" + util.escape_string(request.getParameter("sSearch")) + "%' OR ";&lt;br /&gt;                    }&lt;br /&gt;                    sWhere = sWhere.substring(0, sWhere.length()-3);&lt;br /&gt;                    sWhere += ')';&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                /* Individual column filtering */&lt;br /&gt;&lt;br /&gt;                for (int i = 0; i &amp;lt aColumns.length; i++) {&lt;br /&gt;                    if (request.getParameter("bSearchable_" + String.valueOf(i)) == "true"&lt;br /&gt;                            &amp;&amp; request.getParameter("sSearch_" + String.valueOf(i)) != "") {&lt;br /&gt;                        if (sWhere == "") {&lt;br /&gt;                            sWhere = "WHERE ";&lt;br /&gt;                        } else {&lt;br /&gt;                            sWhere += " AND ";&lt;br /&gt;                        }&lt;br /&gt;                        sWhere += aColumns[i] + " LIKE '%" + util.escape_string(request.getParameter("sSearch_" + String.valueOf(i))) + "%' ";&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                /*&lt;br /&gt;                 * SQL queries&lt;br /&gt;                 * Get data to display&lt;br /&gt;                 */&lt;br /&gt;                String strColumnNames = "";&lt;br /&gt;&lt;br /&gt;                for (int i=0;i &amp;lt aColumns.length;i++){&lt;br /&gt;                    strColumnNames = strColumnNames + ", "+ aColumns[i];&lt;br /&gt;                    }&lt;br /&gt;                strColumnNames = strColumnNames.substring(1);&lt;br /&gt;&lt;br /&gt;                String sQuery = "SELECT "&lt;br /&gt;                        + strColumnNames&lt;br /&gt;                        + " FROM " + sTable&lt;br /&gt;                        + " "&lt;br /&gt;                        + sWhere&lt;br /&gt;                        + sOrder&lt;br /&gt;                        + sLimit;&lt;br /&gt;&lt;br /&gt;    System.out.println("sQuery="+sQuery);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                Statement s = conn.createStatement();&lt;br /&gt;                s.executeQuery(sQuery);&lt;br /&gt;&lt;br /&gt;                /* Data set length after filtering */&lt;br /&gt;                ResultSet rs = s.getResultSet();&lt;br /&gt;                int count = 0;&lt;br /&gt;                while (rs.next()) {&lt;br /&gt;                    int idCol = rs.getInt("id");&lt;br /&gt;                    System.out.println("id = " + idCol);&lt;br /&gt;                    ++count;&lt;br /&gt;                }&lt;br /&gt;                int iFilteredTotal = count;&lt;br /&gt;                rs.close();&lt;br /&gt;                s.close();&lt;br /&gt;                System.out.println("Selected count="+iFilteredTotal);&lt;br /&gt;&lt;br /&gt;                /* Total data set length */&lt;br /&gt;                s = conn.createStatement();&lt;br /&gt;                String sQuery2 = " SELECT COUNT(*) AS rowcount FROM " + sTable;&lt;br /&gt;                rs = s.executeQuery(sQuery2);&lt;br /&gt;                rs.next();&lt;br /&gt;                int iTotal = rs.getInt("rowcount");&lt;br /&gt;                rs.close();&lt;br /&gt;                s.close();&lt;br /&gt;                System.out.println("Total count="+iTotal);&lt;br /&gt;&lt;br /&gt;         /*&lt;br /&gt;  * Output&lt;br /&gt;  */&lt;br /&gt;  String output = "{" +&lt;br /&gt;  "\"sEcho\" : "+ request.getParameter("sEcho")+ ", " +&lt;br /&gt;  "\"iTotalRecords\" : " +  String.valueOf(iTotal) + ", " +&lt;br /&gt;  "\"iTotalDisplayRecords\" : " + String.valueOf(iFilteredTotal) + ", " +&lt;br /&gt; //              "\"iDisplayLength\" : " + "10" + ", " +&lt;br /&gt; //               "\"iDisplayStart\" : " + "10" + ", " +&lt;br /&gt;  "\"aaData\" : [" + "";&lt;br /&gt;&lt;br /&gt;         Object[][] aaData= new Object[iFilteredTotal][4];&lt;br /&gt;&lt;br /&gt;               s = conn.createStatement();&lt;br /&gt;                s.executeQuery(sQuery);&lt;br /&gt;                rs = s.getResultSet();&lt;br /&gt;&lt;br /&gt;                int rowNum=0;&lt;br /&gt; while ( rs.next() )&lt;br /&gt; {&lt;br /&gt;            System.out.println("rowNum="+ rowNum);&lt;br /&gt;            //if (rowNum &amp;gt 3) break;&lt;br /&gt;                Object[] aRow = {0,"","",""};&lt;br /&gt;  Object[] row = {0,"","",""};&lt;br /&gt;&lt;br /&gt;  for ( int i=0 ; i&amp;ltaColumns.length ; i++ )&lt;br /&gt;  {&lt;br /&gt;                    System.out.println("i="+ i +" colVal="+ rs.getString( aColumns[i]));&lt;br /&gt;                    if ((i == 0)&amp;&amp; (aColumns[i] != " ")){&lt;br /&gt;   row[i] = rs.getInt( aColumns[i]);&lt;br /&gt;                    }&lt;br /&gt;                    else{&lt;br /&gt;                        row[i] = rs.getString( aColumns[i]);&lt;br /&gt;                        }&lt;br /&gt;  }&lt;br /&gt;  aaData[rowNum] = row;&lt;br /&gt;                System.out.println("rowNum("+rowNum +") row[0]="+row[0].toString());&lt;br /&gt;                rowNum++;&lt;br /&gt; }&lt;br /&gt;                rs.close();&lt;br /&gt;                s.close();&lt;br /&gt;&lt;br /&gt;               String valRow = " [ ";&lt;br /&gt;                for (int rowN = 0; rowN &amp;lt iFilteredTotal; rowN++) {&lt;br /&gt;                    //System.out.println("rowN="+rowN);&lt;br /&gt;                    for (int colN = 0; colN &amp;lt aColumns.length; colN++) {&lt;br /&gt;                        //System.out.println("      colN="+colN);&lt;br /&gt;                        if (aColumns[colN] == "id" )&lt;br /&gt;                            valRow = valRow + " " + aaData[rowN][colN].toString() + " , ";&lt;br /&gt;                        else if ( aColumns[colN] != " " )&lt;br /&gt;                             valRow = valRow + "\"" + aaData[rowN][colN].toString() + "\" , ";&lt;br /&gt;                    }&lt;br /&gt;                    valRow = valRow.substring(0, valRow.length()-2);&lt;br /&gt;                    valRow = valRow + " ], ";&lt;br /&gt;                    //System.out.println("valRow="+valRow);&lt;br /&gt;                    output = output + valRow;&lt;br /&gt;                    valRow = " [ ";&lt;br /&gt;                }&lt;br /&gt;               System.out.println("output="+output);&lt;br /&gt;                output = output.substring(0, output.length()-2);&lt;br /&gt;                output = output + " ] }";&lt;br /&gt;&lt;br /&gt;                out.print(output);&lt;br /&gt;%&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The util package has:&lt;br /&gt;Escape.java&lt;br /&gt;-----------&lt;br /&gt;package util;&lt;br /&gt;&lt;br /&gt;import org.apache.commons.lang.*;&lt;br /&gt;&lt;br /&gt;public class Escape {&lt;br /&gt;  public static String html(String input) {&lt;br /&gt;    return StringEscapeUtils.escapeHtml(input);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public static String javaScript(String input) {&lt;br /&gt;    return StringEscapeUtils.escapeJavaScript(input);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public static String lineBreakToBr(String input) {&lt;br /&gt;    return input.replaceAll("\\n", "&amp;ltbr /&amp;gt");&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public static String paragraphBreakToBrs(String input) {&lt;br /&gt;    return input.replaceAll("\\n\\s*\\n", "&amp;ltbr /&amp;gt&amp;ltbr /&amp;gt");&lt;br /&gt;  }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-7030353756725669173?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/7030353756725669173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/7030353756725669173'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/03/crud-with-jquery-master-detail-7.html' title='Crud with JQuery Master-Detail 7'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-6389178004150667257</id><published>2011-03-17T04:43:00.007-07:00</published><updated>2011-03-17T04:53:59.353-07:00</updated><title type='text'>Crud with JQuery Master-Detail 6</title><content type='html'>When the list button is pressed  the listServlet is NOT called.&lt;br /&gt;Instead &lt;br /&gt;...&lt;br /&gt;    $(function() {&lt;br /&gt;        $("input#List").click(function() {&lt;br /&gt;            window.open("personList.jsp");&lt;br /&gt;            //window.close();&lt;br /&gt;            window.open('close.html', '_self');&lt;br /&gt;        })&lt;br /&gt;    })&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;works in the JQmultiAJAXCalls.js.&lt;br /&gt;&lt;br /&gt;It simply opens the personList.jsp.&lt;br /&gt;It also closes the previous (index.jsp) windows.&lt;br /&gt;window.open('close.html', '_self'); is used to disable the&lt;br /&gt;comirmation message at the window close event.&lt;br /&gt;&lt;br /&gt;personList.jsp is a JQuery data tables example customized for&lt;br /&gt;this app's purpose.  The js source part at the beginning &lt;br /&gt;serves for data pipelining, namely it feeds tha data as it&lt;br /&gt;gets necessary.  This helps not to overload the data table.&lt;br /&gt;I had to make slight changes so that the given example (JQuery&lt;br /&gt;standard providence) could work according to my needs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Please notice that there is a click function defined by me.&lt;br /&gt;This first resets all the rows then extracts the current id &lt;br /&gt;from the current row.  It hen makes an AJAX call to the&lt;br /&gt;selectList servlet.  SelectListServlet gets the currentId from&lt;br /&gt;the aoData and sets the current id at the DAO.  Then it dispatches&lt;br /&gt;the index.jsp.&lt;br /&gt;&lt;br /&gt;The source follows:&lt;br /&gt;&lt;br /&gt;personList.jsp&lt;br /&gt;--------------&lt;br /&gt;&lt;br /&gt;&amp;lt%--&lt;br /&gt;    Document   : personList&lt;br /&gt;    Created on : 24.Sub.2011, 18:23:21&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&amp;lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&amp;gt&lt;br /&gt;&amp;lthtml&amp;gt&lt;br /&gt;    &amp;lthead&amp;gt&lt;br /&gt;        &amp;ltmeta http-equiv="content-type" content="text/html; charset=utf-8" /&amp;gt&lt;br /&gt;    &amp;ltlink rel="shortcut icon" type="image/ico" href="DataTables-1.7.5/media/images/favicon.ico" /&amp;gt&lt;br /&gt;&lt;br /&gt;    &amp;lttitle&amp;gtDataTables example&amp;lt/title&amp;gt&lt;br /&gt;    &amp;ltstyle type="text/css" title="currentStyle"&amp;gt&lt;br /&gt;        @import "DataTables-1.7.5/media/css/demo_page.css";&lt;br /&gt;        @import "DataTables-1.7.5/media/css/demo_table.css";&lt;br /&gt;    &amp;lt/style&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" language="javascript" src="DataTables-1.7.5/media/js/jquery.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" language="javascript" src="DataTables-1.7.5/media/js/jquery.dataTables.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" charset="utf-8"&amp;gt&lt;br /&gt;        var oCache = {&lt;br /&gt;    iCacheLower: -1&lt;br /&gt;   };&lt;br /&gt;&lt;br /&gt;   function fnSetKey( aoData, sKey, mValue )&lt;br /&gt;   {&lt;br /&gt;    for ( var i=0, iLen=aoData.length ; i&amp;ltiLen ; i++ )&lt;br /&gt;    {&lt;br /&gt;     if ( aoData[i].name == sKey )&lt;br /&gt;     {&lt;br /&gt;      aoData[i].value = mValue;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   function fnGetKey( aoData, sKey )&lt;br /&gt;   {&lt;br /&gt;    for ( var i=0, iLen=aoData.length ; i&amp;ltiLen ; i++ )&lt;br /&gt;    {&lt;br /&gt;     if ( aoData[i].name == sKey )&lt;br /&gt;     {&lt;br /&gt;      return aoData[i].value;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;    return null;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   function fnDataTablesPipeline ( sSource, aoData, fnCallback ) {&lt;br /&gt;                            //alert("fnDataTablesPipeline");&lt;br /&gt;    var iPipe = 2; /* Ajust the pipe size */&lt;br /&gt;&lt;br /&gt;    var bNeedServer = false;&lt;br /&gt;    var sEcho = fnGetKey(aoData, "sEcho");&lt;br /&gt;    var iRequestStart = fnGetKey(aoData, "iDisplayStart");&lt;br /&gt;    var iRequestLength = fnGetKey(aoData, "iDisplayLength");&lt;br /&gt;    var iRequestEnd = iRequestStart + iRequestLength;&lt;br /&gt;                        //alert("iRequestStart="+iRequestStart+"iRequestLength="+iRequestLength);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    oCache.iDisplayStart = iRequestStart;&lt;br /&gt;&lt;br /&gt;    /* outside pipeline? */&lt;br /&gt;    if ( oCache.iCacheLower &amp;lt 0 || iRequestStart &amp;lt oCache.iCacheLower || iRequestEnd + iRequestLength*iPipe &amp;gt oCache.iCacheUpper )&lt;br /&gt;    {&lt;br /&gt;     bNeedServer = true;&lt;br /&gt;    }&lt;br /&gt;                                //alert(bNeedServer);&lt;br /&gt;    /* sorting etc changed? */&lt;br /&gt;    if ( oCache.lastRequest &amp;&amp; !bNeedServer )&lt;br /&gt;    {&lt;br /&gt;     for( var i=0, iLen=aoData.length ; i&amp;ltiLen ; i++ )&lt;br /&gt;     {&lt;br /&gt;      if ( aoData[i].name != "iDisplayStart" &amp;&amp; aoData[i].name != "iDisplayLength" &amp;&amp; aoData[i].name != "sEcho" )&lt;br /&gt;      {&lt;br /&gt;       if ( aoData[i].value != oCache.lastRequest[i].value )&lt;br /&gt;       {&lt;br /&gt;        bNeedServer = true;&lt;br /&gt;        break;&lt;br /&gt;       }&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /* Store the request for checking next time around */&lt;br /&gt;    oCache.lastRequest = aoData.slice();&lt;br /&gt;&lt;br /&gt;    if ( bNeedServer )&lt;br /&gt;    {&lt;br /&gt;     if ( iRequestStart &amp;lt oCache.iCacheLower )&lt;br /&gt;     {&lt;br /&gt;      iRequestStart = iRequestStart - (iRequestLength*(iPipe-1));&lt;br /&gt;      if ( iRequestStart &amp;lt 0 )&lt;br /&gt;      {&lt;br /&gt;       iRequestStart = 0;&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     oCache.iCacheLower = iRequestStart;&lt;br /&gt;     oCache.iCacheUpper = iRequestStart + (iRequestLength * iPipe);&lt;br /&gt;     oCache.iDisplayLength = fnGetKey( aoData, "iDisplayLength" );&lt;br /&gt;     fnSetKey( aoData, "iDisplayStart", iRequestStart );&lt;br /&gt;     fnSetKey( aoData, "iDisplayLength", iRequestLength*iPipe );&lt;br /&gt;//alert("oCache.iCacheLower="+oCache.iCacheLower+"oCache.iCacheUpper="+oCache.iCacheUpper);&lt;br /&gt;&lt;br /&gt;     $.getJSON( sSource, aoData, function (json) {&lt;br /&gt;      /* Callback processing */&lt;br /&gt;      oCache.lastJson = jQuery.extend(true, {}, json);&lt;br /&gt;&lt;br /&gt;      if ( oCache.iCacheLower != oCache.iDisplayStart )&lt;br /&gt;      {&lt;br /&gt;       json.aaData.splice( 0, oCache.iDisplayStart-oCache.iCacheLower );&lt;br /&gt;      }&lt;br /&gt;      json.aaData.splice( oCache.iDisplayLength, json.aaData.length );&lt;br /&gt;                                                jsonARS = json;&lt;br /&gt;&lt;br /&gt;                                             //   if (oCache.iCacheUpper+ oCache.iDisplayLength &amp;lt json.iTotalRecords)&lt;br /&gt;                                             //       json.iTotalDisplayRecords=oCache.iCacheUpper+oCache.iDisplayLength;&lt;br /&gt;                                                if ((oCache.iDisplayStart+ oCache.iDisplayLength &amp;lt json.iTotalRecords) &amp;&amp;&lt;br /&gt;                                                    (oCache.iCacheUpper+ oCache.iDisplayLength &amp;lt json.iTotalRecords))&lt;br /&gt;                                                    json.iTotalDisplayRecords=oCache.iCacheUpper+oCache.iDisplayLength;&lt;br /&gt;                                                else&lt;br /&gt;                                                    json.iTotalDisplayRecords = json.iTotalRecords;&lt;br /&gt;                                                fnCallback(json)&lt;br /&gt;     } );&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;     json = jQuery.extend(true, {}, oCache.lastJson);&lt;br /&gt;     json.sEcho = sEcho; /* Update the echo for each response */&lt;br /&gt;     json.aaData.splice( 0, iRequestStart-oCache.iCacheLower );&lt;br /&gt;     json.aaData.splice( iRequestLength, json.aaData.length );&lt;br /&gt;                                        jsonARS = json;&lt;br /&gt;                                        fnCallback(json);&lt;br /&gt;     return;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;                        var curRow = 1;&lt;br /&gt;        $(document).ready(function() {&lt;br /&gt;            oTable = $('#example').dataTable( {&lt;br /&gt;                "bProcessing": true,&lt;br /&gt;                "bServerSide": true,&lt;br /&gt;//                "sPaginationType": "full_numbers",&lt;br /&gt;                    "sPaginationType": "two_button",&lt;br /&gt;                "aaSorting": [[0, 'desc'], [1, 'desc']],&lt;br /&gt;&lt;br /&gt;                "sAjaxSource": "./person_server.jsp",&lt;br /&gt;                "fnServerData": fnDataTablesPipeline,&lt;br /&gt;                "fnDrawCallback": function ( oSettings ) {&lt;br /&gt;                $('#example tbody tr').each( function () {&lt;br /&gt;                    &lt;br /&gt;                    $(this).click( function () {&lt;br /&gt;                        $('#example tbody tr').each( function () {&lt;br /&gt;                            $(this).removeClass('row_selected');&lt;br /&gt;                        });&lt;br /&gt;                            $(this).addClass('row_selected');&lt;br /&gt;                            var iPos = oTable.fnGetPosition( this );&lt;br /&gt;                            var aData = oTable.fnGetData( iPos );&lt;br /&gt;                            var iId = aData[0];&lt;br /&gt;                            curRow = iId;&lt;br /&gt;                            //alert(iId);&lt;br /&gt;            var aoData = [];&lt;br /&gt;            aoData.push( { "name": "id", "value": curRow } );&lt;br /&gt;            $.ajax({&lt;br /&gt;                type:"POST",&lt;br /&gt;                url: "./selectlist",&lt;br /&gt;                contentType: "application/x-www-form-urlencoded",&lt;br /&gt;//                dataType: "JSON",&lt;br /&gt;                data: aoData&lt;br /&gt;//                success: function(data) {&lt;br /&gt;//                     var jsonData = $.parseJSON(data);&lt;br /&gt;//                    $("input#id").val(jsonData.id)&lt;br /&gt;//                    $("input#name").val(jsonData.name)&lt;br /&gt;//                    $("input#last").val(jsonData.last)&lt;br /&gt;//                    $("input#hobby").val(jsonData.hobby)&lt;br /&gt;//                }&lt;br /&gt;            });&lt;br /&gt;            window.open("index.jsp");&lt;br /&gt;           window.close();&lt;br /&gt;                    } );&lt;br /&gt;                } );&lt;br /&gt;            }&lt;br /&gt;            } );&lt;br /&gt;        } );&lt;br /&gt;        &lt;br /&gt;&lt;br /&gt;    &amp;lt/script&amp;gt&lt;br /&gt;&amp;lt/head&amp;gt&lt;br /&gt;&amp;ltbody id="dt_example"&amp;gt&lt;br /&gt;&amp;ltdiv id="container"&amp;gt&lt;br /&gt;    &amp;ltdiv class="full_width big"&amp;gt&lt;br /&gt;        &amp;lti&amp;gtAli Riza SARAL's&amp;lt/i&amp;gt Persons List&lt;br /&gt;    &amp;lt/div&amp;gt&lt;br /&gt;    &amp;ltH1&amp;gtPlease click on one of the persons&amp;lt/H1&amp;gt&lt;br /&gt;    &amp;ltDIV id=dynamic&amp;gt&lt;br /&gt;        &amp;ltTABLE id=example class=display border=0 cellSpacing=0 cellPadding=0&amp;gt&lt;br /&gt;            &amp;ltTHEAD&amp;gt&lt;br /&gt;                &amp;ltTR&amp;gt&lt;br /&gt;                    &amp;ltTH width="20%"&amp;gtId&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH width="25%"&amp;gtName&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH width="25%"&amp;gtLast Name&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH width="25%"&amp;gtHobby&amp;lt/TH&amp;gt&amp;lt/TR&amp;gt&amp;lt/THEAD&amp;gt&lt;br /&gt;            &amp;ltTBODY&amp;gt&lt;br /&gt;                &amp;ltTR&amp;gt&lt;br /&gt;                    &amp;ltTD class=dataTables_empty colSpan=5&amp;gtLoading data from server&lt;br /&gt;                    &amp;lt/TD&amp;gt&lt;br /&gt;                &amp;lt/TR&amp;gt&lt;br /&gt;            &amp;lt/TBODY&amp;gt&lt;br /&gt;        &amp;lt/TABLE&amp;gt&lt;br /&gt;    &amp;lt/DIV&amp;gt&lt;br /&gt;&amp;lt/div&amp;gt&lt;br /&gt;&amp;lt/body&amp;gt&lt;br /&gt;&amp;lt/html&amp;gt&lt;br /&gt;&lt;br /&gt;SelectListServlet.java&lt;br /&gt;----------------------&lt;br /&gt;package servletPackage;&lt;br /&gt;/**&lt;br /&gt; *&lt;br /&gt; * @author Ali Riza SARAL&lt;br /&gt; */&lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.Enumeration;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.RequestDispatcher;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;import mainPackage.*;&lt;br /&gt;import daoPackage.*;&lt;br /&gt;&lt;br /&gt;import util.Escape;&lt;br /&gt;&lt;br /&gt;public class selectListServlet extends HttpServlet {&lt;br /&gt;&lt;br /&gt;    public void init()&lt;br /&gt;            throws ServletException {&lt;br /&gt;        System.out.println("ARSmsg: selectListServlet began to work");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;            throws ServletException, IOException {&lt;br /&gt;        response.setContentType("text/html;charset=UTF-8");&lt;br /&gt;        //PrintWriter out = response.getWriter();&lt;br /&gt;&lt;br /&gt;        PersonDAOMySQLDBImpl personDAO;&lt;br /&gt;        Person person = new Person();&lt;br /&gt;        HttpSession session = request.getSession();&lt;br /&gt;&lt;br /&gt;        String id = request.getParameter("id");&lt;br /&gt;        int currentRow = Integer.valueOf(id);&lt;br /&gt;        System.out.println("currentRow==================" + currentRow);&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            personDAO = (PersonDAOMySQLDBImpl) session.getAttribute("personDAOsess");&lt;br /&gt;            &lt;br /&gt;     personDAO.setPersonCurrentId(currentRow);&lt;br /&gt;            session.removeAttribute("personDAOsess");&lt;br /&gt;            session.setAttribute("personDAOsess", personDAO);&lt;br /&gt;            System.out.println(personDAO.getPersonCurrentId());&lt;br /&gt; &lt;br /&gt;        }&lt;br /&gt;        catch (Error e) {&lt;br /&gt;            System.out.println(e.getMessage());&lt;br /&gt;        }&lt;br /&gt;        finally {&lt;br /&gt;            //out.close();&lt;br /&gt;        }&lt;br /&gt;        //window.open("index.jsp");&lt;br /&gt;        RequestDispatcher view = getServletContext().getRequestDispatcher("/index.jsp");&lt;br /&gt;        view.forward(request,response);&lt;br /&gt;    }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-6389178004150667257?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/6389178004150667257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/6389178004150667257'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/03/crud-with-jquery-master-detail-6.html' title='Crud with JQuery Master-Detail 6'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-1278138246423848011</id><published>2011-03-17T04:43:00.005-07:00</published><updated>2011-03-17T04:52:36.445-07:00</updated><title type='text'>Crud with JQuery Master-Detail 5</title><content type='html'>Underneath the servlet layer there is the DAO (Data Access Object)&lt;br /&gt;layer.  DAO layer is a mechanism that makes the program&lt;br /&gt;independent from the data storage type.  In fact I have provided &lt;br /&gt;in this blog a DAO application which can access data in vector, HSQL and&lt;br /&gt;MySQL formats with a single switch change.  A new and better version&lt;br /&gt;of this DAO application will be available in short notice, including&lt;br /&gt;the availability on SourceForge.net.&lt;br /&gt;&lt;br /&gt;WARNING:&lt;br /&gt;---------&lt;br /&gt;The delete functionality reorganises the id's in the DB.&lt;br /&gt;This causes substantial delay when a rec is deleted.&lt;br /&gt;I have corrected this design problem in the new DAO application&lt;br /&gt;that I will provide in short notice.  You may change the DAO implementation&lt;br /&gt;files and correct the problem or wait for me to provide the new&lt;br /&gt;version og this tutorial application.&lt;br /&gt;&lt;br /&gt;The DAO is defined at an interface file:&lt;br /&gt;&lt;br /&gt;PersonDAO.java&lt;br /&gt;--------------&lt;br /&gt;package daoPackage;&lt;br /&gt;/**&lt;br /&gt; *&lt;br /&gt; * @author Ali Riza SARAL&lt;br /&gt; */&lt;br /&gt;import java.util.Collection;&lt;br /&gt;import mainPackage.*;&lt;br /&gt;&lt;br /&gt;public interface PersonDAO {&lt;br /&gt;&lt;br /&gt;    public void createRec(int id, String firstName,&lt;br /&gt;            String lastName, String hobby)&lt;br /&gt;            throws PersonDAOSysException;&lt;br /&gt;&lt;br /&gt;    public Person readRec(int personId)&lt;br /&gt;            throws PersonDAOSysException;&lt;br /&gt;    &lt;br /&gt;    public void updateRec(int id, String firstName,&lt;br /&gt;            String lastName, String hobby)&lt;br /&gt;            throws PersonDAOSysException;&lt;br /&gt;&lt;br /&gt;    public void deleteRec(int personId)&lt;br /&gt;            throws PersonDAOSysException;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;mainPackage/Person.java&lt;br /&gt;-------------------------&lt;br /&gt;package mainPackage;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; *&lt;br /&gt; * @author Ali Riza SARAL&lt;br /&gt; */&lt;br /&gt;public class Person {&lt;br /&gt;&lt;br /&gt;    private String name;&lt;br /&gt;    private String last;&lt;br /&gt;    private String hobby;&lt;br /&gt;    private int id;&lt;br /&gt;&lt;br /&gt;    public Person(){}&lt;br /&gt;    public Person(int id, String name, String last, String hobby){&lt;br /&gt;         this.name = name;&lt;br /&gt;         this.last = last;&lt;br /&gt;         this.hobby = hobby;&lt;br /&gt;         this.id = id;&lt;br /&gt;    }&lt;br /&gt;    public String getName() {&lt;br /&gt;        return this.name;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setName(String name) {&lt;br /&gt;        this.name = name;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String getLast() {&lt;br /&gt;        return this.last;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setLast(String last) {&lt;br /&gt;        this.last = last;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String getHobby() {&lt;br /&gt;        return this.hobby;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setHobby(String hobby) {&lt;br /&gt;        this.hobby = hobby;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public int getId() {&lt;br /&gt;        return this.id;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setId(int id) {&lt;br /&gt;        this.id = id;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;MySQL DAO follows:&lt;br /&gt;&lt;br /&gt;PersonDAOMySQLDBImpl.java&lt;br /&gt;-------------------------&lt;br /&gt;  package daoPackage;&lt;br /&gt;/**&lt;br /&gt; *&lt;br /&gt; * @author Ali Riza SARAL&lt;br /&gt; */&lt;br /&gt;import java.io.FileInputStream;&lt;br /&gt;import java.io.FileNotFoundException;&lt;br /&gt;import java.util.*;&lt;br /&gt;import javax.naming.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import javax.sql.*;&lt;br /&gt;import mainPackage.*;&lt;br /&gt;&lt;br /&gt;public class PersonDAOMySQLDBImpl implements PersonDAO {&lt;br /&gt;&lt;br /&gt;    private Connection conn;&lt;br /&gt;    private  int personNextId = 1;&lt;br /&gt;    private  int personCurrentId = 1;&lt;br /&gt;&lt;br /&gt;    public PersonDAOMySQLDBImpl() throws Exception {&lt;br /&gt;        System.out.println("ARSmsg: PersonDAOMySQLImpl constructor began-----------.");&lt;br /&gt;        getDBConnection();&lt;br /&gt;&lt;br /&gt;//        try {&lt;br /&gt;//            update("DROP TABLE IF EXISTS persontab ");&lt;br /&gt;//            // db will automatically generate unique values for the id column&lt;br /&gt;//            update(&lt;br /&gt;//                    "CREATE TABLE persontab("&lt;br /&gt;//                    + "id INT NOT NULL AUTO_INCREMENT,PRIMARY KEY(id),"&lt;br /&gt;//                    + "firstname VARCHAR(20),"&lt;br /&gt;//                    + "lastname VARCHAR(20), "&lt;br /&gt;//                    + "hobby VARCHAR(30))");&lt;br /&gt;//        } catch (SQLException e) {&lt;br /&gt;//            //ignore exception the second time if we create the same table&lt;br /&gt;//        }&lt;br /&gt;&lt;br /&gt;//        try {&lt;br /&gt;//            update(&lt;br /&gt;//                    "INSERT INTO persontab(firstname,lastname,hobby) VALUES('Ali Riza', 'SARAL', 'Music Composition')");&lt;br /&gt;//            update(&lt;br /&gt;//                    "INSERT INTO persontab(firstname,lastname,hobby) VALUES('Tamer', 'ÜNAL', 'Folk Music')");&lt;br /&gt;//            update(&lt;br /&gt;//                    "INSERT INTO persontab(firstname,lastname,hobby) VALUES('Ekrem', 'CANBEK', 'Violin')");&lt;br /&gt;//            update(&lt;br /&gt;//                    "INSERT INTO persontab(firstName,lastName,hobby) VALUES('Turan', 'MUTLUAY', 'Choir')");&lt;br /&gt;//            update(&lt;br /&gt;//                    "INSERT INTO persontab(firstName,lastName,hobby) VALUES('Rengin', 'AHISKALI', 'Literature')");&lt;br /&gt;//            // do a query&lt;br /&gt;//            query("SELECT * FROM persontab");&lt;br /&gt;//&lt;br /&gt;//            shutdown();&lt;br /&gt;//        } catch (SQLException ex3) {&lt;br /&gt;//            ex3.printStackTrace();&lt;br /&gt;//        }&lt;br /&gt;                Statement s = conn.createStatement();&lt;br /&gt;                String sQuery = " SELECT COUNT(*) AS rowcount FROM " + "persontab";&lt;br /&gt;                ResultSet rs = s.executeQuery(sQuery);&lt;br /&gt;                rs.next();&lt;br /&gt;                int iTotal = rs.getInt("rowcount");&lt;br /&gt;                rs.close();&lt;br /&gt;                s.close();&lt;br /&gt;                personNextId = iTotal + 1;&lt;br /&gt;                personCurrentId=1;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void createRec(int id, String firstName,&lt;br /&gt;            String lastName, String hobby) throws PersonDAOSysException {&lt;br /&gt;        System.out.println("ARSmsg: createRec began-----------.");&lt;br /&gt;        PreparedStatement stmt = null;&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            getDBConnection();&lt;br /&gt;            stmt = conn.prepareStatement("insert into personTab(id, firstName, lastName,"&lt;br /&gt;                    + " hobby) values (?, ?, ?, ?)");&lt;br /&gt;            stmt.setString(1, String.valueOf(id));&lt;br /&gt;            stmt.setString(2, firstName);&lt;br /&gt;            stmt.setString(3, lastName);&lt;br /&gt;            stmt.setString(4, hobby);&lt;br /&gt;            stmt.executeUpdate();&lt;br /&gt;            personCurrentId = personNextId;&lt;br /&gt;            personNextId++;&lt;br /&gt;            query("SELECT * FROM personTab");&lt;br /&gt;        } catch (SQLException ex) {&lt;br /&gt;            throw new PersonDAOSysException("SQLException:" + ex.getMessage());&lt;br /&gt;        } finally {&lt;br /&gt;            closeStatement(stmt);&lt;br /&gt;            closeDBConnection();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    public void createRecFlat(int id, String firstName,&lt;br /&gt;            String lastName, String hobby) throws PersonDAOSysException {&lt;br /&gt;        System.out.println("ARSmsg: createRec began-----------.");&lt;br /&gt;        PreparedStatement stmt = null;&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            getDBConnection();&lt;br /&gt;            stmt = conn.prepareStatement("insert into personTab(id, firstName, lastName,"&lt;br /&gt;                    + " hobby) values (?, ?, ?, ?)");&lt;br /&gt;            stmt.setString(1, String.valueOf(id));&lt;br /&gt;            stmt.setString(2, firstName);&lt;br /&gt;            stmt.setString(3, lastName);&lt;br /&gt;            stmt.setString(4, hobby);&lt;br /&gt;            stmt.executeUpdate();&lt;br /&gt;            //personCurrentId = personNextId;&lt;br /&gt;            //personNextId++;&lt;br /&gt;            //query("SELECT * FROM personTab");&lt;br /&gt;        } catch (SQLException ex) {&lt;br /&gt;            throw new PersonDAOSysException("SQLException:" + ex.getMessage());&lt;br /&gt;        } finally {&lt;br /&gt;            closeStatement(stmt);&lt;br /&gt;            closeDBConnection();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    public void deleteRec(int studentId) throws PersonDAOSysException {&lt;br /&gt;        System.out.println("ARSmsg: deleteRec began-----------.");&lt;br /&gt;        PreparedStatement stmt = null;&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            getDBConnection();&lt;br /&gt;            stmt = conn.prepareStatement("delete from personTab where id = ?");&lt;br /&gt;            stmt.setString(1, String.valueOf(studentId));&lt;br /&gt;            stmt.executeUpdate();&lt;br /&gt;            stmt.close();&lt;br /&gt;            query("SELECT * FROM personTab");&lt;br /&gt;        } catch (SQLException ex) {&lt;br /&gt;            throw new PersonDAOSysException("SQLException:" + ex.getMessage());&lt;br /&gt;        } finally {&lt;br /&gt;            closeStatement(stmt);&lt;br /&gt;            closeDBConnection();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        reorganiseDB();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public boolean findByPrimaryKey(int personId) throws PersonDAOSysException {&lt;br /&gt;        System.out.println("ARSmsg: findByPrimaryKey began-----------.");&lt;br /&gt;        boolean result = false;&lt;br /&gt;        PreparedStatement stmt = null;&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            getDBConnection();&lt;br /&gt;            stmt = conn.prepareStatement("select id from personTab where id = ?");&lt;br /&gt;            stmt.setString(1, String.valueOf(personId));&lt;br /&gt;            ResultSet rs = stmt.executeQuery();&lt;br /&gt;            result = rs.next();&lt;br /&gt;            rs.close();&lt;br /&gt;        } catch (SQLException ex) {&lt;br /&gt;            throw new PersonDAOSysException("SQLException: " + ex.getMessage());&lt;br /&gt;        } finally {&lt;br /&gt;            closeStatement(stmt);&lt;br /&gt;            closeDBConnection();&lt;br /&gt;        }&lt;br /&gt;        return result;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Collection findByLastName(String lastName) throws PersonDAOSysException {&lt;br /&gt;        System.out.println("ARSmsg: findByLastName began-----------.");&lt;br /&gt;        Collection persons = new ArrayList();&lt;br /&gt;        PreparedStatement stmt = null;&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            getDBConnection();&lt;br /&gt;            stmt = conn.prepareStatement("select id from personTab where lastName = ?");&lt;br /&gt;            stmt.setString(1, lastName);&lt;br /&gt;            ResultSet rs = stmt.executeQuery();&lt;br /&gt;            while (rs.next()) {&lt;br /&gt;                String personId = rs.getString(1);&lt;br /&gt;                persons.add(personId);&lt;br /&gt;            }&lt;br /&gt;            rs.close();&lt;br /&gt;        } catch (SQLException ex) {&lt;br /&gt;            throw new PersonDAOSysException("SQLException: " + ex.getMessage());&lt;br /&gt;        } finally {&lt;br /&gt;            closeStatement(stmt);&lt;br /&gt;            closeDBConnection();&lt;br /&gt;        }&lt;br /&gt;        System.out.println("FindByLastName id="+persons.toString());&lt;br /&gt;        return persons;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public int findTotalNumberOfPersons() throws PersonDAOSysException {&lt;br /&gt;        //System.out.println("ARSmsg: findTotalNumberOfPersons began-----------.");&lt;br /&gt;        int total = 0;&lt;br /&gt;        PreparedStatement stmt = null;&lt;br /&gt;        try {&lt;br /&gt;            getDBConnection();&lt;br /&gt;            stmt = conn.prepareStatement("select count(id) from personTab");&lt;br /&gt;            ResultSet rs = stmt.executeQuery();&lt;br /&gt;            rs.next();&lt;br /&gt;            total = rs.getInt(1);&lt;br /&gt;        } catch (SQLException ex) {&lt;br /&gt;            throw new PersonDAOSysException("SQLException:" + ex.getMessage());&lt;br /&gt;        } finally {&lt;br /&gt;            closeStatement(stmt);&lt;br /&gt;            closeDBConnection();&lt;br /&gt;        }&lt;br /&gt;        System.out.println("ARSmsg: findTotalNumberOfPersons ="+total);&lt;br /&gt;        return total;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Person readRec(int personId) throws PersonDAOSysException {&lt;br /&gt;        System.out.println("ARSmsg: readRec began-----------.");&lt;br /&gt;        Person person = null;&lt;br /&gt;        PreparedStatement stmt = null;&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            getDBConnection();&lt;br /&gt;            stmt = conn.prepareStatement("select firstName, lastName, "&lt;br /&gt;                    + " hobby from personTab where id=?");&lt;br /&gt;            stmt.setString(1, String.valueOf(personId));&lt;br /&gt;            ResultSet rs = stmt.executeQuery();&lt;br /&gt;            rs.next();&lt;br /&gt;&lt;br /&gt;            person = new Person(personId,&lt;br /&gt;                    rs.getString(1),&lt;br /&gt;                    rs.getString(2),&lt;br /&gt;                    rs.getString(3));&lt;br /&gt;            System.out.print(personId + " ");&lt;br /&gt;//            System.out.print(rs.getString(1) + " ");&lt;br /&gt;//            System.out.print(rs.getString(2) + " ");&lt;br /&gt;//            System.out.println(rs.getString(3) + "\n");&lt;br /&gt;            rs.close();&lt;br /&gt;        } catch (SQLException ex) {&lt;br /&gt;            throw new PersonDAOSysException("SQLException:" + ex.getMessage());&lt;br /&gt;        } finally {&lt;br /&gt;            closeStatement(stmt);&lt;br /&gt;            closeDBConnection();&lt;br /&gt;        }&lt;br /&gt;        return person;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Person readNextRec() throws PersonDAOSysException {&lt;br /&gt;        System.out.println("ARSmsg: readNextRec began-----------.");&lt;br /&gt;        Person person = null;&lt;br /&gt;        PreparedStatement stmt = null;&lt;br /&gt;        personCurrentId++;&lt;br /&gt;        int personId = personCurrentId;&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            getDBConnection();&lt;br /&gt;            stmt = conn.prepareStatement("select firstName, lastName, "&lt;br /&gt;                    + " hobby from personTab where id=?");&lt;br /&gt;            stmt.setString(1, String.valueOf(personId));&lt;br /&gt;            ResultSet rs = stmt.executeQuery();&lt;br /&gt;            if (rs.next()==true){&lt;br /&gt;                person = new Person(personId,&lt;br /&gt;                    rs.getString(1),&lt;br /&gt;                    rs.getString(2),&lt;br /&gt;                    rs.getString(3));&lt;br /&gt;                rs.close();&lt;br /&gt;            } else {&lt;br /&gt;                personCurrentId--;&lt;br /&gt;                personId = personCurrentId;&lt;br /&gt;                person = readRec(personId);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            System.out.print(personId + " ");&lt;br /&gt;//            System.out.print(rs.getString(1) + " ");&lt;br /&gt;//            System.out.print(rs.getString(2) + " ");&lt;br /&gt;//            System.out.println(rs.getString(3) + "\n");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        } catch (SQLException ex) {&lt;br /&gt;            throw new PersonDAOSysException("SQLException:" + ex.getMessage());&lt;br /&gt;        } finally {&lt;br /&gt;            closeStatement(stmt);&lt;br /&gt;            closeDBConnection();&lt;br /&gt;        }&lt;br /&gt;        return person;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Person readPrevRec() throws PersonDAOSysException {&lt;br /&gt;        System.out.println("ARSmsg: readPrevRec began-----------.");&lt;br /&gt;        Person person = null;&lt;br /&gt;        PreparedStatement stmt = null;&lt;br /&gt;        personCurrentId--;&lt;br /&gt;        if (personCurrentId &lt; 1) personCurrentId = 1;&lt;br /&gt;        int personId = personCurrentId;&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            getDBConnection();&lt;br /&gt;            stmt = conn.prepareStatement("select firstName, lastName, "&lt;br /&gt;                    + " hobby from personTab where id=?");&lt;br /&gt;            stmt.setString(1, String.valueOf(personId));&lt;br /&gt;            ResultSet rs = stmt.executeQuery();&lt;br /&gt;            if (rs.next()==true){&lt;br /&gt;&lt;br /&gt;            person = new Person(personId,&lt;br /&gt;                    rs.getString(1),&lt;br /&gt;                    rs.getString(2),&lt;br /&gt;                    rs.getString(3));&lt;br /&gt;            System.out.print(personId + " ");&lt;br /&gt;//            System.out.print(rs.getString(1) + " ");&lt;br /&gt;//            System.out.print(rs.getString(2) + " ");&lt;br /&gt;//            System.out.println(rs.getString(3) + "\n");&lt;br /&gt;            rs.close();&lt;br /&gt;            }&lt;br /&gt;        } catch (SQLException ex) {&lt;br /&gt;            throw new PersonDAOSysException("SQLException:" + ex.getMessage());&lt;br /&gt;        } finally {&lt;br /&gt;            closeStatement(stmt);&lt;br /&gt;            closeDBConnection();&lt;br /&gt;        }&lt;br /&gt;        return person;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void updateRec(int id, String firstName, String lastName,&lt;br /&gt;            String hobby) throws PersonDAOSysException {&lt;br /&gt;        System.out.println("ARSmsg: updateRec began-----------.");&lt;br /&gt;        PreparedStatement stmt = null;&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            getDBConnection();&lt;br /&gt;            stmt = conn.prepareStatement("update  personTab set "&lt;br /&gt;                    + "firstName=?,lastName = ?,hobby = ? where id=?");&lt;br /&gt;            stmt.setString(1, firstName);&lt;br /&gt;            stmt.setString(2, lastName);&lt;br /&gt;            stmt.setString(3, hobby);&lt;br /&gt;            stmt.setString(4, String.valueOf(id));&lt;br /&gt;            int rowCount = stmt.executeUpdate();&lt;br /&gt;            stmt.close();&lt;br /&gt;            if (rowCount &amp;lt 1){&lt;br /&gt;                createRec(personNextId, firstName, lastName, hobby);&lt;br /&gt;            }&lt;br /&gt;        } catch (SQLException ex) {&lt;br /&gt;            throw new PersonDAOSysException("SQLException:" + ex.getMessage());&lt;br /&gt;        } finally {&lt;br /&gt;            closeStatement(stmt);&lt;br /&gt;            closeDBConnection();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private void reorganiseDB() {&lt;br /&gt;        System.out.println("ARSmsg: reorganiseDB began-----------.");&lt;br /&gt;        Person person;&lt;br /&gt;&lt;br /&gt;        getDBConnection();&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            update("DROP TABLE IF EXISTS persontabtemp");&lt;br /&gt;            update("CREATE TABLE persontabtemp ("&lt;br /&gt;                    + "id INT NOT NULL AUTO_INCREMENT,PRIMARY KEY(id),"&lt;br /&gt;                    + "firstname VARCHAR(20), "&lt;br /&gt;                    + "lastname VARCHAR(20), "&lt;br /&gt;                    + "hobby VARCHAR(30))");&lt;br /&gt;        } catch (SQLException e) {&lt;br /&gt;            //ignore exception the second time if we create the same table&lt;br /&gt;        }&lt;br /&gt;        closeDBConnection();&lt;br /&gt;&lt;br /&gt;        int recCount = findTotalNumberOfPersons();&lt;br /&gt;&lt;br /&gt;        for (int i = 1, j = 1; j &amp;lt recCount+1; i++) {&lt;br /&gt;&lt;br /&gt;            if (findByPrimaryKey(i)) {&lt;br /&gt;                //System.out.println(i+" exists");&lt;br /&gt;                person = readRec(i);&lt;br /&gt;                createRecTemp(j,person.getName(), person.getLast(), person.getHobby());&lt;br /&gt;                j++;&lt;br /&gt;            } else {&lt;br /&gt;                System.out.println(i + " does not exist");&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        getDBConnection();&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            update("DROP TABLE IF EXISTS persontab ");&lt;br /&gt;            update( "CREATE TABLE persontab("&lt;br /&gt;                    + "id INT NOT NULL AUTO_INCREMENT,PRIMARY KEY(id),"&lt;br /&gt;                    + "firstname VARCHAR(20),"&lt;br /&gt;                    + "lastname VARCHAR(20), "&lt;br /&gt;                    + "hobby VARCHAR(30))");&lt;br /&gt;        } catch (SQLException e) {&lt;br /&gt;            //ignore exception the second time if we create the same table&lt;br /&gt;        }&lt;br /&gt;        closeDBConnection();&lt;br /&gt;&lt;br /&gt;        int recCountTemp = findTotalNumberOfPersonsTemp();&lt;br /&gt;&lt;br /&gt;        for (int i = 1; i &amp;lt recCountTemp + 1; i++) {&lt;br /&gt;            person = readRecTemp(i);&lt;br /&gt;            createRecFlat(i, person.getName(), person.getLast(), person.getHobby());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void createRecTemp(int id, String firstName,&lt;br /&gt;            String lastName, String hobby) throws PersonDAOSysException {&lt;br /&gt;        System.out.println("ARSmsg: createRecTemp began-----------.");&lt;br /&gt;        PreparedStatement stmt = null;&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            getDBConnection();&lt;br /&gt;            stmt = conn.prepareStatement("insert into persontabtemp(id, firstName, lastName,"&lt;br /&gt;                    + " hobby) values (?, ?, ?, ?)");&lt;br /&gt;            stmt.setString(1, String.valueOf(id));&lt;br /&gt;            stmt.setString(2, firstName);&lt;br /&gt;            stmt.setString(3, lastName);&lt;br /&gt;            stmt.setString(4, hobby);&lt;br /&gt;            stmt.executeUpdate();&lt;br /&gt;            //personCurrentId = personNextId;&lt;br /&gt;            //personNextId++;&lt;br /&gt;            //query("SELECT * FROM persontabtemp");&lt;br /&gt;        } catch (SQLException ex) {&lt;br /&gt;            throw new PersonDAOSysException("SQLException:" + ex.getMessage());&lt;br /&gt;        } finally {&lt;br /&gt;            closeStatement(stmt);&lt;br /&gt;            closeDBConnection();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public int findTotalNumberOfPersonsTemp() throws PersonDAOSysException {&lt;br /&gt;        System.out.println("ARSmsg: findTotalNumberOfPersonsTemp began-----------.");&lt;br /&gt;        int total = 111;&lt;br /&gt;        PreparedStatement stmt = null;&lt;br /&gt;        try {&lt;br /&gt;            getDBConnection();&lt;br /&gt;            stmt = conn.prepareStatement("select count(id) from persontabtemp");&lt;br /&gt;            ResultSet rs = stmt.executeQuery();&lt;br /&gt;            rs.next();&lt;br /&gt;            total = rs.getInt(1);&lt;br /&gt;        } catch (SQLException ex) {&lt;br /&gt;            throw new PersonDAOSysException("SQLException:" + ex.getMessage());&lt;br /&gt;        } finally {&lt;br /&gt;            closeStatement(stmt);&lt;br /&gt;            closeDBConnection();&lt;br /&gt;        }&lt;br /&gt;        return total;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Person readRecTemp(int personId) throws PersonDAOSysException {&lt;br /&gt;        System.out.println("ARSmsg: readRecTemp began-----------.");&lt;br /&gt;        Person person = null;&lt;br /&gt;        PreparedStatement stmt = null;&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            getDBConnection();&lt;br /&gt;            stmt = conn.prepareStatement("select firstName, lastName, "&lt;br /&gt;                    + " hobby from persontabtemp where id=?");&lt;br /&gt;            stmt.setString(1, String.valueOf(personId));&lt;br /&gt;            ResultSet rs = stmt.executeQuery();&lt;br /&gt;            rs.next();&lt;br /&gt;&lt;br /&gt;            person = new Person(personId,&lt;br /&gt;                    rs.getString(1),&lt;br /&gt;                    rs.getString(2),&lt;br /&gt;                    rs.getString(3));&lt;br /&gt;//            System.out.print(personId + " ");&lt;br /&gt;//            System.out.print(rs.getString(1) + " ");&lt;br /&gt;//            System.out.print(rs.getString(2) + " ");&lt;br /&gt;//            System.out.println(rs.getString(3) + "\n");&lt;br /&gt;            rs.close();&lt;br /&gt;        } catch (SQLException ex) {&lt;br /&gt;            throw new PersonDAOSysException("SQLException:" + ex.getMessage());&lt;br /&gt;        } finally {&lt;br /&gt;            closeStatement(stmt);&lt;br /&gt;            closeDBConnection();&lt;br /&gt;        }&lt;br /&gt;        return person;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private void getDBConnection() throws PersonDAOSysException {&lt;br /&gt;        //System.out.println("ARSmsg: getDBConnection began-----------.");&lt;br /&gt;        String url = "jdbc:mysql://localhost:3306/";&lt;br /&gt;        String dbName = "persondao";&lt;br /&gt;        String driver = "com.mysql.jdbc.Driver";&lt;br /&gt;        String userName = "root";&lt;br /&gt;        String password = "3391309";&lt;br /&gt;&lt;br /&gt;//        try {&lt;br /&gt;//            Properties props = new Properties();&lt;br /&gt;//            String curDir = System.getProperty("user.dir");&lt;br /&gt;//            //System.out.println("curDir=" + curDir);&lt;br /&gt;//            FileInputStream fis = new FileInputStream(curDir + "/PersonDAOARS.properties");&lt;br /&gt;//            props.load(fis);&lt;br /&gt;//            fis.close();&lt;br /&gt;//&lt;br /&gt;//            url = props.getProperty("MySQLurl");&lt;br /&gt;//            dbName = props.getProperty("MySQLdbName");&lt;br /&gt;//            driver = props.getProperty("MySQLdriver");&lt;br /&gt;//            userName = props.getProperty("MySQLuserName");&lt;br /&gt;//            password = props.getProperty("MySQLpassword");&lt;br /&gt;//        } catch (FileNotFoundException e) {&lt;br /&gt;//            throw new PersonDAOSysException("\\FileNotFoundException:" + e.getMessage() + " " + e.toString());&lt;br /&gt;//        } catch (java.io.IOException e) {&lt;br /&gt;//            throw new PersonDAOSysException("\\java.io.IOException:" + e.getMessage() + " " + e.toString());&lt;br /&gt;//        }&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            Class.forName(driver).newInstance();&lt;br /&gt;            conn = DriverManager.getConnection(url + dbName, userName, password);&lt;br /&gt;            //System.out.println("Connected to the database");&lt;br /&gt;            //conn.close();&lt;br /&gt;            //System.out.println("Disconnected from database");&lt;br /&gt;        } catch (Exception ex) {&lt;br /&gt;            throw new PersonDAOSysException("\\nSQLException:" + ex.getMessage() + " " + ex.toString());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private void closeDBConnection() throws PersonDAOSysException {&lt;br /&gt;        //System.out.println("ARSmsg: closeDBConnection began-----------.");&lt;br /&gt;        try {&lt;br /&gt;            conn.close();&lt;br /&gt;        } catch (SQLException ex) {&lt;br /&gt;            throw new PersonDAOSysException("SQLException:" + ex.getMessage());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private void closeStatement(PreparedStatement stmt) throws PersonDAOSysException {&lt;br /&gt;        //System.out.println("ARSmsg: closeStatement began-----------.");&lt;br /&gt;        try {&lt;br /&gt;            stmt.close();&lt;br /&gt;        } catch (SQLException ex) {&lt;br /&gt;            throw new PersonDAOSysException("SQLException:" + ex.getMessage());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public synchronized void update(String expression) throws SQLException {&lt;br /&gt;        //for CREATE, DROP, INSERT and UPDATE&lt;br /&gt;        System.out.println("ARSmsg: update began-----------.");&lt;br /&gt;        Statement st = null;&lt;br /&gt;&lt;br /&gt;        st = conn.createStatement(); // statements&lt;br /&gt;&lt;br /&gt;        int i = st.executeUpdate(expression); // run the query&lt;br /&gt;&lt;br /&gt;        if (i == -1) {&lt;br /&gt;            System.out.println("db error : " + expression);&lt;br /&gt;        }&lt;br /&gt;        st.close();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public synchronized void query(String expression) throws SQLException {&lt;br /&gt;        //for SELECT&lt;br /&gt;        System.out.println("ARSmsg: query began-----------.");&lt;br /&gt;        Statement st = null;&lt;br /&gt;        ResultSet rs = null;&lt;br /&gt;&lt;br /&gt;        st = conn.createStatement();&lt;br /&gt;        rs = st.executeQuery(expression);&lt;br /&gt;&lt;br /&gt;       // dump(rs);&lt;br /&gt;        st.close();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public static void dump(ResultSet rs) throws SQLException {&lt;br /&gt;        System.out.println("ARSmsg: dump began-----------.");&lt;br /&gt;        ResultSetMetaData meta = rs.getMetaData();&lt;br /&gt;        int colmax = meta.getColumnCount();&lt;br /&gt;        int i;&lt;br /&gt;        Object o = null;&lt;br /&gt;&lt;br /&gt;        for (; rs.next();) {&lt;br /&gt;            for (i = 0; i &amp;lt colmax; ++i) {&lt;br /&gt;                o = rs.getObject(i + 1);&lt;br /&gt;                System.out.print(o.toString() + " ");&lt;br /&gt;            }&lt;br /&gt;            System.out.println(" ");&lt;br /&gt;        }&lt;br /&gt;        System.out.println();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void shutdown() throws SQLException {&lt;br /&gt;        System.out.println("ARSmsg: shutdown began-----------.");&lt;br /&gt;        Statement st = conn.createStatement();&lt;br /&gt;&lt;br /&gt;        st.execute("FLUSH TABLES");  //write out buffersand clean shut down&lt;br /&gt;        conn.close(); // if there are no other open connection&lt;br /&gt;    }&lt;br /&gt;        public int getPersonNextId() {&lt;br /&gt;        return personNextId;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public int getPersonCurrentId() {&lt;br /&gt;        return personCurrentId;&lt;br /&gt;    }&lt;br /&gt;    public void setPersonCurrentId(int id) {&lt;br /&gt;        personCurrentId = id;&lt;br /&gt;    }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-1278138246423848011?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/1278138246423848011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/1278138246423848011'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/03/crud-with-jquery-master-detail-5.html' title='Crud with JQuery Master-Detail 5'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-2650936917602937074</id><published>2011-03-17T04:43:00.003-07:00</published><updated>2011-03-17T04:51:28.305-07:00</updated><title type='text'>Crud with JQuery Master-Detail 4</title><content type='html'>The rest of the servlets have the same architectural approach&lt;br /&gt;but differ in functionality.  I will expalin the Master-Detail&lt;br /&gt;mechanism and related servlets later.&lt;br /&gt;&lt;br /&gt;The complete sources follows:&lt;br /&gt;&lt;br /&gt;readNextServlet.java&lt;br /&gt;--------------------&lt;br /&gt;package servletPackage;&lt;br /&gt;/**&lt;br /&gt; *&lt;br /&gt; * @author Ali Riza SARAL&lt;br /&gt; */&lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.Enumeration;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;import mainPackage.*;&lt;br /&gt;import daoPackage.*;&lt;br /&gt;&lt;br /&gt;import util.Escape;&lt;br /&gt;&lt;br /&gt;public class readNextServlet extends HttpServlet {&lt;br /&gt;&lt;br /&gt;    public void init()&lt;br /&gt;        throws ServletException&lt;br /&gt;    {&lt;br /&gt;        System.out.println("ARSmsg: readNextServlet began to work");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;    throws ServletException, IOException {&lt;br /&gt;        response.setContentType("text/html;charset=UTF-8");&lt;br /&gt;        PrintWriter out = response.getWriter();&lt;br /&gt;&lt;br /&gt;        PersonDAOMySQLDBImpl personDAO;&lt;br /&gt;        Person person= new Person();&lt;br /&gt;        HttpSession session = request.getSession();&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            personDAO = (PersonDAOMySQLDBImpl) session.getAttribute("personDAOsess");&lt;br /&gt;            person = personDAO.readNextRec();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            String id = String.valueOf(person.getId());&lt;br /&gt;            String name = person.getName();&lt;br /&gt;            String last = person.getLast();&lt;br /&gt;            String hobby = person.getHobby();&lt;br /&gt;            System.out.println("next id="+personDAO.getPersonNextId());&lt;br /&gt;&lt;br /&gt;             id = Escape.html(id);&lt;br /&gt;            name = Escape.html(name);&lt;br /&gt;            last = Escape.html(last);&lt;br /&gt;            hobby = Escape.html(hobby);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            // for JSON output&lt;br /&gt;            id = Escape.javaScript(id);&lt;br /&gt;            name = Escape.javaScript(name);&lt;br /&gt;            last = Escape.javaScript(last);&lt;br /&gt;            hobby = Escape.javaScript(hobby);&lt;br /&gt;&lt;br /&gt;            out.println(&lt;br /&gt;                    "{"&lt;br /&gt;                    + " \"id\":" + '"' + id + '"' + ","&lt;br /&gt;                    + " \"name\":" + '"' + name + '"' + ","&lt;br /&gt;                    + " \"last\":" + '"' + last + '"' + ","&lt;br /&gt;                    + " \"hobby\":" + '"' + hobby + '"'&lt;br /&gt;                    + "}");&lt;br /&gt;           //System.out.println("ProcessData out id="+name);&lt;br /&gt;        }&lt;br /&gt;        catch (Error e) {&lt;br /&gt;            System.out.println(e.getMessage());&lt;br /&gt;        }&lt;br /&gt;        finally {&lt;br /&gt;            out.close();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;readPrevServlet.java&lt;br /&gt;--------------------&lt;br /&gt;package servletPackage;&lt;br /&gt;/**&lt;br /&gt; *&lt;br /&gt; * @author Ali Riza SARAL&lt;br /&gt; */&lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.Enumeration;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;import mainPackage.*;&lt;br /&gt;import daoPackage.*;&lt;br /&gt;&lt;br /&gt;import util.Escape;&lt;br /&gt;&lt;br /&gt;public class readPrevServlet extends HttpServlet {&lt;br /&gt;&lt;br /&gt;    public void init()&lt;br /&gt;        throws ServletException&lt;br /&gt;    {&lt;br /&gt;        System.out.println("ARSmsg: readPrevServlet began to work");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;    throws ServletException, IOException {&lt;br /&gt;        response.setContentType("text/html;charset=UTF-8");&lt;br /&gt;        PrintWriter out = response.getWriter();&lt;br /&gt;&lt;br /&gt;        PersonDAOMySQLDBImpl personDAO;&lt;br /&gt;        Person person= new Person();&lt;br /&gt;        HttpSession session = request.getSession();&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            personDAO = (PersonDAOMySQLDBImpl) session.getAttribute("personDAOsess");&lt;br /&gt;            person = personDAO.readPrevRec();&lt;br /&gt;&lt;br /&gt;        if (person != null){&lt;br /&gt;            session.removeAttribute("personDAOsess");&lt;br /&gt;            session.setAttribute("personDAOsess", personDAO);&lt;br /&gt;            String id=String.valueOf(person.getId());&lt;br /&gt;            String name =person.getName();&lt;br /&gt;            String last =person.getLast();&lt;br /&gt;            String hobby=person.getHobby();&lt;br /&gt;&lt;br /&gt;            id = Escape.html(id);&lt;br /&gt;            name = Escape.html(name);&lt;br /&gt;            last = Escape.html(last);&lt;br /&gt;            hobby = Escape.html(hobby);&lt;br /&gt;&lt;br /&gt;            // for JSON output&lt;br /&gt;            id = Escape.javaScript(id);&lt;br /&gt;            name = Escape.javaScript(name);&lt;br /&gt;            last = Escape.javaScript(last);&lt;br /&gt;            hobby = Escape.javaScript(hobby);&lt;br /&gt;&lt;br /&gt;            out.println(&lt;br /&gt;                    "{"&lt;br /&gt;                    + " \"id\":" + '"' + id + '"' + ","&lt;br /&gt;                    + " \"name\":" + '"' + name + '"' + ","&lt;br /&gt;                    + " \"last\":" + '"' + last + '"' + ","&lt;br /&gt;                    + " \"hobby\":" + '"' + hobby + '"'&lt;br /&gt;                    + "}");&lt;br /&gt;            }&lt;br /&gt;        } finally {&lt;br /&gt;            out.close();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;createServlet.java&lt;br /&gt;------------------&lt;br /&gt;package servletPackage;&lt;br /&gt;/**&lt;br /&gt; *&lt;br /&gt; * @author Ali Riza SARAL&lt;br /&gt; */&lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.Enumeration;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;import mainPackage.*;&lt;br /&gt;import daoPackage.*;&lt;br /&gt;&lt;br /&gt;import util.Escape;&lt;br /&gt;&lt;br /&gt;public class createServlet extends HttpServlet {&lt;br /&gt;&lt;br /&gt;    public void init()&lt;br /&gt;            throws ServletException {&lt;br /&gt;        System.out.println("ARSmsg: createServlet began to work");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;  protected void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;    throws ServletException, IOException {&lt;br /&gt;        //response.setContentType("text/json;charset=UTF-8");&lt;br /&gt;        response.setContentType("text/html;charset=UTF-8");&lt;br /&gt;        PrintWriter out = response.getWriter();&lt;br /&gt;        PersonDAOMySQLDBImpl personDAO;&lt;br /&gt;        HttpSession session = request.getSession();&lt;br /&gt;        personDAO = (PersonDAOMySQLDBImpl) session.getAttribute("personDAOsess");&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            String id = String.valueOf(personDAO.getPersonNextId());&lt;br /&gt;            String name = "Pls enter 20 chars";&lt;br /&gt;            String last = "Regards. ";&lt;br /&gt;            String hobby = "Ali R+";&lt;br /&gt;            System.out.println("ProcessData began");&lt;br /&gt;&lt;br /&gt;            id = Escape.html(id);&lt;br /&gt;            name = Escape.html(name);&lt;br /&gt;            last = Escape.html(last);&lt;br /&gt;            hobby = Escape.html(hobby);&lt;br /&gt;&lt;br /&gt;            // for JSON output&lt;br /&gt;            id = Escape.javaScript(id);&lt;br /&gt;            name = Escape.javaScript(name);&lt;br /&gt;            last = Escape.javaScript(last);&lt;br /&gt;            hobby = Escape.javaScript(hobby);&lt;br /&gt;&lt;br /&gt;            out.println(&lt;br /&gt;                    "{"&lt;br /&gt;                    + " \"id\":" + '"' + id + '"' + ","&lt;br /&gt;                    + " \"name\":" + '"' + name + '"' + ","&lt;br /&gt;                    + " \"last\":" + '"' + last + '"' + ","&lt;br /&gt;                    + " \"hobby\":" + '"' + hobby + '"'&lt;br /&gt;                    + "}");&lt;br /&gt;          // System.out.println("createServlet id="+name);&lt;br /&gt;        } finally {&lt;br /&gt;            out.close();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;deleteServlet.java&lt;br /&gt;------------------&lt;br /&gt;package servletPackage;&lt;br /&gt;/**&lt;br /&gt; *&lt;br /&gt; * @author Ali Riza SARAL&lt;br /&gt; */&lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.Enumeration;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;import mainPackage.*;&lt;br /&gt;import daoPackage.*;&lt;br /&gt;&lt;br /&gt;import util.Escape;&lt;br /&gt;&lt;br /&gt;public class deleteServlet&lt;br /&gt;        extends HttpServlet&lt;br /&gt;{&lt;br /&gt;    /**&lt;br /&gt;     *  Called once at startup&lt;br /&gt;     */&lt;br /&gt;    public void init()&lt;br /&gt;        throws ServletException&lt;br /&gt;    {&lt;br /&gt;        System.out.println("ARSmsg: deleteServlet began to work");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;    throws ServletException, IOException {&lt;br /&gt;        response.setContentType("text/html;charset=UTF-8");&lt;br /&gt;        PrintWriter out = response.getWriter();&lt;br /&gt;&lt;br /&gt;        PersonDAOMySQLDBImpl personDAO;&lt;br /&gt;        Person person= new Person();&lt;br /&gt;        HttpSession session = request.getSession();&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            personDAO = (PersonDAOMySQLDBImpl) session.getAttribute("personDAOsess");&lt;br /&gt;            personDAO.deleteRec(personDAO.getPersonCurrentId());&lt;br /&gt;            System.out.println("ARSSSSSSssCurrentId="+personDAO.getPersonCurrentId());&lt;br /&gt;            person = personDAO.readRec(personDAO.getPersonCurrentId());&lt;br /&gt;&lt;br /&gt;            String id = String.valueOf(person.getId());&lt;br /&gt;            String name = person.getName();&lt;br /&gt;            String last = person.getLast();&lt;br /&gt;            String hobby = person.getHobby();&lt;br /&gt;&lt;br /&gt;            id = Escape.html(id);&lt;br /&gt;            name = Escape.html(name);&lt;br /&gt;            last = Escape.html(last);&lt;br /&gt;            hobby = Escape.html(hobby);&lt;br /&gt;&lt;br /&gt;            // for JSON output&lt;br /&gt;            id = Escape.javaScript(id);&lt;br /&gt;            name = Escape.javaScript(name);&lt;br /&gt;            last = Escape.javaScript(last);&lt;br /&gt;            hobby = Escape.javaScript(hobby);&lt;br /&gt;&lt;br /&gt;            out.println(&lt;br /&gt;                    "{"&lt;br /&gt;                    + " \"id\":" + '"' + id + '"' + ","&lt;br /&gt;                    + " \"name\":" + '"' + name + '"' + ","&lt;br /&gt;                    + " \"last\":" + '"' + last + '"' + ","&lt;br /&gt;                    + " \"hobby\":" + '"' + hobby + '"'&lt;br /&gt;                    + "}");&lt;br /&gt;           //System.out.println("ProcessData out id="+name);&lt;br /&gt;        } finally {&lt;br /&gt;            out.close();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;updateServlet.java&lt;br /&gt;------------------&lt;br /&gt;package servletPackage;&lt;br /&gt;/**&lt;br /&gt; *&lt;br /&gt; * @author Ali Riza SARAL&lt;br /&gt; */&lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.Enumeration;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;import mainPackage.*;&lt;br /&gt;import daoPackage.*;&lt;br /&gt;&lt;br /&gt;import util.Escape;&lt;br /&gt;&lt;br /&gt;public class updateServlet extends HttpServlet {&lt;br /&gt;&lt;br /&gt;    public void init()&lt;br /&gt;        throws ServletException&lt;br /&gt;    {&lt;br /&gt;        System.out.println("Init() worked");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;    throws ServletException, IOException {&lt;br /&gt;        response.setContentType("text/html;charset=UTF-8");&lt;br /&gt;        PrintWriter out = response.getWriter();&lt;br /&gt;&lt;br /&gt;        PersonDAOMySQLDBImpl personDAO;&lt;br /&gt;        Person person= new Person();&lt;br /&gt;        HttpSession session = request.getSession();&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            String id = request.getParameter("id");&lt;br /&gt;            String name = request.getParameter("name");&lt;br /&gt;            String last = request.getParameter("last");&lt;br /&gt;            String hobby = request.getParameter("hobby");&lt;br /&gt;            personDAO = (PersonDAOMySQLDBImpl) session.getAttribute("personDAOsess");&lt;br /&gt;            personDAO.updateRec(Integer.valueOf(id), name, last, hobby);&lt;br /&gt;&lt;br /&gt;            if (person != null){&lt;br /&gt;            session.removeAttribute("personDAOsess");&lt;br /&gt;            session.setAttribute("personDAOsess", personDAO);&lt;br /&gt;&lt;br /&gt;             id = Escape.html(id);&lt;br /&gt;            name = Escape.html(name);&lt;br /&gt;            last = Escape.html(last);&lt;br /&gt;            hobby = Escape.html(hobby);&lt;br /&gt;&lt;br /&gt;            // for JSON output&lt;br /&gt;            id = Escape.javaScript(id);&lt;br /&gt;            name = Escape.javaScript(name);&lt;br /&gt;            last = Escape.javaScript(last);&lt;br /&gt;            hobby = Escape.javaScript(hobby);&lt;br /&gt;&lt;br /&gt;            out.println(&lt;br /&gt;                    "{"&lt;br /&gt;                    + " \"id\":" + '"' + id + '"' + ","&lt;br /&gt;                    + " \"name\":" + '"' + name + '"' + ","&lt;br /&gt;                    + " \"last\":" + '"' + last + '"' + ","&lt;br /&gt;                    + " \"hobby\":" + '"' + hobby + '"'&lt;br /&gt;                    + "}");&lt;br /&gt;           //System.out.println("ProcessData out id="+name);&lt;br /&gt;            }&lt;br /&gt;        } finally {&lt;br /&gt;            out.close();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-2650936917602937074?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/2650936917602937074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/2650936917602937074'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/03/crud-with-jquery-master-detail-4.html' title='Crud with JQuery Master-Detail 4'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-4018461689813166132</id><published>2011-03-17T04:43:00.001-07:00</published><updated>2011-03-17T04:50:15.130-07:00</updated><title type='text'>Crud with JQuery Master-Detail 3</title><content type='html'>The AJAX calls address the Servlets in their url parms.  The&lt;br /&gt;servlet calls are defined in the web.xml:&lt;br /&gt;&lt;br /&gt;web.xml:&lt;br /&gt;--------&lt;br /&gt;&amp;lt?xml version="1.0" encoding="UTF-8"?&amp;gt&lt;br /&gt;&amp;ltweb-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&amp;gt&lt;br /&gt;    &amp;ltdisplay-name&amp;gtSimple CRUD of ARS&amp;lt/display-name&amp;gt&lt;br /&gt;    &amp;ltwelcome-file-list&amp;gt&lt;br /&gt;        &amp;ltwelcome-file&amp;gtindex.jsp&amp;lt/welcome-file&amp;gt&lt;br /&gt;    &amp;lt/welcome-file-list&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtinit&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.initServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtnew&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.createServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtreadnext&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.readNextServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtreadprev&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.readPrevServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtsave&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.updateServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtdelete&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.deleteServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtlist&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.listServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtselectlist&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.selectListServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtinit&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/init&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtnew&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/new&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtreadnext&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/readnext&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtreadprev&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/readprev&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtsave&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/save&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtdelete&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/delete&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtlist&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/list&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtselectlist&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/selectlist&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;&amp;lt/web-app&amp;gt&lt;br /&gt;&lt;br /&gt;The sources of the servlets are in the source packages&lt;br /&gt;servletPackage library.&lt;br /&gt;&lt;br /&gt;initServlet.java is used to initialize the index.jsp's&lt;br /&gt;form fields at the beginning of the application.&lt;br /&gt;&lt;br /&gt;At the beginning of the index.jsp:&lt;br /&gt;...&lt;br /&gt;&amp;lt%&lt;br /&gt;    System.out.println("index.jsp JSP script began here.");&lt;br /&gt;                PersonDAOMySQLDBImpl personDAO;&lt;br /&gt;&lt;br /&gt;                if (session.getAttribute("personDAOsess") == null){&lt;br /&gt;                    System.out.println("index.jsp personDAOsess == null ");&lt;br /&gt;                    personDAO = new PersonDAOMySQLDBImpl();&lt;br /&gt;                    session.setAttribute("personDAOsess", personDAO);&lt;br /&gt;                }&lt;br /&gt;                else {&lt;br /&gt;                    System.out.println("index.jsp personDAOsess!!!!=null");&lt;br /&gt;                    personDAO = (PersonDAOMySQLDBImpl) session.getAttribute("personDAOsess");&lt;br /&gt;                    System.out.println("personcurrentid="+personDAO.getPersonCurrentId());&lt;br /&gt;                }&lt;br /&gt;    %&amp;gt&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;initializes the personDAO and puts it into a session attribute if it already does not exist.&lt;br /&gt;&lt;br /&gt;Then initServlet.java works.  It gets the current id from the personDAO of which constructor&lt;br /&gt;has set it to 1.  Then it:&lt;br /&gt;...&lt;br /&gt;person = personDAO.readRec(personDAO.getPersonCurrentId());&lt;br /&gt;...&lt;br /&gt;and retrieves the related person data.  It formats this data into JSON format and&lt;br /&gt;returns it with :&lt;br /&gt;out.println(&lt;br /&gt;                    "{"&lt;br /&gt;                    + " \"id\":" + '"' + id + '"' + ","&lt;br /&gt;                    + " \"name\":" + '"' + name + '"' + ","&lt;br /&gt;                    + " \"last\":" + '"' + last + '"' + ","&lt;br /&gt;                    + " \"hobby\":" + '"' + hobby + '"'&lt;br /&gt;                    + "}");&lt;br /&gt;&lt;br /&gt;The complete source follows:&lt;br /&gt;&lt;br /&gt;initServlet.java:&lt;br /&gt;-----------------&lt;br /&gt;package servletPackage;&lt;br /&gt;/**&lt;br /&gt; *&lt;br /&gt; * @author Ali Riza SARAL&lt;br /&gt; */&lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.Enumeration;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;import mainPackage.*;&lt;br /&gt;import daoPackage.*;&lt;br /&gt;&lt;br /&gt;import util.Escape;&lt;br /&gt;&lt;br /&gt;public class initServlet extends HttpServlet {&lt;br /&gt;&lt;br /&gt;    public void init()&lt;br /&gt;        throws ServletException&lt;br /&gt;    {&lt;br /&gt;        System.out.println("ARSmsg: initServlet began to work");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;    throws ServletException, IOException {&lt;br /&gt;        response.setContentType("text/html;charset=UTF-8");&lt;br /&gt;        PrintWriter out = response.getWriter();&lt;br /&gt;&lt;br /&gt;        PersonDAOMySQLDBImpl personDAO;&lt;br /&gt;        Person person= new Person();&lt;br /&gt;        HttpSession session = request.getSession();&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            personDAO = (PersonDAOMySQLDBImpl) session.getAttribute("personDAOsess");&lt;br /&gt;            person = personDAO.readRec(personDAO.getPersonCurrentId());&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            String id = String.valueOf(person.getId());&lt;br /&gt;            String name = person.getName();&lt;br /&gt;            String last = person.getLast();&lt;br /&gt;            String hobby = person.getHobby();&lt;br /&gt;            System.out.println("init id="+personDAO.getPersonNextId());&lt;br /&gt;&lt;br /&gt;             id = Escape.html(id);&lt;br /&gt;            name = Escape.html(name);&lt;br /&gt;            last = Escape.html(last);&lt;br /&gt;            hobby = Escape.html(hobby);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            // for JSON output&lt;br /&gt;            id = Escape.javaScript(id);&lt;br /&gt;            name = Escape.javaScript(name);&lt;br /&gt;            last = Escape.javaScript(last);&lt;br /&gt;            hobby = Escape.javaScript(hobby);&lt;br /&gt;&lt;br /&gt;            out.println(&lt;br /&gt;                    "{"&lt;br /&gt;                    + " \"id\":" + '"' + id + '"' + ","&lt;br /&gt;                    + " \"name\":" + '"' + name + '"' + ","&lt;br /&gt;                    + " \"last\":" + '"' + last + '"' + ","&lt;br /&gt;                    + " \"hobby\":" + '"' + hobby + '"'&lt;br /&gt;                    + "}");&lt;br /&gt;           //System.out.println("ProcessData out id="+name);&lt;br /&gt;        }&lt;br /&gt;        catch (Error e) {&lt;br /&gt;            System.out.println(e.getMessage());&lt;br /&gt;        }&lt;br /&gt;        finally {&lt;br /&gt;            out.close();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-4018461689813166132?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/4018461689813166132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/4018461689813166132'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/03/crud-with-jquery-master-detail-3.html' title='Crud with JQuery Master-Detail 3'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-5519216155203319685</id><published>2011-03-17T04:42:00.000-07:00</published><updated>2011-03-17T04:48:48.629-07:00</updated><title type='text'>Crud with JQuery Master-Detail 2</title><content type='html'>&lt;span style="font-size:85%;"&gt;Lets go further into the AJAX call - servlets.&lt;br /&gt;&lt;br /&gt;When a button is clicked the related JQuery handler gets activated.&lt;br /&gt;This handler makes an AJAX call. The handlers are defined in the&lt;br /&gt;js/JQmultiAJAXCalls.js.&lt;br /&gt;&lt;br /&gt;aoData is used to pass the input values id, name, lastname and hobby&lt;br /&gt;to the servlet indicated in the AJAX calls url param.&lt;br /&gt;Datatype is JSON and be carefull about the contentType.&lt;br /&gt;If the call ends with success then I parse the returned&lt;br /&gt;data with ParseJSON into a var named jsonData. Then I use&lt;br /&gt;this to update the input fields on the index.jsp with&lt;br /&gt;the returned values.&lt;br /&gt;&lt;br /&gt;JQmultiAJAXCalls.js&lt;br /&gt;-------------------&lt;br /&gt;$(document).ready(function() {&lt;br /&gt;// Handler for .ready() called.&lt;br /&gt;$(function() {&lt;br /&gt;$("input#New").click(function() {&lt;br /&gt;var id = $("input#id").val();&lt;br /&gt;var name = $("input#name").val();&lt;br /&gt;var last = $("input#last").val();&lt;br /&gt;var hobby = $("input#hobby").val();&lt;br /&gt;//alert('New is clicked dataString='+name);&lt;br /&gt;var aoData = [];&lt;br /&gt;aoData.push( { "name": "id", "value": id },&lt;br /&gt;{ "name": "name", "value": name },&lt;br /&gt;{"name": "last", "value": last },&lt;br /&gt;{"name": "hobby", "value": hobby }&lt;br /&gt;);&lt;br /&gt;$.ajax({&lt;br /&gt;type:"POST",&lt;br /&gt;url: "./new",&lt;br /&gt;contentType: "application/x-www-form-urlencoded",&lt;br /&gt;dataType: "JSON",&lt;br /&gt;data: aoData,&lt;br /&gt;error : function (XMLHttpRequest, textStatus, errorThrown) {&lt;br /&gt;alert(XMLHttpRequest);&lt;br /&gt;alert(textStatus);&lt;br /&gt;alert(errorThrown)},&lt;br /&gt;&lt;br /&gt;success: function(data) {&lt;br /&gt;var jsonData = $.parseJSON(data);&lt;br /&gt;$("input#id").val(jsonData.id)&lt;br /&gt;$("input#name").val(jsonData.name)&lt;br /&gt;$("input#last").val(jsonData.last)&lt;br /&gt;$("input#hobby").val(jsonData.hobby)&lt;br /&gt;}&lt;br /&gt;})&lt;br /&gt;return false;&lt;br /&gt;})&lt;br /&gt;})&lt;br /&gt;&lt;br /&gt;$(function() {&lt;br /&gt;$("input#Save").click(function() {&lt;br /&gt;var id = $("input#id").val();&lt;br /&gt;var name = $("input#name").val();&lt;br /&gt;var last = $("input#last").val();&lt;br /&gt;var hobby = $("input#hobby").val();&lt;br /&gt;//alert('Save is clicked name='+name);&lt;br /&gt;var aoData = [];&lt;br /&gt;aoData.push( {"name": "id", "value": id },&lt;br /&gt;{"name": "name", "value": name },&lt;br /&gt;{"name": "last", "value": last },&lt;br /&gt;{"name": "hobby", "value": hobby }&lt;br /&gt;);&lt;br /&gt;$.ajax({&lt;br /&gt;type:"POST",&lt;br /&gt;url: "./save",&lt;br /&gt;contentType: "application/x-www-form-urlencoded",&lt;br /&gt;dataType: "JSON",&lt;br /&gt;data: aoData,&lt;br /&gt;error : function (XMLHttpRequest, textStatus, errorThrown) {&lt;br /&gt;alert(XMLHttpRequest);&lt;br /&gt;alert(textStatus);&lt;br /&gt;alert(errorThrown)&lt;br /&gt;},&lt;br /&gt;success: function(data) {&lt;br /&gt;var jsonData = $.parseJSON(data);&lt;br /&gt;$("input#id").val(jsonData.id)&lt;br /&gt;$("input#name").val(jsonData.name)&lt;br /&gt;$("input#last").val(jsonData.last)&lt;br /&gt;$("input#hobby").val(jsonData.hobby)&lt;br /&gt;}&lt;br /&gt;})&lt;br /&gt;return false;&lt;br /&gt;})&lt;br /&gt;})&lt;br /&gt;&lt;br /&gt;$(function() {&lt;br /&gt;$("input#Delete").click(function() {&lt;br /&gt;alert("Please be patient!");&lt;br /&gt;var id = $("input#id").val();&lt;br /&gt;var name = $("input#name").val();&lt;br /&gt;var last = $("input#last").val();&lt;br /&gt;var hobby = $("input#hobby").val();&lt;br /&gt;//alert('Delete is clicked name='+name);&lt;br /&gt;var aoData = [];&lt;br /&gt;aoData.push( {"name": "id", "value": id },&lt;br /&gt;{"name": "name", "value": name },&lt;br /&gt;{"name": "last", "value": last },&lt;br /&gt;{"name": "hobby", "value": hobby }&lt;br /&gt;);&lt;br /&gt;$.ajax({&lt;br /&gt;type:"POST",&lt;br /&gt;url: "./delete",&lt;br /&gt;contentType: "application/x-www-form-urlencoded",&lt;br /&gt;dataType: "JSON",&lt;br /&gt;data: aoData,&lt;br /&gt;error : function (XMLHttpRequest, textStatus, errorThrown) {&lt;br /&gt;alert(XMLHttpRequest);&lt;br /&gt;alert(textStatus);&lt;br /&gt;alert(errorThrown)&lt;br /&gt;},&lt;br /&gt;success: function(data) {&lt;br /&gt;var jsonData = $.parseJSON(data);&lt;br /&gt;$("input#id").val(jsonData.id)&lt;br /&gt;$("input#name").val(jsonData.name)&lt;br /&gt;$("input#last").val(jsonData.last)&lt;br /&gt;$("input#hobby").val(jsonData.hobby)&lt;br /&gt;}&lt;br /&gt;})&lt;br /&gt;return false;&lt;br /&gt;})&lt;br /&gt;})&lt;br /&gt;$(function() {&lt;br /&gt;$("input#Next").click(function() {&lt;br /&gt;var id = $("input#id").val();&lt;br /&gt;var name = $("input#name").val();&lt;br /&gt;var last = $("input#last").val();&lt;br /&gt;var hobby = $("input#hobby").val();&lt;br /&gt;//alert('Next is clicked name='+name);&lt;br /&gt;var aoData = [];&lt;br /&gt;aoData.push( {"name": "id", "value": id },&lt;br /&gt;{ "name": "name", "value": name },&lt;br /&gt;{"name": "last", "value": last },&lt;br /&gt;{"name": "hobby", "value": hobby }&lt;br /&gt;);&lt;br /&gt;$.ajax({&lt;br /&gt;type:"POST",&lt;br /&gt;url: "./readnext",&lt;br /&gt;contentType: "application/x-www-form-urlencoded",&lt;br /&gt;dataType: "JSON",&lt;br /&gt;data: aoData,&lt;br /&gt;error : function (XMLHttpRequest, textStatus, errorThrown) {&lt;br /&gt;alert(XMLHttpRequest);&lt;br /&gt;alert(textStatus);&lt;br /&gt;alert(errorThrown)&lt;br /&gt;},&lt;br /&gt;success: function(data) {&lt;br /&gt;var jsonData = $.parseJSON(data);&lt;br /&gt;$("input#id").val(jsonData.id)&lt;br /&gt;$("input#name").val(jsonData.name)&lt;br /&gt;$("input#last").val(jsonData.last)&lt;br /&gt;$("input#hobby").val(jsonData.hobby)&lt;br /&gt;}&lt;br /&gt;})&lt;br /&gt;return false;&lt;br /&gt;})&lt;br /&gt;})&lt;br /&gt;&lt;br /&gt;$(function() {&lt;br /&gt;$("input#Prev").click(function() {&lt;br /&gt;var id = $("input#id").val();&lt;br /&gt;var name = $("input#name").val();&lt;br /&gt;var last = $("input#last").val();&lt;br /&gt;var hobby = $("input#hobby").val();&lt;br /&gt;//alert('Prev is clicked name='+name);&lt;br /&gt;var aoData = [];&lt;br /&gt;aoData.push( {"name": "id", "value": id },&lt;br /&gt;{"name": "name", "value": name },&lt;br /&gt;{"name": "last", "value": last },&lt;br /&gt;{"name": "hobby", "value": hobby }&lt;br /&gt;);&lt;br /&gt;$.ajax({&lt;br /&gt;type:"POST",&lt;br /&gt;url: "./readprev",&lt;br /&gt;contentType: "application/x-www-form-urlencoded",&lt;br /&gt;dataType: "JSON",&lt;br /&gt;data: aoData,&lt;br /&gt;error : function (XMLHttpRequest, textStatus, errorThrown) {&lt;br /&gt;alert(XMLHttpRequest);&lt;br /&gt;alert(textStatus);&lt;br /&gt;alert(errorThrown)&lt;br /&gt;},&lt;br /&gt;success: function(data) {&lt;br /&gt;var jsonData = $.parseJSON(data);&lt;br /&gt;$("input#id").val(jsonData.id)&lt;br /&gt;$("input#name").val(jsonData.name)&lt;br /&gt;$("input#last").val(jsonData.last)&lt;br /&gt;$("input#hobby").val(jsonData.hobby)&lt;br /&gt;}&lt;br /&gt;})&lt;br /&gt;return false;&lt;br /&gt;})&lt;br /&gt;})&lt;br /&gt;&lt;br /&gt;$(function() {&lt;br /&gt;$("input#List").click(function() {&lt;br /&gt;window.open("personList.jsp");&lt;br /&gt;//window.close();&lt;br /&gt;window.open('close.html', '_self');&lt;br /&gt;})&lt;br /&gt;})&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;});&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-5519216155203319685?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/5519216155203319685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/5519216155203319685'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/03/crud-with-jquery-master-detail-2.html' title='Crud with JQuery Master-Detail 2'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-7865038203958015119</id><published>2011-03-17T04:29:00.000-07:00</published><updated>2011-03-17T04:46:55.089-07:00</updated><title type='text'>Crud with JQuery Master-Detail 1</title><content type='html'>This is a Simple CRUD application using JQuery.  The detail screen has&lt;br /&gt;CRUD &amp; prev/next, List buttons.  You can select a person from the&lt;br /&gt;master list and work on the detail screen.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-vSfVtasAf6k/TYH0LJ2qI-I/AAAAAAAAAac/Luw0dczjDy8/s1600/CrudJQwithDTARS1.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 194px; height: 400px;" src="http://2.bp.blogspot.com/-vSfVtasAf6k/TYH0LJ2qI-I/AAAAAAAAAac/Luw0dczjDy8/s400/CrudJQwithDTARS1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5585013485377037282" /&gt;&lt;/a&gt;&lt;br /&gt;Both the detail and list JSP's use JQuery and AJAX calls.  &lt;br /&gt;The server side is implemented via Servlets and JSPs.&lt;br /&gt;The data is used from a MySQL table.&lt;br /&gt;&lt;br /&gt;CREATE TABLE `persontab` (&lt;br /&gt;  `id` int(11) NOT NULL AUTO_INCREMENT,&lt;br /&gt;  `firstname` varchar(20) DEFAULT NULL,&lt;br /&gt;  `lastname` varchar(20) DEFAULT NULL,&lt;br /&gt;  `hobby` varchar(30) DEFAULT NULL,&lt;br /&gt;  PRIMARY KEY (`id`)&lt;br /&gt;) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=latin1;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can populate it with:&lt;br /&gt;INSERT INTO `persondao`.`persontab` (`firstname`, `lastname`, `hobby`) VALUES ("name1", "surname", "hobby");&lt;br /&gt;INSERT INTO `persondao`.`persontab` (`firstname`, `lastname`, `hobby`) VALUES ("name2", "surname", "hobby");&lt;br /&gt;&lt;br /&gt;Master list JSP uses the JQuery DT abilities fully, including buffering.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-UZ1p5C-RsZ8/TYH0cfJiBdI/AAAAAAAAAak/RZjQqIDf8F8/s1600/CrudJQwithDTARS2.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 154px;" src="http://3.bp.blogspot.com/-UZ1p5C-RsZ8/TYH0cfJiBdI/AAAAAAAAAak/RZjQqIDf8F8/s400/CrudJQwithDTARS2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5585013783151117778" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-xnVnmweY6HM/TYH0nKpBCKI/AAAAAAAAAas/cVIZoVdkJok/s1600/CrudJQwithDTARS3.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 206px;" src="http://1.bp.blogspot.com/-xnVnmweY6HM/TYH0nKpBCKI/AAAAAAAAAas/cVIZoVdkJok/s400/CrudJQwithDTARS3.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5585013966624589986" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ANALYSIS and the source code:&lt;br /&gt;-----------------------------&lt;br /&gt;The application opens with index.jsp which is indicated as welcome file at&lt;br /&gt;web.xml:&lt;br /&gt;...&lt;br /&gt;    &amp;ltdisplay-name&amp;gtSimple CRUD of ARS&amp;lt/display-name&amp;gt&lt;br /&gt;    &amp;ltwelcome-file-list&amp;gt&lt;br /&gt;        &amp;ltwelcome-file&amp;gtindex.jsp&amp;lt/welcome-file&amp;gt&lt;br /&gt;    &amp;lt/welcome-file-list&amp;gt&lt;br /&gt;...&lt;br /&gt;(I will provide the complete web.xml when I come to servlet definitions).&lt;br /&gt;&lt;br /&gt;Index.jsp has a form named 'theDetail'.  This is used for input fields name, lastname&lt;br /&gt;and hobby.  At the bottom of this for there are navigation buttons next, prev, &lt;br /&gt;new, save, delete.  These buttons are linked to corresponding servlets via AJAX calls&lt;br /&gt;which are included via &lt;br /&gt;...&lt;br /&gt;&amp;ltscript type="text/javascript" src="js/JQmultiAJAXCalls.js"&amp;gt&amp;lt/script&amp;gt &lt;br /&gt;...&lt;br /&gt;at the top of the index.jsp.&lt;br /&gt;A personDAO is defined used to access the MySQL database.  personDAO is also&lt;br /&gt;used to keep track of the currentId and the NextAvailableId.&lt;br /&gt;&lt;br /&gt;Index.jsp shows the first record in the MySQL DB when it is first opened.&lt;br /&gt;This is done via an AJAX call to the init servlet.&lt;br /&gt;&lt;br /&gt;This is the end of an overall outline of the index.page.  The complete cource follows.&lt;br /&gt;&lt;br /&gt;index.jsp&lt;br /&gt;---------&lt;br /&gt;&amp;lt%--&lt;br /&gt;    Document   : index&lt;br /&gt;    Created on : 24.Sub.2011, 18:23:21&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lt%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt&lt;br /&gt;&amp;lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt&lt;br /&gt;&amp;lt%@ page import="mainPackage.*" %&amp;gt&lt;br /&gt;&amp;lt%@ page import="daoPackage.*" %&amp;gt&lt;br /&gt;&amp;lthtml&amp;gt&lt;br /&gt;    &amp;lthead&amp;gt&lt;br /&gt;        &amp;ltmeta http-equiv="Content-Type" content="text/html; charset=UTF-8"&amp;gt&lt;br /&gt;    &amp;lttitle&amp;gtARS's Simple JQ CRUD&amp;lt/title&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="js/jquery.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="js/jquery.form.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="js/JQmultiAJAXCalls.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;lt%&lt;br /&gt;    System.out.println("index.jsp JSP script began here.");&lt;br /&gt;                PersonDAOMySQLDBImpl personDAO;&lt;br /&gt;&lt;br /&gt;                if (session.getAttribute("personDAOsess") == null){&lt;br /&gt;                    System.out.println("index.jsp personDAOsess == null ");&lt;br /&gt;                    personDAO = new PersonDAOMySQLDBImpl();&lt;br /&gt;                    session.setAttribute("personDAOsess", personDAO);&lt;br /&gt;                }&lt;br /&gt;                else {&lt;br /&gt;                    System.out.println("index.jsp personDAOsess!!!!=null");&lt;br /&gt;                    personDAO = (PersonDAOMySQLDBImpl) session.getAttribute("personDAOsess");&lt;br /&gt;                    System.out.println("personcurrentid="+personDAO.getPersonCurrentId());&lt;br /&gt;                }&lt;br /&gt;    %&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" charset="utf-8"&amp;gt&lt;br /&gt;        function InitScr() {&lt;br /&gt;         //alert ("Merhaba from Ali R+ with best wishes! ");&lt;br /&gt;        }&lt;br /&gt;        $(document).ready(function() {&lt;br /&gt;         $.ajax({&lt;br /&gt;                type:"POST",&lt;br /&gt;                url: "./init",&lt;br /&gt;                contentType: "application/x-www-form-urlencoded",&lt;br /&gt;                dataType: "JSON",&lt;br /&gt;                success: function(data) {&lt;br /&gt;                     var jsonData = $.parseJSON(data);&lt;br /&gt;                    $("input#id").val(jsonData.id)&lt;br /&gt;                    $("input#name").val(jsonData.name)&lt;br /&gt;                    $("input#last").val(jsonData.last)&lt;br /&gt;                    $("input#hobby").val(jsonData.hobby)&lt;br /&gt;                }&lt;br /&gt;            });&lt;br /&gt;        } );&lt;br /&gt;    &amp;lt/script&amp;gt&lt;br /&gt;&amp;lt/head&amp;gt&lt;br /&gt;&amp;ltbody style="background-color:yellow" onLoad="InitScr()"&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lth1&amp;gtThe Simplest JQuery CRUD Application&amp;lt/h1&amp;gt&lt;br /&gt;&lt;br /&gt;    &amp;ltbr /&amp;gt&lt;br /&gt;&lt;br /&gt;    &amp;ltform name="theDetail" action="" method="get"&amp;gt&lt;br /&gt;        &amp;ltinput type="hidden" id="id" name="id"/&amp;gt&amp;ltbr /&amp;gt&lt;br /&gt;        First name: &amp;ltinput type="text" id ="name" name="name"/&amp;gt&amp;ltbr /&amp;gt&lt;br /&gt;        Last name : &amp;ltinput type="text" id="last" name="last"/&amp;gt&amp;ltbr /&amp;gt&lt;br /&gt;        Hobby     : &amp;ltinput type="text" id="hobby" name="hobby"/&amp;gt&amp;ltbr /&amp;gt&lt;br /&gt;        &amp;ltbr /&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="New" VALUE="New"&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="Save" VALUE="Save"&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="Delete" VALUE="Delete"&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="Next" VALUE="Next"&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="Prev" VALUE="Prev"&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="List" VALUE="List"&amp;gt&lt;br /&gt;        &amp;lt!--INPUT TYPE="button" id="List" VALUE="List"&lt;br /&gt;         onclick="document.forms[0].action = '/list'; return true;" /--&amp;gt&lt;br /&gt;    &amp;lt/form&amp;gt&lt;br /&gt;&amp;lt/body&amp;gt&lt;br /&gt;&amp;lt/html&amp;gt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-7865038203958015119?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/7865038203958015119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/7865038203958015119'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/03/crud-with-jquery-1.html' title='Crud with JQuery Master-Detail 1'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-vSfVtasAf6k/TYH0LJ2qI-I/AAAAAAAAAac/Luw0dczjDy8/s72-c/CrudJQwithDTARS1.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-8611851519831886352</id><published>2011-02-28T23:41:00.001-08:00</published><updated>2011-02-28T23:41:34.708-08:00</updated><title type='text'>Simple CRUD with JQuery-4</title><content type='html'>The underlying mechanism to be used as database is the Data Access Object.&lt;br /&gt;It is defined in the source Packages.daoPackage&lt;br /&gt;daoPackage.PersonDAO.java&lt;br /&gt;-------------------------&lt;br /&gt;package daoPackage;&lt;br /&gt;&lt;br /&gt;import java.util.Collection;&lt;br /&gt;import mainPackage.*;&lt;br /&gt;&lt;br /&gt;public interface PersonDAO {&lt;br /&gt;&lt;br /&gt;    public void createRec(int id, String firstName,&lt;br /&gt;            String lastName, String hobby)&lt;br /&gt;            throws PersonDAOSysException;&lt;br /&gt;&lt;br /&gt;    public Person readRec(int personId)&lt;br /&gt;            throws PersonDAOSysException;&lt;br /&gt;    &lt;br /&gt;    public void updateRec(int id, String firstName,&lt;br /&gt;            String lastName, String hobby)&lt;br /&gt;            throws PersonDAOSysException;&lt;br /&gt;&lt;br /&gt;    public void deleteRec(int personId)&lt;br /&gt;            throws PersonDAOSysException;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;daoPackage.PersonDAOSysException&lt;br /&gt;--------------------------------&lt;br /&gt;package daoPackage;&lt;br /&gt;&lt;br /&gt;public class PersonDAOSysException extends RuntimeException {&lt;br /&gt;   public PersonDAOSysException (String str) {&lt;br /&gt;      super(str);&lt;br /&gt;   }&lt;br /&gt;   public PersonDAOSysException () {&lt;br /&gt;      super();&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;daoPackage.PersonDAOVectorImpl.java&lt;br /&gt;-----------------------------------&lt;br /&gt;package daoPackage;&lt;br /&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;import javax.naming.*;&lt;br /&gt;import java.sql.*;&lt;br /&gt;import javax.sql.*;&lt;br /&gt;import mainPackage.*;&lt;br /&gt;&lt;br /&gt;public class PersonDAOVectorImpl implements PersonDAO {&lt;br /&gt;&lt;br /&gt;    private static Vector&amp;ltPerson&amp;gt personVect;&lt;br /&gt;    private static int personNextId = 1;&lt;br /&gt;    private static int personCurrentId = 1;&lt;br /&gt;&lt;br /&gt;    public PersonDAOVectorImpl() {&lt;br /&gt;        System.out.println("PersonDAOVectorImpl constructor began.");&lt;br /&gt;        //check if it exists as serialized&lt;br /&gt;        //if not&lt;br /&gt;        //         personelVectDB.populate();&lt;br /&gt;        // if it exists deserialize and populate?&lt;br /&gt;        //         personelVectDB.deserialize();&lt;br /&gt;&lt;br /&gt;        personVect = new Vector&amp;ltPerson&amp;gt();&lt;br /&gt;        Person personalData;&lt;br /&gt;&lt;br /&gt;        personalData = new Person();&lt;br /&gt;        personalData.setId(1);&lt;br /&gt;        personalData.setName("Ali");&lt;br /&gt;        personalData.setLast("SARAL");&lt;br /&gt;        personalData.setHobby("Music Composition");&lt;br /&gt;        personVect.add(personalData);&lt;br /&gt;&lt;br /&gt;        personalData = new Person();&lt;br /&gt;        personalData.setId(2);&lt;br /&gt;        personalData.setName("Tamer");&lt;br /&gt;        personalData.setLast("ÜNAL");&lt;br /&gt;        personalData.setHobby("Folk Music");&lt;br /&gt;        personVect.add(personalData);&lt;br /&gt;&lt;br /&gt;        personalData = new Person();&lt;br /&gt;        personalData.setId(3);&lt;br /&gt;        personalData.setName("Ekrem");&lt;br /&gt;        personalData.setLast("CANBEK");&lt;br /&gt;        personalData.setHobby("Violin");&lt;br /&gt;        personVect.add(personalData);&lt;br /&gt;&lt;br /&gt;        personalData = new Person();&lt;br /&gt;        personalData.setId(4);&lt;br /&gt;        personalData.setName("Turan");&lt;br /&gt;        personalData.setLast("MUTLUAY");&lt;br /&gt;        personalData.setHobby("Choir");&lt;br /&gt;        personVect.add(personalData);&lt;br /&gt;&lt;br /&gt;        personalData = new Person();&lt;br /&gt;        personalData.setId(5);&lt;br /&gt;        personalData.setName("Rengin");&lt;br /&gt;        personalData.setLast("AHISKALI");&lt;br /&gt;        personalData.setHobby("Literature");&lt;br /&gt;        personVect.add(personalData);&lt;br /&gt;&lt;br /&gt;        Enumeration vEnum = personVect.elements();&lt;br /&gt;        while (vEnum.hasMoreElements()) {&lt;br /&gt;            Person person = (Person) vEnum.nextElement();&lt;br /&gt;            System.out.println("ARSmsg: PersonDAOVectorImpl constructor person.name=" + person.getName() + " person.id=" + person.getId());&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        personNextId = 6;&lt;br /&gt;        personCurrentId = 1;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void createRec(int id, String firstName, String lastName, String hobby)&lt;br /&gt;            throws PersonDAOSysException {&lt;br /&gt;        System.out.println("ARSmsg : createRec began.");&lt;br /&gt;        Person person = new Person();&lt;br /&gt;        try {&lt;br /&gt;            //getDBConnection();&lt;br /&gt;            person.setId(id);&lt;br /&gt;            person.setName(firstName);&lt;br /&gt;            person.setLast(lastName);&lt;br /&gt;            person.setHobby(hobby);&lt;br /&gt;            personVect.add(personVect.size(), person);&lt;br /&gt;            personCurrentId = personNextId;&lt;br /&gt;            personNextId++;&lt;br /&gt;        } catch (Exception ex) {&lt;br /&gt;            throw new PersonDAOSysException("DAOException:" + ex.getMessage());&lt;br /&gt;        } finally {&lt;br /&gt;            //closeDBConnection();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void deleteRec(int personId) throws PersonDAOSysException {&lt;br /&gt;        System.out.println("ARSmsg : deleteRec began.");&lt;br /&gt;        int posVect = 0;&lt;br /&gt;        try {&lt;br /&gt;            //getDBConnection();&lt;br /&gt;            posVect = findRecSeq(personId);&lt;br /&gt;            System.out.println("personCurrentId=" + personCurrentId);&lt;br /&gt;            System.out.println("posVect=" + posVect);&lt;br /&gt;            if (posVect != -1) {&lt;br /&gt;                personVect.removeElementAt(posVect);&lt;br /&gt;                reorganiseVect();&lt;br /&gt;            } else {&lt;br /&gt;                System.out.println("ARSmsg: Delete - Not found!");&lt;br /&gt;            }&lt;br /&gt;        } catch (Exception ex) {&lt;br /&gt;            throw new PersonDAOSysException("DAOException:" + ex.getMessage());&lt;br /&gt;        } finally {&lt;br /&gt;            closeDBConnection();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Person readRec(int personId)&lt;br /&gt;            throws PersonDAOSysException {&lt;br /&gt;        System.out.println("ARSmsg : readRec began.");&lt;br /&gt;        Person person = new Person();&lt;br /&gt;        int posVect = 0;&lt;br /&gt;        try {&lt;br /&gt;            //getDBConnection();&lt;br /&gt;            posVect = findRecSeq(personId);&lt;br /&gt;            System.out.println("personCurrentId=" + personCurrentId);&lt;br /&gt;            System.out.println("posVect=" + posVect);&lt;br /&gt;            if (posVect == -1) {&lt;br /&gt;                posVect = personCurrentId;&lt;br /&gt;            } else {&lt;br /&gt;                personCurrentId = posVect + 1;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            return personVect.elementAt(posVect);&lt;br /&gt;        } catch (Exception ex) {&lt;br /&gt;            throw new PersonDAOSysException("DAOException:" + ex.getMessage());&lt;br /&gt;        } finally {&lt;br /&gt;            //closeDBConnection();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Person readNextRec()&lt;br /&gt;            throws PersonDAOSysException {&lt;br /&gt;        System.out.println("ARSmsg : readNextRec began.");&lt;br /&gt;        Person person = new Person();&lt;br /&gt;        int posVect = 0;&lt;br /&gt;        try {&lt;br /&gt;            //getDBConnection();&lt;br /&gt;            personCurrentId++;&lt;br /&gt;            posVect = findRecSeq(personCurrentId);&lt;br /&gt;            System.out.println("personCurrentId=" + personCurrentId);&lt;br /&gt;            System.out.println("posVect=" + posVect);&lt;br /&gt;            if (posVect == -1) {&lt;br /&gt;                posVect = personVect.size() - 1;&lt;br /&gt;                personCurrentId--;&lt;br /&gt;            }&lt;br /&gt;            person = (Person) personVect.elementAt(posVect);&lt;br /&gt;            System.out.println("readNextRec person.name =" + (String) person.getName());&lt;br /&gt;            return person;&lt;br /&gt;&lt;br /&gt;        } catch (Exception ex) {&lt;br /&gt;            throw new PersonDAOSysException("DAOException:" + ex.getMessage());&lt;br /&gt;        } finally {&lt;br /&gt;            //closeDBConnection();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Person readPrevRec() throws PersonDAOSysException {&lt;br /&gt;        System.out.println("ARSmsg : readPrevRec began.");&lt;br /&gt;        Person person = new Person();&lt;br /&gt;        int posVect = 0;&lt;br /&gt;        try {&lt;br /&gt;            //getDBConnection();&lt;br /&gt;            personCurrentId--;&lt;br /&gt;            posVect = findRecSeq(personCurrentId);&lt;br /&gt;            System.out.println("personCurrentId=" + personCurrentId);&lt;br /&gt;            System.out.println("posVect=" + posVect);&lt;br /&gt;            if (posVect == -1) {&lt;br /&gt;                posVect = 0;&lt;br /&gt;                personCurrentId++;&lt;br /&gt;            }&lt;br /&gt;            person = (Person) personVect.elementAt(posVect);&lt;br /&gt;            System.out.println("readPrevRec person.name =" + (String) person.getName());&lt;br /&gt;            return person;&lt;br /&gt;&lt;br /&gt;        } catch (Exception ex) {&lt;br /&gt;            throw new PersonDAOSysException("DAOException:" + ex.getMessage());&lt;br /&gt;        } finally {&lt;br /&gt;            //closeDBConnection();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void updateRec(int id, String firstName, String lastName,&lt;br /&gt;            String hobby) throws PersonDAOSysException {&lt;br /&gt;        System.out.println("ARSmsg : updateRec began.");&lt;br /&gt;        int posVect = 0;&lt;br /&gt;        Person person = new Person();&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            //getDBConnection();&lt;br /&gt;&lt;br /&gt;            posVect = findRecSeq(id);&lt;br /&gt;            System.out.println("personNextId=" + personNextId);&lt;br /&gt;            System.out.println("posVect=" + posVect);&lt;br /&gt;            if (posVect == -1) {&lt;br /&gt;                posVect = personNextId - 1;&lt;br /&gt;                personNextId++;&lt;br /&gt;            }&lt;br /&gt;            else {&lt;br /&gt;                personVect.remove(posVect);&lt;br /&gt;            }&lt;br /&gt;            System.out.println("posVect=" + posVect);&lt;br /&gt;            &lt;br /&gt;            person.setId(id);&lt;br /&gt;            person.setName(firstName);&lt;br /&gt;            person.setLast(lastName);&lt;br /&gt;            person.setHobby(hobby);&lt;br /&gt;            personVect.add(posVect, person);&lt;br /&gt;        } catch (Exception ex) {&lt;br /&gt;            throw new PersonDAOSysException("DAOException:" + ex.getMessage());&lt;br /&gt;        } finally {&lt;br /&gt;            closeDBConnection();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private int findRecSeq(int id) {&lt;br /&gt;        int posVect = 0;&lt;br /&gt;        Person person;&lt;br /&gt;        Iterator itr = personVect.iterator();&lt;br /&gt;        while (itr.hasNext()) {&lt;br /&gt;            person = (Person) itr.next();&lt;br /&gt;            //System.out.println("person.name=" + person.getName() + " person.id=" + person.getId());&lt;br /&gt;            if (person.getId() == id) {&lt;br /&gt;                return posVect;&lt;br /&gt;            }&lt;br /&gt;            posVect = posVect + 1;&lt;br /&gt;        }&lt;br /&gt;        return (-1);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private void reorganiseVect() {&lt;br /&gt;        int posVect = 0;&lt;br /&gt;        Person person;&lt;br /&gt;        Iterator itr = personVect.iterator();&lt;br /&gt;        while (itr.hasNext()) {&lt;br /&gt;            person = (Person) itr.next();&lt;br /&gt;            person.setId(posVect + 1);&lt;br /&gt;            posVect = posVect + 1;&lt;br /&gt;        }&lt;br /&gt;        personNextId = posVect + 1;&lt;br /&gt;        //personCurrentId = 1;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private void getDBConnection() throws PersonDAOSysException {&lt;br /&gt;        try {&lt;br /&gt;            if (personVect == null) {&lt;br /&gt;                //personVect = new Personel();&lt;br /&gt;            }&lt;br /&gt;        } catch (Exception ex) {&lt;br /&gt;            throw new PersonDAOSysException("\\DAOException:" + ex.getMessage() + " " + ex.toString());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private void closeDBConnection()&lt;br /&gt;            throws PersonDAOSysException {&lt;br /&gt;        try {&lt;br /&gt;            //personelVectDB.close();&lt;br /&gt;        } catch (Exception ex) {&lt;br /&gt;            throw new PersonDAOSysException("DAOException:" + ex.getMessage());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Vector&amp;ltPerson&amp;gt getPersonVect() {&lt;br /&gt;        return personVect;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void addPerson(Person personalData) {&lt;br /&gt;        personVect.add(personalData);&lt;br /&gt;        personNextId++;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public int getPersonNextId() {&lt;br /&gt;        return personNextId;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public int getPersonCurrentId() {&lt;br /&gt;        return personCurrentId;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The daoPackage uses the Person.java definition as record definition and&lt;br /&gt;it is located in the source Packages.mainPackage&lt;br /&gt;mainPackage.Person.java&lt;br /&gt;-----------------------&lt;br /&gt;&lt;br /&gt;package mainPackage;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; *&lt;br /&gt; * @author Ali Riza SARAL&lt;br /&gt; */&lt;br /&gt;public class Person {&lt;br /&gt;&lt;br /&gt;    private String name;&lt;br /&gt;    private String last;&lt;br /&gt;    private String hobby;&lt;br /&gt;    private int id;&lt;br /&gt;&lt;br /&gt;    public Person(){}&lt;br /&gt;    public Person(int id, String name, String last, String hobby){&lt;br /&gt;         this.name = name;&lt;br /&gt;         this.last = last;&lt;br /&gt;         this.hobby = hobby;&lt;br /&gt;         this.id = id;&lt;br /&gt;    }&lt;br /&gt;    public String getName() {&lt;br /&gt;        return this.name;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setName(String name) {&lt;br /&gt;        this.name = name;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String getLast() {&lt;br /&gt;        return this.last;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setLast(String last) {&lt;br /&gt;        this.last = last;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String getHobby() {&lt;br /&gt;        return this.hobby;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setHobby(String hobby) {&lt;br /&gt;        this.hobby = hobby;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public int getId() {&lt;br /&gt;        return this.id;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setId(int id) {&lt;br /&gt;        this.id = id;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;The servlets use a utility program for processing escapes which resides&lt;br /&gt;in the source Packages.util.  This program uses commons-lang...jar &lt;br /&gt;which has to be put on the classpath somewhere.&lt;br /&gt;util.Escape.java&lt;br /&gt;----------------&lt;br /&gt;package util;&lt;br /&gt;&lt;br /&gt;import org.apache.commons.lang.*;&lt;br /&gt;&lt;br /&gt;public class Escape {&lt;br /&gt;  public static String html(String input) {&lt;br /&gt;    return StringEscapeUtils.escapeHtml(input);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public static String javaScript(String input) {&lt;br /&gt;    return StringEscapeUtils.escapeJavaScript(input);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public static String lineBreakToBr(String input) {&lt;br /&gt;    return input.replaceAll("\\n", "&amp;ltbr /&amp;gt");&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public static String paragraphBreakToBrs(String input) {&lt;br /&gt;    return input.replaceAll("\\n\\s*\\n", "&amp;ltbr /&amp;gt&amp;ltbr /&amp;gt");&lt;br /&gt;  }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-8611851519831886352?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/8611851519831886352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/8611851519831886352'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/02/simple-crud-with-jquery-4.html' title='Simple CRUD with JQuery-4'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-6272040385336371104</id><published>2011-02-28T23:39:00.000-08:00</published><updated>2011-02-28T23:40:36.869-08:00</updated><title type='text'>Simple CRUD with JQuery-3</title><content type='html'>--------------&lt;br /&gt;Each AJAX call triggers a corresponding URL of a servlet that are&lt;br /&gt;defined in the web.xml&lt;br /&gt;&lt;br /&gt;web.xml&lt;br /&gt;-------&lt;br /&gt;&amp;lt?xml version="1.0" encoding="UTF-8"?&amp;gt&lt;br /&gt;&amp;ltweb-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&amp;gt&lt;br /&gt;    &amp;ltdisplay-name&amp;gtSimple CRUD of ARS&amp;lt/display-name&amp;gt&lt;br /&gt;    &amp;ltwelcome-file-list&amp;gt&lt;br /&gt;        &amp;ltwelcome-file&amp;gtindex.jsp&amp;lt/welcome-file&amp;gt&lt;br /&gt;    &amp;lt/welcome-file-list&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtnew&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.createServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtreadnext&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.readNextServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtreadprev&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.readPrevServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtsave&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.updateServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtdelete&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.deleteServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtlist&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.listServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtselectlist&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.selectListServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtnew&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/new&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtreadnext&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/readnext&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtreadprev&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/readprev&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtsave&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/save&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtdelete&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/delete&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtlist&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/list&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtselectlist&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/selectlist&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;&amp;lt/web-app&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Each servlet is defined in the source Packages.servletPackage&lt;br /&gt;createServlet.java&lt;br /&gt;------------------&lt;br /&gt;/*&lt;br /&gt; * To change this template, choose Tools | Templates&lt;br /&gt; * and open the template in the editor.&lt;br /&gt; */&lt;br /&gt;package servletPackage;&lt;br /&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.Enumeration;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;import mainPackage.*;&lt;br /&gt;import daoPackage.*;&lt;br /&gt;&lt;br /&gt;import util.Escape;&lt;br /&gt;&lt;br /&gt;public class createServlet extends HttpServlet {&lt;br /&gt;&lt;br /&gt;    public void init()&lt;br /&gt;            throws ServletException {&lt;br /&gt;        System.out.println("ARSmsg: createServlet began to work");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;  protected void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;    throws ServletException, IOException {&lt;br /&gt;        //response.setContentType("text/json;charset=UTF-8");&lt;br /&gt;        response.setContentType("text/html;charset=UTF-8");&lt;br /&gt;        PrintWriter out = response.getWriter();&lt;br /&gt;        PersonDAOVectorImpl personDAO;&lt;br /&gt;        HttpSession session = request.getSession();&lt;br /&gt;        personDAO = (PersonDAOVectorImpl) session.getAttribute("personDAOsess");&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            String id = String.valueOf(personDAO.getPersonNextId());&lt;br /&gt;            String name = "Please enter data here";&lt;br /&gt;            String last = "Regards. ";&lt;br /&gt;            String hobby = "Ali R+";&lt;br /&gt;            System.out.println("ProcessData began");&lt;br /&gt;             name = name+ " new,";&lt;br /&gt;&lt;br /&gt;            id = Escape.html(id);&lt;br /&gt;            name = Escape.html(name);&lt;br /&gt;            last = Escape.html(last);&lt;br /&gt;            hobby = Escape.html(hobby);&lt;br /&gt;&lt;br /&gt;            // for JSON output&lt;br /&gt;            id = Escape.javaScript(id);&lt;br /&gt;            name = Escape.javaScript(name);&lt;br /&gt;            last = Escape.javaScript(last);&lt;br /&gt;            hobby = Escape.javaScript(hobby);&lt;br /&gt;&lt;br /&gt;            out.println(&lt;br /&gt;                    "{"&lt;br /&gt;                    + " \"id\":" + '"' + id + '"' + ","&lt;br /&gt;                    + " \"name\":" + '"' + name + '"' + ","&lt;br /&gt;                    + " \"last\":" + '"' + last + '"' + ","&lt;br /&gt;                    + " \"hobby\":" + '"' + hobby + '"'&lt;br /&gt;                    + "}");&lt;br /&gt;           System.out.println("ProcessData out id="+name);&lt;br /&gt;        } finally {&lt;br /&gt;            out.close();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;deleteServlet.java&lt;br /&gt;------------------&lt;br /&gt;/*&lt;br /&gt; * To change this template, choose Tools | Templates&lt;br /&gt; * and open the template in the editor.&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;package servletPackage;&lt;br /&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.Enumeration;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;import mainPackage.*;&lt;br /&gt;import daoPackage.*;&lt;br /&gt;&lt;br /&gt;import util.Escape;&lt;br /&gt;&lt;br /&gt;public class deleteServlet&lt;br /&gt;        extends HttpServlet&lt;br /&gt;{&lt;br /&gt;    /**&lt;br /&gt;     *  Called once at startup&lt;br /&gt;     */&lt;br /&gt;    public void init()&lt;br /&gt;        throws ServletException&lt;br /&gt;    {&lt;br /&gt;        System.out.println("ARSmsg: deleteServlet began to work");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;    throws ServletException, IOException {&lt;br /&gt;        response.setContentType("text/html;charset=UTF-8");&lt;br /&gt;        PrintWriter out = response.getWriter();&lt;br /&gt;&lt;br /&gt;        PersonDAOVectorImpl personDAO;&lt;br /&gt;        Person person= new Person();&lt;br /&gt;        HttpSession session = request.getSession();&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            personDAO = (PersonDAOVectorImpl) session.getAttribute("personDAOsess");&lt;br /&gt;            personDAO.deleteRec(personDAO.getPersonCurrentId());&lt;br /&gt;            person = personDAO.readRec(personDAO.getPersonCurrentId());&lt;br /&gt;&lt;br /&gt;            String id = String.valueOf(person.getId());&lt;br /&gt;            String name = person.getName();&lt;br /&gt;            String last = person.getLast();&lt;br /&gt;            String hobby = person.getHobby();&lt;br /&gt;&lt;br /&gt;            id = Escape.html(id);&lt;br /&gt;            name = Escape.html(name);&lt;br /&gt;            last = Escape.html(last);&lt;br /&gt;            hobby = Escape.html(hobby);&lt;br /&gt;&lt;br /&gt;            // for JSON output&lt;br /&gt;            id = Escape.javaScript(id);&lt;br /&gt;            name = Escape.javaScript(name);&lt;br /&gt;            last = Escape.javaScript(last);&lt;br /&gt;            hobby = Escape.javaScript(hobby);&lt;br /&gt;&lt;br /&gt;            out.println(&lt;br /&gt;                    "{"&lt;br /&gt;                    + " \"id\":" + '"' + id + '"' + ","&lt;br /&gt;                    + " \"name\":" + '"' + name + '"' + ","&lt;br /&gt;                    + " \"last\":" + '"' + last + '"' + ","&lt;br /&gt;                    + " \"hobby\":" + '"' + hobby + '"'&lt;br /&gt;                    + "}");&lt;br /&gt;           System.out.println("ProcessData out id="+name);&lt;br /&gt;        } finally {&lt;br /&gt;            out.close();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;listServlet.java&lt;br /&gt;----------------&lt;br /&gt;/*&lt;br /&gt; * To change this template, choose Tools | Templates&lt;br /&gt; * and open the template in the editor.&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;package servletPackage;&lt;br /&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.Enumeration;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;&lt;br /&gt;import util.Escape;&lt;br /&gt;&lt;br /&gt;public class listServlet&lt;br /&gt;        extends HttpServlet&lt;br /&gt;{&lt;br /&gt;    /**&lt;br /&gt;     *  Called once at startup&lt;br /&gt;     */&lt;br /&gt;    public void init()&lt;br /&gt;        throws ServletException&lt;br /&gt;    {&lt;br /&gt;        System.out.println("ARSmsg: listServlet began to work");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;protected void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;    throws ServletException, IOException {&lt;br /&gt;        //response.setContentType("text/json;charset=UTF-8");&lt;br /&gt;        response.setContentType("text/html;charset=UTF-8");&lt;br /&gt;        //response.setContentType("application/json;charset=UTF-8");&lt;br /&gt;        PrintWriter out = response.getWriter();&lt;br /&gt;        try {&lt;br /&gt;            Enumeration e =request.getParameterNames();&lt;br /&gt;            while (e.hasMoreElements()) {&lt;br /&gt;                String key = (String) e.nextElement();&lt;br /&gt;                System.out.println(key);&lt;br /&gt;            }&lt;br /&gt;            StringBuffer s =request.getRequestURL();&lt;br /&gt;            System.out.println(s.toString());&lt;br /&gt;&lt;br /&gt;            String id = request.getParameter("id");&lt;br /&gt;            String name = request.getParameter("name");&lt;br /&gt;            String last = request.getParameter("last");&lt;br /&gt;            String hobby = request.getParameter("hobby");&lt;br /&gt;            System.out.println("ProcessData began");&lt;br /&gt;             name = name+ " list,";&lt;br /&gt;&lt;br /&gt;             id = Escape.html(id);&lt;br /&gt;            name = Escape.html(name);&lt;br /&gt;            last = Escape.html(last);&lt;br /&gt;            hobby = Escape.html(hobby);&lt;br /&gt;&lt;br /&gt;            // for JSON output&lt;br /&gt;            id = Escape.javaScript(id);&lt;br /&gt;            name = Escape.javaScript(name);&lt;br /&gt;            last = Escape.javaScript(last);&lt;br /&gt;            hobby = Escape.javaScript(hobby);&lt;br /&gt;&lt;br /&gt;            out.println(&lt;br /&gt;                    "{"&lt;br /&gt;                    + " \"id\":" + '"' + id + '"' + ","&lt;br /&gt;                    + " \"name\":" + '"' + name + '"' + ","&lt;br /&gt;                    + " \"last\":" + '"' + last + '"' + ","&lt;br /&gt;                    + " \"hobby\":" + '"' + hobby + '"'&lt;br /&gt;                    + "}");&lt;br /&gt;           System.out.println("ProcessData out id="+name);&lt;br /&gt;        } finally {&lt;br /&gt;            out.close();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;readNextServlet.java&lt;br /&gt;--------------------&lt;br /&gt;package servletPackage;&lt;br /&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.Enumeration;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;import mainPackage.*;&lt;br /&gt;import daoPackage.*;&lt;br /&gt;&lt;br /&gt;import util.Escape;&lt;br /&gt;&lt;br /&gt;public class readNextServlet extends HttpServlet {&lt;br /&gt;&lt;br /&gt;    public void init()&lt;br /&gt;        throws ServletException&lt;br /&gt;    {&lt;br /&gt;        System.out.println("ARSmsg: readNextServlet began to work");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;    throws ServletException, IOException {&lt;br /&gt;        response.setContentType("text/html;charset=UTF-8");&lt;br /&gt;        PrintWriter out = response.getWriter();&lt;br /&gt;&lt;br /&gt;        PersonDAOVectorImpl personDAO;&lt;br /&gt;        Person person= new Person();&lt;br /&gt;        HttpSession session = request.getSession();&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            personDAO = (PersonDAOVectorImpl) session.getAttribute("personDAOsess");&lt;br /&gt;            person = personDAO.readNextRec();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            String id = String.valueOf(person.getId());&lt;br /&gt;            String name = person.getName();&lt;br /&gt;            String last = person.getLast();&lt;br /&gt;            String hobby = person.getHobby();&lt;br /&gt;            System.out.println("next id="+personDAO.getPersonNextId());&lt;br /&gt;&lt;br /&gt;             id = Escape.html(id);&lt;br /&gt;            name = Escape.html(name);&lt;br /&gt;            last = Escape.html(last);&lt;br /&gt;            hobby = Escape.html(hobby);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            // for JSON output&lt;br /&gt;            id = Escape.javaScript(id);&lt;br /&gt;            name = Escape.javaScript(name);&lt;br /&gt;            last = Escape.javaScript(last);&lt;br /&gt;            hobby = Escape.javaScript(hobby);&lt;br /&gt;&lt;br /&gt;            out.println(&lt;br /&gt;                    "{"&lt;br /&gt;                    + " \"id\":" + '"' + id + '"' + ","&lt;br /&gt;                    + " \"name\":" + '"' + name + '"' + ","&lt;br /&gt;                    + " \"last\":" + '"' + last + '"' + ","&lt;br /&gt;                    + " \"hobby\":" + '"' + hobby + '"'&lt;br /&gt;                    + "}");&lt;br /&gt;           System.out.println("ProcessData out id="+name);&lt;br /&gt;        } finally {&lt;br /&gt;            out.close();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;readPrevServlet.java&lt;br /&gt;--------------------&lt;br /&gt;package servletPackage;&lt;br /&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.Enumeration;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;import mainPackage.*;&lt;br /&gt;import daoPackage.*;&lt;br /&gt;&lt;br /&gt;import util.Escape;&lt;br /&gt;&lt;br /&gt;public class readPrevServlet extends HttpServlet {&lt;br /&gt;&lt;br /&gt;    public void init()&lt;br /&gt;        throws ServletException&lt;br /&gt;    {&lt;br /&gt;        System.out.println("ARSmsg: readPrevServlet began to work");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;    throws ServletException, IOException {&lt;br /&gt;        response.setContentType("text/html;charset=UTF-8");&lt;br /&gt;        PrintWriter out = response.getWriter();&lt;br /&gt;&lt;br /&gt;        PersonDAOVectorImpl personDAO;&lt;br /&gt;        Person person= new Person();&lt;br /&gt;        HttpSession session = request.getSession();&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            personDAO = (PersonDAOVectorImpl) session.getAttribute("personDAOsess");&lt;br /&gt;            person = personDAO.readPrevRec();&lt;br /&gt;&lt;br /&gt;        if (person != null){&lt;br /&gt;            session.removeAttribute("personDAOsess");&lt;br /&gt;            session.setAttribute("personDAOsess", personDAO);&lt;br /&gt;            String id=String.valueOf(person.getId());&lt;br /&gt;            String name =person.getName();&lt;br /&gt;            String last =person.getLast();&lt;br /&gt;            String hobby=person.getHobby();&lt;br /&gt;&lt;br /&gt;            id = Escape.html(id);&lt;br /&gt;            name = Escape.html(name);&lt;br /&gt;            last = Escape.html(last);&lt;br /&gt;            hobby = Escape.html(hobby);&lt;br /&gt;&lt;br /&gt;            // for JSON output&lt;br /&gt;            id = Escape.javaScript(id);&lt;br /&gt;            name = Escape.javaScript(name);&lt;br /&gt;            last = Escape.javaScript(last);&lt;br /&gt;            hobby = Escape.javaScript(hobby);&lt;br /&gt;&lt;br /&gt;            out.println(&lt;br /&gt;                    "{"&lt;br /&gt;                    + " \"id\":" + '"' + id + '"' + ","&lt;br /&gt;                    + " \"name\":" + '"' + name + '"' + ","&lt;br /&gt;                    + " \"last\":" + '"' + last + '"' + ","&lt;br /&gt;                    + " \"hobby\":" + '"' + hobby + '"'&lt;br /&gt;                    + "}");&lt;br /&gt;            }&lt;br /&gt;        } finally {&lt;br /&gt;            out.close();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;updateServlet.java&lt;br /&gt;------------------&lt;br /&gt;/*&lt;br /&gt; * To change this template, choose Tools | Templates&lt;br /&gt; * and open the template in the editor.&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;package servletPackage;&lt;br /&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.Enumeration;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;import mainPackage.*;&lt;br /&gt;import daoPackage.*;&lt;br /&gt;&lt;br /&gt;import util.Escape;&lt;br /&gt;&lt;br /&gt;public class updateServlet extends HttpServlet {&lt;br /&gt;&lt;br /&gt;    public void init()&lt;br /&gt;        throws ServletException&lt;br /&gt;    {&lt;br /&gt;        System.out.println("Init() worked");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;    throws ServletException, IOException {&lt;br /&gt;        response.setContentType("text/html;charset=UTF-8");&lt;br /&gt;        PrintWriter out = response.getWriter();&lt;br /&gt;&lt;br /&gt;        PersonDAOVectorImpl personDAO;&lt;br /&gt;        Person person= new Person();&lt;br /&gt;        HttpSession session = request.getSession();&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            String id = request.getParameter("id");&lt;br /&gt;            String name = request.getParameter("name");&lt;br /&gt;            String last = request.getParameter("last");&lt;br /&gt;            String hobby = request.getParameter("hobby");&lt;br /&gt;            personDAO = (PersonDAOVectorImpl) session.getAttribute("personDAOsess");&lt;br /&gt;            personDAO.updateRec(Integer.valueOf(id), name, last, hobby);&lt;br /&gt;&lt;br /&gt;            if (person != null){&lt;br /&gt;            session.removeAttribute("personDAOsess");&lt;br /&gt;            session.setAttribute("personDAOsess", personDAO);&lt;br /&gt;&lt;br /&gt;             id = Escape.html(id);&lt;br /&gt;            name = Escape.html(name);&lt;br /&gt;            last = Escape.html(last);&lt;br /&gt;            hobby = Escape.html(hobby);&lt;br /&gt;&lt;br /&gt;            // for JSON output&lt;br /&gt;            id = Escape.javaScript(id);&lt;br /&gt;            name = Escape.javaScript(name);&lt;br /&gt;            last = Escape.javaScript(last);&lt;br /&gt;            hobby = Escape.javaScript(hobby);&lt;br /&gt;&lt;br /&gt;            out.println(&lt;br /&gt;                    "{"&lt;br /&gt;                    + " \"id\":" + '"' + id + '"' + ","&lt;br /&gt;                    + " \"name\":" + '"' + name + '"' + ","&lt;br /&gt;                    + " \"last\":" + '"' + last + '"' + ","&lt;br /&gt;                    + " \"hobby\":" + '"' + hobby + '"'&lt;br /&gt;                    + "}");&lt;br /&gt;           System.out.println("ProcessData out id="+name);&lt;br /&gt;            }&lt;br /&gt;        } finally {&lt;br /&gt;            out.close();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-6272040385336371104?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/6272040385336371104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/6272040385336371104'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/02/simple-crud-with-jquery-3.html' title='Simple CRUD with JQuery-3'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-7206944347873103330</id><published>2011-02-28T23:38:00.000-08:00</published><updated>2011-02-28T23:39:07.176-08:00</updated><title type='text'>Simple CRUD with JQuery-2</title><content type='html'>The main screen is index.jsp .  This screen has the new, save, delete, &lt;br /&gt;next, prev and list buttons.  The list button is not functional at &lt;br /&gt;this moment.  I will provide that in the near future.&lt;br /&gt;&lt;br /&gt;index.jsp&lt;br /&gt;----------&lt;br /&gt;&lt;br /&gt;&amp;lt%--&lt;br /&gt;    Document   : index&lt;br /&gt;    Created on : 24.Sub.2011, 18:23:21&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lt%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt&lt;br /&gt;&amp;lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt&lt;br /&gt;&amp;lt%@ page import="mainPackage.*" %&amp;gt&lt;br /&gt;&amp;lt%@ page import="daoPackage.*" %&amp;gt&lt;br /&gt;&amp;lthtml&amp;gt&lt;br /&gt;    &amp;lthead&amp;gt&lt;br /&gt;        &amp;ltmeta http-equiv="Content-Type" content="text/html; charset=UTF-8"&amp;gt&lt;br /&gt;    &amp;lttitle&amp;gtARS's Simple JQ CRUD&amp;lt/title&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="js/jquery.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="js/jquery.form.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="js/JQmultiAJAXCalls.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;lt%&lt;br /&gt;    System.out.println("index.jsp JSP script began here.");&lt;br /&gt;                PersonDAOVectorImpl personDAO;&lt;br /&gt;&lt;br /&gt;                if (session.getAttribute("personDAOsess") == null){&lt;br /&gt;                    System.out.println("index.jsp personDAOsess == null ");&lt;br /&gt;                    personDAO = new PersonDAOVectorImpl();&lt;br /&gt;                    session.setAttribute("personDAOsess", personDAO);&lt;br /&gt;                }&lt;br /&gt;                else {&lt;br /&gt;                    System.out.println("index.jsp personDAOsess!!!!=null");&lt;br /&gt;                    personDAO = (PersonDAOVectorImpl) session.getAttribute("personDAOsess");&lt;br /&gt;                }&lt;br /&gt;    %&amp;gt&lt;br /&gt;    &amp;ltSCRIPT&amp;gt&lt;br /&gt;        function InitScr() {&lt;br /&gt;         alert ("Merhaba from Ali R+ with best wishes! ");&lt;br /&gt;         $("input#Prev").click()&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    &amp;lt/SCRIPT&amp;gt&lt;br /&gt;&amp;lt/head&amp;gt&lt;br /&gt;&amp;ltbody style="background-color:yellow" onLoad="InitScr()"&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lth1&amp;gtThe Simplest JQuery CRUD Application&amp;lt/h1&amp;gt&lt;br /&gt;&lt;br /&gt;    &amp;ltbr /&amp;gt&lt;br /&gt;&lt;br /&gt;    &amp;ltform name="theDetail" action="" method="get"&amp;gt&lt;br /&gt;        &amp;ltinput type="hidden" id="id" name="id"/&amp;gt&amp;ltbr /&amp;gt&lt;br /&gt;        First name: &amp;ltinput type="text" id ="name" name="name"/&amp;gt&amp;ltbr /&amp;gt&lt;br /&gt;        Last name : &amp;ltinput type="text" id="last" name="last"/&amp;gt&amp;ltbr /&amp;gt&lt;br /&gt;        Hobby     : &amp;ltinput type="text" id="hobby" name="hobby"/&amp;gt&amp;ltbr /&amp;gt&lt;br /&gt;        &amp;ltbr /&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="New" VALUE="New"&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="Save" VALUE="Save"&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="Delete" VALUE="Delete"&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="Next" VALUE="Next"&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="Prev" VALUE="Prev"&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="List" VALUE="List"&amp;gt&lt;br /&gt;    &amp;lt/form&amp;gt&lt;br /&gt;&amp;lt/body&amp;gt&lt;br /&gt;&amp;lt/html&amp;gt&lt;br /&gt;&lt;br /&gt;Each button is linked to an event handler in the java script file&lt;br /&gt;JQmultiAJAXCalls.js &lt;br /&gt;-------------------&lt;br /&gt;$(document).ready(function() {&lt;br /&gt;    // Handler for .ready() called.&lt;br /&gt;    $(function() {&lt;br /&gt;        $("input#New").click(function() {&lt;br /&gt;            var id = $("input#id").val();&lt;br /&gt;            var name = $("input#name").val();&lt;br /&gt;            var last = $("input#last").val();&lt;br /&gt;            var hobby = $("input#hobby").val();&lt;br /&gt;            //alert('New is clicked dataString='+name);&lt;br /&gt;            var aoData = [];&lt;br /&gt;            aoData.push( { "name": "id", "value": id },&lt;br /&gt;                        { "name": "name", "value": name },&lt;br /&gt;                        {"name": "last", "value": last },&lt;br /&gt;                        {"name": "hobby", "value": hobby }&lt;br /&gt;                        );&lt;br /&gt;            $.ajax({&lt;br /&gt;                type:"POST",&lt;br /&gt;                url: "./new",&lt;br /&gt;                contentType: "application/x-www-form-urlencoded",&lt;br /&gt;                dataType: "JSON",&lt;br /&gt;                data: aoData,&lt;br /&gt;                error : function (XMLHttpRequest, textStatus, errorThrown) {&lt;br /&gt;                    alert(XMLHttpRequest);&lt;br /&gt;                    alert(textStatus);&lt;br /&gt;                    alert(errorThrown)},&lt;br /&gt;&lt;br /&gt;                success: function(data) {&lt;br /&gt;                     var jsonData = $.parseJSON(data);&lt;br /&gt;                    $("input#id").val(jsonData.id)&lt;br /&gt;                    $("input#name").val(jsonData.name)&lt;br /&gt;                    $("input#last").val(jsonData.last)&lt;br /&gt;                    $("input#hobby").val(jsonData.hobby)&lt;br /&gt;                }&lt;br /&gt;            })&lt;br /&gt;            return false;&lt;br /&gt;        })&lt;br /&gt;    })&lt;br /&gt;&lt;br /&gt;    $(function() {&lt;br /&gt;        $("input#Save").click(function() {&lt;br /&gt;            var id = $("input#id").val();&lt;br /&gt;            var name = $("input#name").val();&lt;br /&gt;            var last = $("input#last").val();&lt;br /&gt;            var hobby = $("input#hobby").val();&lt;br /&gt;            //alert('Save is clicked name='+name);&lt;br /&gt;            var aoData = [];&lt;br /&gt;            aoData.push( {"name": "id", "value": id },&lt;br /&gt;                        {"name": "name", "value": name },&lt;br /&gt;                        {"name": "last", "value": last },&lt;br /&gt;                        {"name": "hobby", "value": hobby }&lt;br /&gt;                        );&lt;br /&gt;            $.ajax({&lt;br /&gt;                type:"POST",&lt;br /&gt;                url: "./save",&lt;br /&gt;                contentType: "application/x-www-form-urlencoded",&lt;br /&gt;                dataType: "JSON",&lt;br /&gt;                data: aoData,&lt;br /&gt;                error : function (XMLHttpRequest, textStatus, errorThrown) {&lt;br /&gt;                    alert(XMLHttpRequest);&lt;br /&gt;                    alert(textStatus);&lt;br /&gt;                    alert(errorThrown)&lt;br /&gt;                },&lt;br /&gt;                success: function(data) {&lt;br /&gt;                     var jsonData = $.parseJSON(data);&lt;br /&gt;                     $("input#id").val(jsonData.id)&lt;br /&gt;                    $("input#name").val(jsonData.name)&lt;br /&gt;                    $("input#last").val(jsonData.last)&lt;br /&gt;                    $("input#hobby").val(jsonData.hobby)&lt;br /&gt;                }&lt;br /&gt;            })&lt;br /&gt;            return false;&lt;br /&gt;        })&lt;br /&gt;    })&lt;br /&gt;&lt;br /&gt;    $(function() {&lt;br /&gt;        $("input#Delete").click(function() {&lt;br /&gt;            var id = $("input#id").val();&lt;br /&gt;            var name = $("input#name").val();&lt;br /&gt;            var last = $("input#last").val();&lt;br /&gt;            var hobby = $("input#hobby").val();&lt;br /&gt;            //alert('Delete is clicked name='+name);&lt;br /&gt;            var aoData = [];&lt;br /&gt;            aoData.push( {"name": "id", "value": id },&lt;br /&gt;                        {"name": "name", "value": name },&lt;br /&gt;                        {"name": "last", "value": last },&lt;br /&gt;                        {"name": "hobby", "value": hobby }&lt;br /&gt;                        );&lt;br /&gt;            $.ajax({&lt;br /&gt;                type:"POST",&lt;br /&gt;                url: "./delete",&lt;br /&gt;                contentType: "application/x-www-form-urlencoded",&lt;br /&gt;                dataType: "JSON",&lt;br /&gt;                data: aoData,&lt;br /&gt;                error : function (XMLHttpRequest, textStatus, errorThrown) {&lt;br /&gt;                    alert(XMLHttpRequest);&lt;br /&gt;                    alert(textStatus);&lt;br /&gt;                    alert(errorThrown)&lt;br /&gt;                },&lt;br /&gt;                success: function(data) {&lt;br /&gt;                     var jsonData = $.parseJSON(data);&lt;br /&gt;                    $("input#id").val(jsonData.id)&lt;br /&gt;                    $("input#name").val(jsonData.name)&lt;br /&gt;                    $("input#last").val(jsonData.last)&lt;br /&gt;                    $("input#hobby").val(jsonData.hobby)&lt;br /&gt;                }&lt;br /&gt;            })&lt;br /&gt;            return false;&lt;br /&gt;        })&lt;br /&gt;    })&lt;br /&gt;    $(function() {&lt;br /&gt;        $("input#Next").click(function() {&lt;br /&gt;            var id = $("input#id").val();&lt;br /&gt;            var name = $("input#name").val();&lt;br /&gt;            var last = $("input#last").val();&lt;br /&gt;            var hobby = $("input#hobby").val();&lt;br /&gt;            //alert('Next is clicked name='+name);&lt;br /&gt;            var aoData = [];&lt;br /&gt;            aoData.push( {"name": "id", "value": id },&lt;br /&gt;                        { "name": "name", "value": name },&lt;br /&gt;                        {"name": "last", "value": last },&lt;br /&gt;                        {"name": "hobby", "value": hobby }&lt;br /&gt;                        );&lt;br /&gt;            $.ajax({&lt;br /&gt;                type:"POST",&lt;br /&gt;                url: "./readnext",&lt;br /&gt;                contentType: "application/x-www-form-urlencoded",&lt;br /&gt;                dataType: "JSON",&lt;br /&gt;                data: aoData,&lt;br /&gt;                error : function (XMLHttpRequest, textStatus, errorThrown) {&lt;br /&gt;                    alert(XMLHttpRequest);&lt;br /&gt;                    alert(textStatus);&lt;br /&gt;                    alert(errorThrown)&lt;br /&gt;                },&lt;br /&gt;                success: function(data) {&lt;br /&gt;                     var jsonData = $.parseJSON(data);&lt;br /&gt;                    $("input#id").val(jsonData.id)&lt;br /&gt;                    $("input#name").val(jsonData.name)&lt;br /&gt;                    $("input#last").val(jsonData.last)&lt;br /&gt;                    $("input#hobby").val(jsonData.hobby)&lt;br /&gt;                }&lt;br /&gt;            })&lt;br /&gt;            return false;&lt;br /&gt;        })&lt;br /&gt;    })&lt;br /&gt;&lt;br /&gt;    $(function() {&lt;br /&gt;        $("input#Prev").click(function() {&lt;br /&gt;            var id = $("input#id").val();&lt;br /&gt;            var name = $("input#name").val();&lt;br /&gt;            var last = $("input#last").val();&lt;br /&gt;            var hobby = $("input#hobby").val();&lt;br /&gt;            //alert('Prev is clicked name='+name);&lt;br /&gt;            var aoData = [];&lt;br /&gt;            aoData.push( {"name": "id", "value": id },&lt;br /&gt;                        {"name": "name", "value": name },&lt;br /&gt;                        {"name": "last", "value": last },&lt;br /&gt;                        {"name": "hobby", "value": hobby }&lt;br /&gt;                        );&lt;br /&gt;            $.ajax({&lt;br /&gt;                type:"POST",&lt;br /&gt;                url: "./readprev",&lt;br /&gt;                contentType: "application/x-www-form-urlencoded",&lt;br /&gt;                dataType: "JSON",&lt;br /&gt;                data: aoData,&lt;br /&gt;                error : function (XMLHttpRequest, textStatus, errorThrown) {&lt;br /&gt;                    alert(XMLHttpRequest);&lt;br /&gt;                    alert(textStatus);&lt;br /&gt;                    alert(errorThrown)&lt;br /&gt;                },&lt;br /&gt;                success: function(data) {&lt;br /&gt;                     var jsonData = $.parseJSON(data);&lt;br /&gt;                     $("input#id").val(jsonData.id)&lt;br /&gt;                    $("input#name").val(jsonData.name)&lt;br /&gt;                    $("input#last").val(jsonData.last)&lt;br /&gt;                    $("input#hobby").val(jsonData.hobby)&lt;br /&gt;                }&lt;br /&gt;            })&lt;br /&gt;            return false;&lt;br /&gt;        })&lt;br /&gt;    })&lt;br /&gt;&lt;br /&gt;    $(function() {&lt;br /&gt;        $("input#List").click(function() {&lt;br /&gt;            var id = $("input#id").val();&lt;br /&gt;            var name = $("input#name").val();&lt;br /&gt;            var last = $("input#last").val();&lt;br /&gt;            var hobby = $("input#hobby").val();&lt;br /&gt;            //alert('List is clicked name='+name);&lt;br /&gt;            var aoData = [];&lt;br /&gt;            aoData.push( {"name": "id", "value": id },&lt;br /&gt;                        {"name": "name", "value": name },&lt;br /&gt;                        {"name": "last", "value": last },&lt;br /&gt;                        {"name": "hobby", "value": hobby }&lt;br /&gt;                        );&lt;br /&gt;            $.ajax({&lt;br /&gt;                type:"POST",&lt;br /&gt;                url: "./list",&lt;br /&gt;                contentType: "application/x-www-form-urlencoded",&lt;br /&gt;                dataType: "JSON",&lt;br /&gt;                data: aoData,&lt;br /&gt;                error : function (XMLHttpRequest, textStatus, errorThrown) {&lt;br /&gt;                    alert(XMLHttpRequest);&lt;br /&gt;                    alert(textStatus);&lt;br /&gt;                    alert(errorThrown)&lt;br /&gt;                },&lt;br /&gt;                success: function(data) {&lt;br /&gt;                     var jsonData = $.parseJSON(data);&lt;br /&gt;                     $("input#id").val(jsonData.id)&lt;br /&gt;                    $("input#name").val(jsonData.name)&lt;br /&gt;                    $("input#last").val(jsonData.last)&lt;br /&gt;                    $("input#hobby").val(jsonData.hobby)&lt;br /&gt;                }&lt;br /&gt;            })&lt;br /&gt;            return false;&lt;br /&gt;        })&lt;br /&gt;    })&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;});&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-7206944347873103330?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/7206944347873103330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/7206944347873103330'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/02/simple-crud-with-jquery-2.html' title='Simple CRUD with JQuery-2'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-6225035732132006762</id><published>2011-02-28T12:20:00.000-08:00</published><updated>2011-02-28T12:25:22.627-08:00</updated><title type='text'>Simple CRUD with JQuery</title><content type='html'>This tutorial will explain the construction of a simple CRUD&lt;br /&gt;with vector based DAO using JQuery.  This is the JQuery &lt;br /&gt;version of my 'Simple CRUD Tutorial' at&lt;br /&gt;http://tekne-techne.blogspot.com/2011/01/simple-crud-tutorial-intro.html&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Ya4exHMF_7k/TWwD_NFhfNI/AAAAAAAAAZ0/6004fvKOyAE/s1600/SimpleCRUDwithJQ1.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 167px; height: 400px;" src="http://4.bp.blogspot.com/-Ya4exHMF_7k/TWwD_NFhfNI/AAAAAAAAAZ0/6004fvKOyAE/s400/SimpleCRUDwithJQ1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5578838422784670930" /&gt;&lt;/a&gt;&lt;br /&gt;The main screen is index.jsp&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-fRHW5Yn4Ud4/TWwEMJ5EDFI/AAAAAAAAAZ8/D4VT82mJ_C4/s1600/SimpleCRUDwithJQ2.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 154px;" src="http://3.bp.blogspot.com/-fRHW5Yn4Ud4/TWwEMJ5EDFI/AAAAAAAAAZ8/D4VT82mJ_C4/s400/SimpleCRUDwithJQ2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5578838645265402962" /&gt;&lt;/a&gt;&lt;br /&gt;This screen has the new, save, delete, next, prev and list buttons.  The list button is not functional at this moment.  I will provide that in the near future.&lt;br /&gt;&lt;br /&gt;Each button is linked to an event handler in the java script file JQmultiAJAXCalls.js &lt;br /&gt;&lt;br /&gt;Each AJAX call triggers a corresponding URL of a servlet that are defined in the web.xml&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Each servlet is defined in the source Packages.servletPackage&lt;br /&gt;&lt;br /&gt;The underlying mechanism to be used as database is the Data Access Object.  It is defined in the source Packages.daoPackage&lt;br /&gt;&lt;br /&gt;The daoPackage uses the Person.java definition as record definition and it is located in the source Packages.mainPackage&lt;br /&gt;&lt;br /&gt;The servlets use a utility program for processing escapes which resides in the source Packages.util.  This program uses commons-lang...jar which has to be put on the classpath somewhere.&lt;br /&gt;&lt;br /&gt;Once again, I will provide the list and select Row in an other tutorial.  I will provide the related source codes with the same explanation above at the required points.  The source code is complete and working...&lt;br /&gt;&lt;br /&gt;Kind regards.&lt;br /&gt;&lt;br /&gt;Ali R+&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-6225035732132006762?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/6225035732132006762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/6225035732132006762'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/02/simple-crud-with-jquery.html' title='Simple CRUD with JQuery'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Ya4exHMF_7k/TWwD_NFhfNI/AAAAAAAAAZ0/6004fvKOyAE/s72-c/SimpleCRUDwithJQ1.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-3265067723998112300</id><published>2011-02-27T10:08:00.001-08:00</published><updated>2011-02-27T10:11:10.430-08:00</updated><title type='text'>Multi Actions with JQuery - 2</title><content type='html'>This is a little bit more difficult than simple.&lt;br /&gt;This example shows &lt;br /&gt;1- how to define a servlet with web.xml and JAVA source lib&lt;br /&gt;2- how to call this servlet via AJAX&lt;br /&gt;3- how to pass values to the servlet via AJAX&lt;br /&gt;4- how to receive returned values from the called servlet via AJAX&lt;br /&gt;5- how to do all of these many times at the same JSP&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-eOUnwS_77bk/TWqTcPk9mgI/AAAAAAAAAZk/OcWqv0eCkIs/s1600/MultiActions%2Bwith%2BJQ1.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 163px; height: 400px;" src="http://2.bp.blogspot.com/-eOUnwS_77bk/TWqTcPk9mgI/AAAAAAAAAZk/OcWqv0eCkIs/s400/MultiActions%2Bwith%2BJQ1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5578433201878964738" /&gt;&lt;/a&gt;&lt;br /&gt;web.xml&lt;br /&gt;-------&lt;br /&gt;&amp;lt?xml version="1.0" encoding="UTF-8"?&amp;gt&lt;br /&gt;&amp;ltweb-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&amp;gt&lt;br /&gt;    &amp;ltdisplay-name&amp;gtSimple CRUD of ARS&amp;lt/display-name&amp;gt&lt;br /&gt;    &amp;ltwelcome-file-list&amp;gt&lt;br /&gt;        &amp;ltwelcome-file&amp;gtindex.jsp&amp;lt/welcome-file&amp;gt&lt;br /&gt;    &amp;lt/welcome-file-list&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtnew&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.createServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtreadnext&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.readNextServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtreadprev&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.readPrevServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtsave&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.updateServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtdelete&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.deleteServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtlist&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.listServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtselectlist&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;ltservlet-class&amp;gtservletPackage.selectListServlet&amp;lt/servlet-class&amp;gt&lt;br /&gt;    &amp;lt/servlet&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtnew&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/new&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtreadnext&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/readnext&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtreadprev&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/readprev&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtsave&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/save&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtdelete&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/delete&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtlist&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/list&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;    &amp;ltservlet-mapping&amp;gt&lt;br /&gt;        &amp;ltservlet-name&amp;gtselectlist&amp;lt/servlet-name&amp;gt&lt;br /&gt;        &amp;lturl-pattern&amp;gt/selectlist&amp;lt/url-pattern&amp;gt&lt;br /&gt;    &amp;lt/servlet-mapping&amp;gt&lt;br /&gt;&amp;lt/web-app&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;createServlet.java&lt;br /&gt;------------------&lt;br /&gt;/*&lt;br /&gt; * To change this template, choose Tools | Templates&lt;br /&gt; * and open the template in the editor.&lt;br /&gt; */&lt;br /&gt;package servletPackage;&lt;br /&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.Enumeration;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;&lt;br /&gt;import util.Escape;&lt;br /&gt;&lt;br /&gt;public class createServlet extends HttpServlet {&lt;br /&gt;&lt;br /&gt;    public void init()&lt;br /&gt;            throws ServletException {&lt;br /&gt;        System.out.println("ARSmsg: createServlet began to work");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;  protected void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;    throws ServletException, IOException {&lt;br /&gt;        //response.setContentType("text/json;charset=UTF-8");&lt;br /&gt;        response.setContentType("text/html;charset=UTF-8");&lt;br /&gt;        //response.setContentType("application/json;charset=UTF-8");&lt;br /&gt;        PrintWriter out = response.getWriter();&lt;br /&gt;        try {&lt;br /&gt;            Enumeration e =request.getParameterNames();&lt;br /&gt;            while (e.hasMoreElements()) {&lt;br /&gt;                String key = (String) e.nextElement();&lt;br /&gt;                System.out.println(key);&lt;br /&gt;            }&lt;br /&gt;            StringBuffer s =request.getRequestURL();&lt;br /&gt;            System.out.println(s.toString());&lt;br /&gt;            &lt;br /&gt;            String name = request.getParameter("name");&lt;br /&gt;            String last = request.getParameter("last");&lt;br /&gt;            String hobby = request.getParameter("hobby");&lt;br /&gt;            System.out.println("ProcessData began");&lt;br /&gt;             name = name+ " new,";&lt;br /&gt;&lt;br /&gt;            name = Escape.html(name);&lt;br /&gt;            last = Escape.html(last);&lt;br /&gt;            hobby = Escape.html(hobby);&lt;br /&gt;&lt;br /&gt;            // for JSON output&lt;br /&gt;            name = Escape.javaScript(name);&lt;br /&gt;            last = Escape.javaScript(last);&lt;br /&gt;            hobby = Escape.javaScript(hobby);&lt;br /&gt;&lt;br /&gt;            out.println(&lt;br /&gt;                    "{"&lt;br /&gt;                    + " \"name\":" + '"' + name + '"' + ","&lt;br /&gt;                    + " \"last\":" + '"' + last + '"' + ","&lt;br /&gt;                    + " \"hobby\":" + '"' + hobby + '"'&lt;br /&gt;                    + "}");&lt;br /&gt;           System.out.println("ProcessData out id="+name);&lt;br /&gt;        } finally {&lt;br /&gt;            out.close();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;updateServlet.java&lt;br /&gt;------------------&lt;br /&gt;/*&lt;br /&gt; * To change this template, choose Tools | Templates&lt;br /&gt; * and open the template in the editor.&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;package servletPackage;&lt;br /&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.Enumeration;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;&lt;br /&gt;import util.Escape;&lt;br /&gt;&lt;br /&gt;public class updateServlet extends HttpServlet {&lt;br /&gt;&lt;br /&gt;    public void init()&lt;br /&gt;        throws ServletException&lt;br /&gt;    {&lt;br /&gt;        System.out.println("Init() worked");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;    throws ServletException, IOException {&lt;br /&gt;        //response.setContentType("text/json;charset=UTF-8");&lt;br /&gt;        response.setContentType("text/html;charset=UTF-8");&lt;br /&gt;        //response.setContentType("application/json;charset=UTF-8");&lt;br /&gt;        PrintWriter out = response.getWriter();&lt;br /&gt;        try {&lt;br /&gt;            Enumeration e =request.getParameterNames();&lt;br /&gt;            while (e.hasMoreElements()) {&lt;br /&gt;                String key = (String) e.nextElement();&lt;br /&gt;                System.out.println(key);&lt;br /&gt;            }&lt;br /&gt;            StringBuffer s =request.getRequestURL();&lt;br /&gt;            System.out.println(s.toString());&lt;br /&gt;&lt;br /&gt;            String name = request.getParameter("name");&lt;br /&gt;            String last = request.getParameter("last");&lt;br /&gt;            String hobby = request.getParameter("hobby");&lt;br /&gt;            System.out.println("ProcessData began");&lt;br /&gt;             name = name+ " save,";&lt;br /&gt;&lt;br /&gt;            name = Escape.html(name);&lt;br /&gt;            last = Escape.html(last);&lt;br /&gt;            hobby = Escape.html(hobby);&lt;br /&gt;&lt;br /&gt;            // for JSON output&lt;br /&gt;            name = Escape.javaScript(name);&lt;br /&gt;            last = Escape.javaScript(last);&lt;br /&gt;            hobby = Escape.javaScript(hobby);&lt;br /&gt;&lt;br /&gt;            out.println(&lt;br /&gt;                    "{"&lt;br /&gt;                    + " \"name\":" + '"' + name + '"' + ","&lt;br /&gt;                    + " \"last\":" + '"' + last + '"' + ","&lt;br /&gt;                    + " \"hobby\":" + '"' + hobby + '"'&lt;br /&gt;                    + "}");&lt;br /&gt;           System.out.println("ProcessData out id="+name);&lt;br /&gt;        } finally {&lt;br /&gt;            out.close();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;deleteServlet.java&lt;br /&gt;listServlet.java&lt;br /&gt;readNextServlet.java&lt;br /&gt;readPrevServlet.java&lt;br /&gt;...&lt;br /&gt;these are similar for the time being.&lt;br /&gt;They will vary when I implement the CRUD using this substructure.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-xdGsbcKYbW4/TWqTkzZyKwI/AAAAAAAAAZs/Rnrqe9A6m0Y/s1600/MultiActions%2Bwith%2BJQ2.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 181px;" src="http://2.bp.blogspot.com/-xdGsbcKYbW4/TWqTkzZyKwI/AAAAAAAAAZs/Rnrqe9A6m0Y/s400/MultiActions%2Bwith%2BJQ2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5578433348934707970" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;JQMultiAJAXCalls.jsp&lt;br /&gt;--------------------&lt;br /&gt;&amp;lt%--&lt;br /&gt;    Document   : index&lt;br /&gt;    Created on : 24.Sub.2011, 18:23:21&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lt%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt&lt;br /&gt;&amp;lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lthtml&amp;gt&lt;br /&gt;    &amp;lthead&amp;gt&lt;br /&gt;        &amp;ltmeta http-equiv="Content-Type" content="text/html; charset=UTF-8"&amp;gt&lt;br /&gt;    &amp;lttitle&amp;gtARS's Simple JQ CRUD&amp;lt/title&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="js/jquery.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="js/jquery.form.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="js/JQmultiAJAXCalls.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;lt%&lt;br /&gt;   System.out.println("index.jsp JSP script began here.");&lt;br /&gt;%&amp;gt&lt;br /&gt;    &amp;ltSCRIPT&amp;gt&lt;br /&gt;        function InitScr() {&lt;br /&gt;         alert ("Merhaba from Ali R+ with best wishes! ");&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    &amp;lt/SCRIPT&amp;gt&lt;br /&gt;&amp;lt/head&amp;gt&lt;br /&gt;&amp;ltbody style="background-color:yellow" onLoad="InitScr()"&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lth1&amp;gtThe Simplest JQuery CRUD Application&amp;lt/h1&amp;gt&lt;br /&gt;&lt;br /&gt;    &amp;ltbr /&amp;gt&lt;br /&gt;&lt;br /&gt;    &amp;ltform name="theDetail" action="" method="get"&amp;gt&lt;br /&gt;        &amp;ltinput type="hidden" name="id"/&amp;gt&amp;ltbr /&amp;gt&lt;br /&gt;        First name: &amp;ltinput type="text" id ="name" name="name"/&amp;gt&amp;ltbr /&amp;gt&lt;br /&gt;        Last name : &amp;ltinput type="text" id="last" name="last"/&amp;gt&amp;ltbr /&amp;gt&lt;br /&gt;        Hobby     : &amp;ltinput type="text" id="hobby" name="hobby"/&amp;gt&amp;ltbr /&amp;gt&lt;br /&gt;        &amp;ltbr /&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="New" VALUE="New"&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="Save" VALUE="Save"&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="Delete" VALUE="Delete"&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="Next" VALUE="Next"&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="Prev" VALUE="Prev"&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="List" VALUE="List"&amp;gt&lt;br /&gt;    &amp;lt/form&amp;gt&lt;br /&gt;&amp;lt/body&amp;gt&lt;br /&gt;&amp;lt/html&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;JQMultiAJAXCalls.js&lt;br /&gt;-------------------&lt;br /&gt;$(document).ready(function() {&lt;br /&gt;    // Handler for .ready() called.&lt;br /&gt;    $(function() {&lt;br /&gt;        $("input#New").click(function() {&lt;br /&gt;            var name = $("input#name").val();&lt;br /&gt;            var last = $("input#last").val();&lt;br /&gt;            var hobby = $("input#hobby").val();&lt;br /&gt;            alert('New is clicked dataString='+name);&lt;br /&gt;            var aoData = [];&lt;br /&gt;            aoData.push( { "name": "name", "value": name },&lt;br /&gt;                        {"name": "last", "value": last },&lt;br /&gt;                        {"name": "hobby", "value": hobby }&lt;br /&gt;                        );&lt;br /&gt;            $.ajax({&lt;br /&gt;                type:"POST",&lt;br /&gt;                url: "./new",&lt;br /&gt;                contentType: "application/x-www-form-urlencoded",&lt;br /&gt;                dataType: "JSON",&lt;br /&gt;                data: aoData,&lt;br /&gt;                error : function (XMLHttpRequest, textStatus, errorThrown) {&lt;br /&gt;                    alert(XMLHttpRequest);&lt;br /&gt;                    alert(textStatus);&lt;br /&gt;                    alert(errorThrown)},&lt;br /&gt;&lt;br /&gt;                success: function(data) {&lt;br /&gt;                     var jsonData = $.parseJSON(data);&lt;br /&gt;                    $("input#name").val(jsonData.name)&lt;br /&gt;                    $("input#last").val(jsonData.last)&lt;br /&gt;                    $("input#hobby").val(jsonData.hobby)&lt;br /&gt;                }&lt;br /&gt;            })&lt;br /&gt;            return false;&lt;br /&gt;        })&lt;br /&gt;    })&lt;br /&gt;&lt;br /&gt;    $(function() {&lt;br /&gt;        $("input#Save").click(function() {&lt;br /&gt;            var name = $("input#name").val();&lt;br /&gt;            var last = $("input#last").val();&lt;br /&gt;            var hobby = $("input#hobby").val();&lt;br /&gt;            alert('Save is clicked name='+name);&lt;br /&gt;            var aoData = [];&lt;br /&gt;            aoData.push( { "name": "name", "value": name },&lt;br /&gt;                        {"name": "last", "value": last },&lt;br /&gt;                        {"name": "hobby", "value": hobby }&lt;br /&gt;                        );&lt;br /&gt;            $.ajax({&lt;br /&gt;                type:"POST",&lt;br /&gt;                url: "./save",&lt;br /&gt;                contentType: "application/x-www-form-urlencoded",&lt;br /&gt;                dataType: "JSON",&lt;br /&gt;                data: aoData,&lt;br /&gt;                error : function (XMLHttpRequest, textStatus, errorThrown) {&lt;br /&gt;                    alert(XMLHttpRequest);&lt;br /&gt;                    alert(textStatus);&lt;br /&gt;                    alert(errorThrown)&lt;br /&gt;                },&lt;br /&gt;                success: function(data) {&lt;br /&gt;                     var jsonData = $.parseJSON(data);&lt;br /&gt;                    $("input#name").val(jsonData.name)&lt;br /&gt;                    $("input#last").val(jsonData.last)&lt;br /&gt;                    $("input#hobby").val(jsonData.hobby)&lt;br /&gt;                }&lt;br /&gt;            })&lt;br /&gt;            return false;&lt;br /&gt;        })&lt;br /&gt;    })&lt;br /&gt;&lt;br /&gt;    $(function() {&lt;br /&gt;        $("input#Delete").click(function() {&lt;br /&gt;            ...&lt;br /&gt;    $(function() {&lt;br /&gt;        $("input#Next").click(function() {&lt;br /&gt;           ...&lt;br /&gt;&lt;br /&gt;    $(function() {&lt;br /&gt;        $("input#Prev").click(function() {&lt;br /&gt;            ...&lt;br /&gt;&lt;br /&gt;    $(function() {&lt;br /&gt;        $("input#List").click(function() {&lt;br /&gt;           ...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;package util;&lt;br /&gt;&lt;br /&gt;import org.apache.commons.lang.*;&lt;br /&gt;&lt;br /&gt;public class Escape {&lt;br /&gt;  public static String html(String input) {&lt;br /&gt;    return StringEscapeUtils.escapeHtml(input);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public static String javaScript(String input) {&lt;br /&gt;    return StringEscapeUtils.escapeJavaScript(input);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public static String lineBreakToBr(String input) {&lt;br /&gt;    return input.replaceAll("\\n", "&amp;ltbr /&amp;gt");&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public static String paragraphBreakToBrs(String input) {&lt;br /&gt;    return input.replaceAll("\\n\\s*\\n", "&amp;ltbr /&amp;gt&amp;ltbr /&amp;gt");&lt;br /&gt;  }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-3265067723998112300?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/3265067723998112300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/3265067723998112300'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/02/multi-actions-with-jquery-2.html' title='Multi Actions with JQuery - 2'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-eOUnwS_77bk/TWqTcPk9mgI/AAAAAAAAAZk/OcWqv0eCkIs/s72-c/MultiActions%2Bwith%2BJQ1.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-8382424761739510406</id><published>2011-02-27T10:06:00.000-08:00</published><updated>2011-02-27T10:07:47.463-08:00</updated><title type='text'>Multi Actions with JQuery - 1</title><content type='html'>This is a small tutorial about a simple multi-button JQuery&lt;br /&gt;application.  The first part will demonstarte how to handle&lt;br /&gt;multi buttons and the second part will demonstrate:&lt;br /&gt;1. How to handle multi actions&lt;br /&gt;2. How to handle an action with AJAX and a servlet.&lt;br /&gt;&lt;br /&gt;The multi-button simple example follows:&lt;br /&gt;&lt;br /&gt;JQMultiButton.jsp&lt;br /&gt;-----------------&lt;br /&gt;&amp;lt%--&lt;br /&gt;    Document   : index&lt;br /&gt;    Created on : 24.Sub.2011, 18:23:21&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lt%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt&lt;br /&gt;&amp;lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;    "http://www.w3.org/TR/html4/loose.dtd"&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lthtml&amp;gt&lt;br /&gt;    &amp;lthead&amp;gt&lt;br /&gt;        &amp;ltmeta http-equiv="Content-Type" content="text/html; charset=UTF-8"&amp;gt&lt;br /&gt;    &amp;lttitle&amp;gtARS's Simple JQ CRUD&amp;lt/title&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="js/jquery.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="js/jquery.form.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="js/JQmultiButton.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;lt%&lt;br /&gt;   System.out.println("index.jsp JSP script began here.");&lt;br /&gt;%&amp;gt&lt;br /&gt;    &amp;ltSCRIPT&amp;gt&lt;br /&gt;        function InitScr() {&lt;br /&gt;         alert ("Merhaba from Ali R+ with best wishes! ");&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    &amp;lt/SCRIPT&amp;gt&lt;br /&gt;&amp;lt/head&amp;gt&lt;br /&gt;&amp;ltbody style="background-color:yellow" onLoad="InitScr()"&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lth1&amp;gtThe Simplest JQuery CRUD Application&amp;lt/h1&amp;gt&lt;br /&gt;&lt;br /&gt;    &amp;ltbr /&amp;gt&lt;br /&gt;&lt;br /&gt;    &amp;ltform name="theDetail" action="" method="get"&amp;gt&lt;br /&gt;        &amp;ltinput type="hidden" name="id"/&amp;gt&amp;ltbr /&amp;gt&lt;br /&gt;        First name: &amp;ltinput type="text" id ="name" name="name"/&amp;gt&amp;ltbr /&amp;gt&lt;br /&gt;        Last name : &amp;ltinput type="text" id="last" name="last"/&amp;gt&amp;ltbr /&amp;gt&lt;br /&gt;        Hobby     : &amp;ltinput type="text" id="hobby" name="hobby"/&amp;gt&amp;ltbr /&amp;gt&lt;br /&gt;        &amp;ltbr /&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="New" VALUE="New"&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="Save" VALUE="Save"&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="Delete" VALUE="Delete"&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="Next" VALUE="Next"&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="Prev" VALUE="Prev"&amp;gt&lt;br /&gt;        &amp;ltINPUT TYPE="button" id="List" VALUE="List"&amp;gt&lt;br /&gt;    &amp;lt/form&amp;gt&lt;br /&gt;&amp;lt/body&amp;gt&lt;br /&gt;&amp;lt/html&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;JQmultiButton.js&lt;br /&gt;----------------&lt;br /&gt;$(document).ready(function() {&lt;br /&gt;    // Handler for .ready() called.&lt;br /&gt;&lt;br /&gt;    $(function() {&lt;br /&gt;        $("input#New").click(function() {&lt;br /&gt;            alert('New is clicked');&lt;br /&gt;        })&lt;br /&gt;    })&lt;br /&gt;&lt;br /&gt;    $(function() {&lt;br /&gt;        $("input#Save").click(function() {&lt;br /&gt;            alert('Save is clicked');&lt;br /&gt;        })&lt;br /&gt;    })&lt;br /&gt;&lt;br /&gt;    $(function() {&lt;br /&gt;        $("input#Delete").click(function() {&lt;br /&gt;            alert('Delete is clicked');&lt;br /&gt;        })&lt;br /&gt;    })&lt;br /&gt;    $(function() {&lt;br /&gt;        $("input#Next").click(function() {&lt;br /&gt;            alert('Next is clicked');&lt;br /&gt;        })&lt;br /&gt;    })&lt;br /&gt;&lt;br /&gt;    $(function() {&lt;br /&gt;        $("input#Prev").click(function() {&lt;br /&gt;            alert('Prev is clicked');&lt;br /&gt;        })&lt;br /&gt;    })&lt;br /&gt;&lt;br /&gt;    $(function() {&lt;br /&gt;        $("input#List").click(function() {&lt;br /&gt;            alert('List is clicked');&lt;br /&gt;        })&lt;br /&gt;    })&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;});&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-8382424761739510406?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/8382424761739510406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/8382424761739510406'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/02/multi-actions-with-jquery-1_27.html' title='Multi Actions with JQuery - 1'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-4866014019306287109</id><published>2011-02-25T08:38:00.000-08:00</published><updated>2011-02-25T08:39:31.536-08:00</updated><title type='text'>JQuery how to pass data to a servlet on the server via AJAX</title><content type='html'>&lt;span style="font-size:85%;"&gt;This is a short note about passing data to a servlet on the server.&lt;br /&gt;using AJAX on JQuery. The problem is you can not find the required&lt;br /&gt;format written anywhere.&lt;br /&gt;&lt;br /&gt;-The passed data must be in the name-value format as seen below.&lt;br /&gt;-The content type is indicated wrong in many internet references,&lt;br /&gt;probably version difference.&lt;br /&gt;-The JQuery version I used is jQuery JavaScript Library v1.4.4&lt;br /&gt;-be careful dataType "json" does not work it has to be capitolized.&lt;br /&gt;&lt;br /&gt;The complete application uses multiple buttons that trigger multiple&lt;br /&gt;AJAX calls. I will provide the full working code as I make progress.&lt;br /&gt;Calling and returning back from AJAX driven servlets is working now.&lt;br /&gt;&lt;br /&gt;Cheers.&lt;br /&gt;&lt;br /&gt;Ali R+&lt;br /&gt;&lt;br /&gt;Here is the solution:&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;var name = $("input#name").val();&lt;br /&gt;var last = $("input#last").val();&lt;br /&gt;var hobby = $("input#hobby").val();&lt;br /&gt;&lt;br /&gt;var aoData = [];&lt;br /&gt;&lt;br /&gt;aoData.push( { "name": "name", "value": name },&lt;br /&gt;{"name": "last", "value": last },&lt;br /&gt;{"name": "hobby", "value": hobby }&lt;br /&gt;);&lt;br /&gt;$.ajax({&lt;br /&gt;type:"POST",&lt;br /&gt;url: "./new",&lt;br /&gt;contentType: "application/x-www-form-urlencoded",&lt;br /&gt;dataType: "JSON",&lt;br /&gt;data: aoData,&lt;br /&gt;success: function(data) {&lt;br /&gt;var jsonData = $.parseJSON(data);&lt;br /&gt;$("input#name").val(jsonData.name)&lt;br /&gt;$("input#last").val(jsonData.last)&lt;br /&gt;$("input#hobby").val(jsonData.hobby)&lt;br /&gt;}&lt;br /&gt;})&lt;br /&gt;return false;&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-4866014019306287109?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/4866014019306287109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/4866014019306287109'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/02/jquery-how-to-pass-data-to-servlet-on.html' title='JQuery how to pass data to a servlet on the server via AJAX'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-6513368744146207140</id><published>2011-02-20T00:22:00.000-08:00</published><updated>2011-02-20T00:23:27.487-08:00</updated><title type='text'>JQ Forms with AJAX-JSP8</title><content type='html'>This is basicly the same as Sample4 but there is a small addition to&lt;br /&gt;demonstrate fieldSerialize and fieldValue Form Plugin methods.&lt;br /&gt;&lt;br /&gt;sample8.java&lt;br /&gt;------------&lt;br /&gt;&amp;lt%-- &lt;br /&gt;    Document   : sample4&lt;br /&gt;    Created on : 19.Şub.2011, 20:17:55&lt;br /&gt;    Originally : belongs to "jQuery Form Plugin"&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lt%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt&lt;br /&gt;&amp;lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;   "http://www.w3.org/TR/html4/loose.dtd"&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lthtml&amp;gt&lt;br /&gt;    &amp;lthead&amp;gt&lt;br /&gt;        &amp;ltmeta http-equiv="Content-Type" content="text/html; charset=UTF-8"&amp;gt&lt;br /&gt;        &amp;lttitle&amp;gtJSP Page&amp;lt/title&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="jquery.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="jquery.form.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;            &amp;ltscript type="text/javascript"&amp;gt&lt;br /&gt;        // wait for the DOM to be loaded&lt;br /&gt;$(document).ready(function() {&lt;br /&gt;    // bind form using ajaxForm&lt;br /&gt;    $('#jsonForm').ajaxForm({&lt;br /&gt;        // dataType identifies the expected content type of the server response&lt;br /&gt;        dataType:  'json',&lt;br /&gt;&lt;br /&gt;        // success identifies the function to invoke when the server response&lt;br /&gt;        // has been received&lt;br /&gt;        success:   processJson&lt;br /&gt;    });&lt;br /&gt;});&lt;br /&gt;           &lt;br /&gt;function processJson(data) {&lt;br /&gt;    // 'data' is the json object returned from the server&lt;br /&gt;    alert(data.message);&lt;br /&gt; var queryString = $('#jsonForm :text').fieldSerialize();&lt;br /&gt;            var pwd = $('#jsonForm :text').fieldValue()[0];&lt;br /&gt;            alert(queryString);&lt;br /&gt;}&lt;br /&gt;    &amp;lt/script&amp;gt&lt;br /&gt;    &amp;lt/head&amp;gt&lt;br /&gt;    &amp;ltbody&amp;gt&lt;br /&gt;        &amp;ltdiv id="sample4"&amp;gt&lt;br /&gt;            &amp;ltp /&amp;gt&lt;br /&gt;            This page shows how to handle JSON data returned from the server.&lt;br /&gt;            &amp;ltp /&amp;gt&lt;br /&gt;            The form below submits a message to the server and the server&lt;br /&gt;            echos it back in JSON format.&lt;br /&gt;            &amp;ltbr /&amp;gt&lt;br /&gt;            &amp;ltp /&amp;gt&lt;br /&gt;            &amp;ltform id="jsonForm" action="json-echo.jsp" method="post"&amp;gt&amp;ltdiv&amp;gt&lt;br /&gt;                Message: &amp;ltinput type="text" name="message" value="Hello JSON" /&amp;gt&lt;br /&gt;                &amp;ltinput type="submit" value="Echo as JSON" /&amp;gt&lt;br /&gt;            &amp;lt/div&amp;gt&amp;lt/form&amp;gt&lt;br /&gt;            &amp;ltbr /&amp;gt&lt;br /&gt;        &amp;lt/div&amp;gt&lt;br /&gt;    &amp;lt/body&amp;gt&lt;br /&gt;&amp;lt/html&amp;gt&lt;br /&gt;&lt;br /&gt;json-echo.java&lt;br /&gt;--------------&lt;br /&gt;&amp;lt%&lt;br /&gt;out.print("{ \"message\": \"" + request.getParameter("message") + "\" }");&lt;br /&gt;%&amp;gt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-6513368744146207140?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/6513368744146207140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/6513368744146207140'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/02/jq-forms-with-ajax-jsp8.html' title='JQ Forms with AJAX-JSP8'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-4656599084467513675</id><published>2011-02-20T00:21:00.000-08:00</published><updated>2011-02-20T00:22:05.093-08:00</updated><title type='text'>JQ Forms with AJAX-JSP6</title><content type='html'>This example demonstrates the use of ajaxForm with HTML data.&lt;br /&gt;&lt;br /&gt;Sample6.jsp&lt;br /&gt;-----------&lt;br /&gt;&amp;lt%-- &lt;br /&gt;    Document   : sample6.jsp&lt;br /&gt;    Created on : 19.Şub.2011, 21:09:26&lt;br /&gt;    Originally : belongs to "jQuery Form Plugin"&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lt%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt&lt;br /&gt;&amp;lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;   "http://www.w3.org/TR/html4/loose.dtd"&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lthtml&amp;gt&lt;br /&gt;    &amp;lthead&amp;gt&lt;br /&gt;        &amp;ltmeta http-equiv="Content-Type" content="text/html; charset=UTF-8"&amp;gt&lt;br /&gt;        &amp;lttitle&amp;gtJSP Page&amp;lt/title&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="jquery.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="jquery.form.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;&lt;br /&gt;    &amp;ltscript type="text/javascript"&amp;gt&lt;br /&gt;// prepare the form when the DOM is ready&lt;br /&gt;$(document).ready(function() {&lt;br /&gt;    // bind form using ajaxForm&lt;br /&gt;    $('#htmlForm').ajaxForm({&lt;br /&gt;        // target identifies the element(s) to update with the server response&lt;br /&gt;        target: '#htmlExampleTarget',&lt;br /&gt;&lt;br /&gt;        // success identifies the function to invoke when the server response&lt;br /&gt;        // has been received; here we apply a fade-in effect to the new content&lt;br /&gt;        success: function() {&lt;br /&gt;            $('#htmlExampleTarget').fadeIn('slow');&lt;br /&gt;        }&lt;br /&gt;    });&lt;br /&gt;});&lt;br /&gt;    &amp;lt/script&amp;gt&lt;br /&gt;    &amp;lt/head&amp;gt&lt;br /&gt;    &amp;ltbody&amp;gt&lt;br /&gt;&lt;br /&gt;            &amp;ltdiv id="sample6"&amp;gt&lt;br /&gt;            &amp;ltp /&amp;gt&lt;br /&gt;            This page shows how to handle HTML data returned from the server.&lt;br /&gt;            &amp;ltp /&amp;gt&lt;br /&gt;            The form below submits a message to the server and the server&lt;br /&gt;            echos it back in an HTML div.  The response is added to this&lt;br /&gt;            page in the &amp;ltcode class="inline"&amp;gthtmlExampleTarget&amp;lt/code&amp;gt div below.&lt;br /&gt;            &amp;ltbr /&amp;gt&lt;br /&gt;            &amp;ltform id="htmlForm" action="html-echo.jsp" method="post"&amp;gt&amp;ltdiv&amp;gt&lt;br /&gt;                Message: &amp;ltinput type="text" name="message" value="Hello HTML" /&amp;gt&lt;br /&gt;                &amp;ltinput type="submit" value="Echo as HTML" /&amp;gt&lt;br /&gt;            &amp;lt/div&amp;gt&amp;lt/form&amp;gt&lt;br /&gt;&lt;br /&gt;            &amp;ltbr /&amp;gt&lt;br /&gt;             &amp;lth3&amp;gthtmlExampleTarget (output will be added below):&amp;lt/h3&amp;gt&lt;br /&gt;            &amp;ltdiv id="htmlExampleTarget"&amp;gt&amp;lt/div&amp;gt&lt;br /&gt;            &amp;lt/div&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt/body&amp;gt&lt;br /&gt;&amp;lt/html&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;html-echo.jsp&lt;br /&gt;-------------&lt;br /&gt;&amp;lt%&lt;br /&gt;out.print("&amp;ltdiv style=\"background-color:#ffa; padding:20px\"&amp;gt" + request.getParameter("message") + "&amp;lt/div&amp;gt");&lt;br /&gt;%&amp;gt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-4656599084467513675?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/4656599084467513675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/4656599084467513675'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/02/jq-forms-with-ajax-jsp6.html' title='JQ Forms with AJAX-JSP6'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-9114585751776562898</id><published>2011-02-20T00:19:00.000-08:00</published><updated>2011-02-20T00:20:24.531-08:00</updated><title type='text'>JQ Forms with AJAX-JSP5</title><content type='html'>This example demonstrates the use of ajaxForm with XML data.&lt;br /&gt;&lt;br /&gt;Sample5.jsp&lt;br /&gt;-----------&lt;br /&gt;&amp;lt%-- &lt;br /&gt;    Document   : sample5.jsp&lt;br /&gt;    Created on : 19.Şub.2011, 20:38:10&lt;br /&gt;    Originally : belongs to "jQuery Form Plugin"&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lt%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt&lt;br /&gt;&amp;lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;   "http://www.w3.org/TR/html4/loose.dtd"&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lthtml&amp;gt&lt;br /&gt;    &amp;lthead&amp;gt&lt;br /&gt;        &amp;ltmeta http-equiv="Content-Type" content="text/html; charset=UTF-8"&amp;gt&lt;br /&gt;        &amp;lttitle&amp;gtJSP Page&amp;lt/title&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="jquery.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="jquery.form.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;&lt;br /&gt;    &amp;ltscript type="text/javascript"&amp;gt&lt;br /&gt;$(document).ready(function() {&lt;br /&gt;    // bind form using ajaxForm&lt;br /&gt;    $('#xmlForm').ajaxForm({&lt;br /&gt;        // dataType identifies the expected content type of the server response&lt;br /&gt;        dataType:  'xml',&lt;br /&gt;&lt;br /&gt;        // success identifies the function to invoke when the server response&lt;br /&gt;        // has been received&lt;br /&gt;        success:   processXml&lt;br /&gt;    });&lt;br /&gt;});&lt;br /&gt;function processXml(responseXML) {&lt;br /&gt;    // 'responseXML' is the XML document returned by the server; we use&lt;br /&gt;    // jQuery to extract the content of the message node from the XML doc&lt;br /&gt;    var message = $('message', responseXML).text();&lt;br /&gt;    alert(message);&lt;br /&gt;}&lt;br /&gt;&amp;lt/script&amp;gt&lt;br /&gt;    &amp;lt/head&amp;gt&lt;br /&gt;    &amp;ltbody&amp;gt&lt;br /&gt;        &amp;ltdiv id="sample5"&amp;gt&lt;br /&gt;               &amp;ltp /&amp;gt&lt;br /&gt;               This page shows how to handle XML data returned from the server.&lt;br /&gt;               &amp;ltp /&amp;gt&lt;br /&gt;               The form below submits a message to the server and the server&lt;br /&gt;               echos it back in XML format.&lt;br /&gt;               &amp;ltbr /&amp;gt&lt;br /&gt;               &lt;br /&gt;               &amp;ltform id="xmlForm" action="xml-echo.jsp" method="post"&amp;gt&amp;ltdiv&amp;gt&lt;br /&gt;                   Message: &amp;ltinput type="text" name="message" value="Hello XML" /&amp;gt&lt;br /&gt;                   &amp;ltinput type="submit" value="Echo as XML" /&amp;gt&lt;br /&gt;               &amp;lt/div&amp;gt&amp;lt/form&amp;gt&lt;br /&gt;               &amp;lt/div&amp;gt&lt;br /&gt;&lt;br /&gt;    &amp;lt/body&amp;gt&lt;br /&gt;&amp;lt/html&amp;gt&lt;br /&gt;&lt;br /&gt;xml-echo.jsp&lt;br /&gt;------------&lt;br /&gt;&amp;lt%@page contentType="text/xml" pageEncoding="UTF-8"%&amp;gt&lt;br /&gt;&amp;lt%&lt;br /&gt;&lt;br /&gt;// !!! IMPORTANT !!! - the server must set the content type to XML&lt;br /&gt;out.print("&amp;ltroot&amp;gt&amp;ltmessage&amp;gt" + request.getParameter("message") + "&amp;lt/message&amp;gt&amp;lt/root&amp;gt");&lt;br /&gt;%&amp;gt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-9114585751776562898?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/9114585751776562898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/9114585751776562898'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/02/jq-forms-with-ajax-jsp5.html' title='JQ Forms with AJAX-JSP5'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-3719101349657364572</id><published>2011-02-20T00:16:00.000-08:00</published><updated>2011-02-20T00:18:59.945-08:00</updated><title type='text'>JQ Forms with AJAX-JSP4</title><content type='html'>This example demonstrates the use of ajaxForm with JSON data.&lt;br /&gt;&lt;br /&gt;Sample4.jsp&lt;br /&gt;-----------&lt;br /&gt;&amp;lt%-- &lt;br /&gt;    Document   : sample4&lt;br /&gt;    Created on : 19.Şub.2011, 20:17:55&lt;br /&gt;    Originally : belongs to "jQuery Form Plugin"&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lt%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt&lt;br /&gt;&amp;lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;   "http://www.w3.org/TR/html4/loose.dtd"&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lthtml&amp;gt&lt;br /&gt;    &amp;lthead&amp;gt&lt;br /&gt;        &amp;ltmeta http-equiv="Content-Type" content="text/html; charset=UTF-8"&amp;gt&lt;br /&gt;        &amp;lttitle&amp;gtJSP Page&amp;lt/title&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="jquery.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="jquery.form.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;            &amp;ltscript type="text/javascript"&amp;gt&lt;br /&gt;        // wait for the DOM to be loaded&lt;br /&gt;$(document).ready(function() {&lt;br /&gt;    // bind form using ajaxForm&lt;br /&gt;    $('#jsonForm').ajaxForm({&lt;br /&gt;        // dataType identifies the expected content type of the server response&lt;br /&gt;        dataType:  'json',&lt;br /&gt;&lt;br /&gt;        // success identifies the function to invoke when the server response&lt;br /&gt;        // has been received&lt;br /&gt;        success:   processJson&lt;br /&gt;    });&lt;br /&gt;});&lt;br /&gt;           &lt;br /&gt;function processJson(data) {&lt;br /&gt;    // 'data' is the json object returned from the server&lt;br /&gt;    alert(data.message);&lt;br /&gt;}&lt;br /&gt;    &amp;lt/script&amp;gt&lt;br /&gt;    &amp;lt/head&amp;gt&lt;br /&gt;    &amp;ltbody&amp;gt&lt;br /&gt;        &amp;ltdiv id="sample4"&amp;gt&lt;br /&gt;            &amp;ltp /&amp;gt&lt;br /&gt;            This page shows how to handle JSON data returned from the server.&lt;br /&gt;            &amp;ltp /&amp;gt&lt;br /&gt;            The form below submits a message to the server and the server&lt;br /&gt;            echos it back in JSON format.&lt;br /&gt;            &amp;ltbr /&amp;gt&lt;br /&gt;            &amp;ltp /&amp;gt&lt;br /&gt;            &amp;ltform id="jsonForm" action="json-echo.jsp" method="post"&amp;gt&amp;ltdiv&amp;gt&lt;br /&gt;                Message: &amp;ltinput type="text" name="message" value="Hello JSON" /&amp;gt&lt;br /&gt;                &amp;ltinput type="submit" value="Echo as JSON" /&amp;gt&lt;br /&gt;            &amp;lt/div&amp;gt&amp;lt/form&amp;gt&lt;br /&gt;            &amp;ltbr /&amp;gt&lt;br /&gt;        &amp;lt/div&amp;gt&lt;br /&gt;    &amp;lt/body&amp;gt&lt;br /&gt;&amp;lt/html&amp;gt&lt;br /&gt;&lt;br /&gt;json-echo.jsp&lt;br /&gt;-------------&lt;br /&gt;&amp;lt%&lt;br /&gt;out.print("{ \"message\": \"" + request.getParameter("message") + "\" }");&lt;br /&gt;%&amp;gt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-3719101349657364572?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/3719101349657364572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/3719101349657364572'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/02/jq-forms-with-ajax-jsp4.html' title='JQ Forms with AJAX-JSP4'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-4186719955791467981</id><published>2011-02-20T00:15:00.000-08:00</published><updated>2011-02-20T00:16:34.499-08:00</updated><title type='text'>JQ Forms with AJAX-JSP3</title><content type='html'>There are three slightly different examples of validation here.  The first uses the forData array.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;FIRST EXAMPLE:&lt;br /&gt;--------------&lt;br /&gt;&lt;br /&gt;Sample3_1.jsp&lt;br /&gt;-------------&lt;br /&gt;&amp;lt%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt&lt;br /&gt;&amp;lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;   "http://www.w3.org/TR/html4/loose.dtd"&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lthtml&amp;gt&lt;br /&gt;    &amp;lthead&amp;gt&lt;br /&gt;        &amp;ltmeta http-equiv="Content-Type" content="text/html; charset=UTF-8"&amp;gt&lt;br /&gt;        &amp;lttitle&amp;gtJSP Page&amp;lt/title&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="jquery.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="jquery.form.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript"&amp;gt&lt;br /&gt;        // wait for the DOM to be loaded&lt;br /&gt;            var x=0;&lt;br /&gt;        $(document).ready(function() {&lt;br /&gt;    // bind form using ajaxForm&lt;br /&gt;    $('#validateForm1').ajaxForm( { beforeSubmit: validate } );&lt;br /&gt;        });&lt;br /&gt;function validate(formData, jqForm, options) {&lt;br /&gt;    // formData is an array of objects representing the name and value of each field&lt;br /&gt;    // that will be sent to the server;  it takes the following form:&lt;br /&gt;    //&lt;br /&gt;    // [&lt;br /&gt;    //     { name:  username, value: valueOfUsernameInput },&lt;br /&gt;    //     { name:  password, value: valueOfPasswordInput }&lt;br /&gt;    // ]&lt;br /&gt;    //&lt;br /&gt;    // To validate, we can examine the contents of this array to see if the&lt;br /&gt;    // username and password fields have values.  If either value evaluates&lt;br /&gt;    // to false then we return false from this method.&lt;br /&gt;    for (var i=0; i &amp;lt formData.length; i++) {&lt;br /&gt;        if (!formData[i].value) {&lt;br /&gt;            alert('Please enter a value for both Username and Password');&lt;br /&gt;            return false;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    alert('Both fields contain values.');&lt;br /&gt;}&lt;br /&gt;    &amp;lt/script&amp;gt&lt;br /&gt;    &amp;lt/head&amp;gt&lt;br /&gt;    &amp;ltbody&amp;gt&lt;br /&gt;       &amp;ltdiv id="sample3"&amp;gt&lt;br /&gt;            &amp;lth3&amp;gtValidate Using the &amp;ltcode&amp;gtformData&amp;lt/code&amp;gt Argument&amp;lt/h3&amp;gt&lt;br /&gt;            &amp;ltform id="validateForm1" action="dummy.jsp" method="post"&amp;gt&amp;ltdiv&amp;gt&lt;br /&gt;                Username: &amp;ltinput type="text" name="username" /&amp;gt&lt;br /&gt;                Password: &amp;ltinput type="password" name="password" /&amp;gt&lt;br /&gt;                &amp;ltinput type="submit" value="Submit" /&amp;gt&lt;br /&gt;            &amp;lt/div&amp;gt&amp;lt/form&amp;gt&lt;br /&gt;            &amp;lt/div&amp;gt&lt;br /&gt; &lt;br /&gt;    &amp;lt/body&amp;gt&lt;br /&gt;&amp;lt/html&amp;gt&lt;br /&gt;&lt;br /&gt;dummy.jsp&lt;br /&gt;---------&lt;br /&gt;&amp;lt%-- &lt;br /&gt;    Document   : dummy&lt;br /&gt;    Created on : 19.?ub.2011, 09:30:16&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&amp;lt%&lt;br /&gt;out.print("Hello world");&lt;br /&gt;%&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The second uses the jqform element to acces the DOM elemnts directly.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SECOND EXAMPLE:&lt;br /&gt;---------------&lt;br /&gt;&lt;br /&gt;Sample3_2.jsp&lt;br /&gt;-------------&lt;br /&gt;&amp;lt%-- &lt;br /&gt;    Document   : sample3&lt;br /&gt;    Created on : 19.Şub.2011, 10:38:01&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lt%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt&lt;br /&gt;&amp;lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;   "http://www.w3.org/TR/html4/loose.dtd"&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lthtml&amp;gt&lt;br /&gt;    &amp;lthead&amp;gt&lt;br /&gt;        &amp;ltmeta http-equiv="Content-Type" content="text/html; charset=UTF-8"&amp;gt&lt;br /&gt;        &amp;lttitle&amp;gtJSP Page&amp;lt/title&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="jquery.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="jquery.form.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;            &amp;ltscript type="text/javascript"&amp;gt&lt;br /&gt;        // wait for the DOM to be loaded&lt;br /&gt;$(document).ready(function() {&lt;br /&gt;    // bind form using ajaxForm&lt;br /&gt;    $('#validateForm2').ajaxForm( { beforeSubmit: validate } );&lt;br /&gt;})&lt;br /&gt;&lt;br /&gt;function validate(formData, jqForm, options) {&lt;br /&gt;    // jqForm is a jQuery object which wraps the form DOM element&lt;br /&gt;    //&lt;br /&gt;    // To validate, we can access the DOM elements directly and return true&lt;br /&gt;    // only if the values of both the username and password fields evaluate&lt;br /&gt;    // to true&lt;br /&gt;&lt;br /&gt;    var form = jqForm[0];&lt;br /&gt;    if (!form.username.value || !form.password.value) {&lt;br /&gt;        alert('Please enter a value for both Username and Password');&lt;br /&gt;        return false;&lt;br /&gt;    }&lt;br /&gt;    alert('Both fields contain values.');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;    &amp;lt/script&amp;gt&lt;br /&gt;    &amp;lt/head&amp;gt&lt;br /&gt;    &amp;ltbody&amp;gt&lt;br /&gt;       &amp;ltdiv id="sample3"&amp;gt&lt;br /&gt;            &amp;lth3&amp;gtValidate Using the &amp;ltcode&amp;gtjqForm&amp;lt/code&amp;gt Argument&amp;lt/h3&amp;gt&lt;br /&gt;            &amp;ltform id="validateForm2" action="dummy.jsp" method="post"&amp;gt&amp;ltdiv&amp;gt&lt;br /&gt;                Username: &amp;ltinput type="text" name="username" /&amp;gt&lt;br /&gt;                Password: &amp;ltinput type="password" name="password" /&amp;gt&lt;br /&gt;                &amp;ltinput type="submit" value="Submit" /&amp;gt&lt;br /&gt;            &amp;lt/div&amp;gt&amp;lt/form&amp;gt&lt;br /&gt;            &amp;lt/div&amp;gt&lt;br /&gt; &lt;br /&gt;    &amp;lt/body&amp;gt&lt;br /&gt;&amp;lt/html&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The third example uses the fieldValue is a Form Plugin method.&lt;br /&gt;&lt;br /&gt;THIRD EXAMPLE:&lt;br /&gt;--------------&lt;br /&gt;&lt;br /&gt;Sample3_3.jsp:&lt;br /&gt;--------------&lt;br /&gt;&amp;lt%-- &lt;br /&gt;    Document   : sample3&lt;br /&gt;    Created on : 19.Şub.2011, 10:38:01&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lt%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt&lt;br /&gt;&amp;lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;   "http://www.w3.org/TR/html4/loose.dtd"&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lthtml&amp;gt&lt;br /&gt;    &amp;lthead&amp;gt&lt;br /&gt;        &amp;ltmeta http-equiv="Content-Type" content="text/html; charset=UTF-8"&amp;gt&lt;br /&gt;        &amp;lttitle&amp;gtJSP Page&amp;lt/title&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="jquery.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="jquery.form.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;            &amp;ltscript type="text/javascript"&amp;gt&lt;br /&gt;        // wait for the DOM to be loaded&lt;br /&gt;$(document).ready(function() {&lt;br /&gt;    // bind form using ajaxForm&lt;br /&gt;    $('#validateForm3').ajaxForm( { beforeSubmit: validate } );&lt;br /&gt;})&lt;br /&gt;&lt;br /&gt;function validate(formData, jqForm, options) {&lt;br /&gt;    // fieldValue is a Form Plugin method that can be invoked to find the&lt;br /&gt;    // current value of a field&lt;br /&gt;    //&lt;br /&gt;    // To validate, we can capture the values of both the username and password&lt;br /&gt;    // fields and return true only if both evaluate to true&lt;br /&gt;&lt;br /&gt;    var usernameValue = $('input[name=username]').fieldValue();&lt;br /&gt;    var passwordValue = $('input[name=password]').fieldValue();&lt;br /&gt;&lt;br /&gt;    // usernameValue and passwordValue are arrays but we can do simple&lt;br /&gt;    // "not" tests to see if the arrays are empty&lt;br /&gt;    if (!usernameValue[0] || !passwordValue[0]) {&lt;br /&gt;        alert('Please enter a value for both Username and Password');&lt;br /&gt;        return false;&lt;br /&gt;    }&lt;br /&gt;    alert('Both fields contain values.');&lt;br /&gt;}&lt;br /&gt;    &amp;lt/script&amp;gt&lt;br /&gt;    &amp;lt/head&amp;gt&lt;br /&gt;    &amp;ltbody&amp;gt&lt;br /&gt;       &amp;ltdiv id="sample3"&amp;gt&lt;br /&gt;            &amp;lth3&amp;gtValidate Using the &amp;ltcode&amp;gtfieldValue&amp;lt/code&amp;gt Method&amp;lt/h3&amp;gt&lt;br /&gt;            &amp;ltform id="validateForm3" action="dummy.jsp" method="post"&amp;gt&amp;ltdiv&amp;gt&lt;br /&gt;                Username: &amp;ltinput type="text" name="username" /&amp;gt&lt;br /&gt;                Password: &amp;ltinput type="password" name="password" /&amp;gt&lt;br /&gt;                &amp;ltinput type="submit" value="Submit" /&amp;gt&lt;br /&gt;            &amp;lt/div&amp;gt&amp;lt/form&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            &amp;lt/div&amp;gt&lt;br /&gt; &lt;br /&gt;    &amp;lt/body&amp;gt&lt;br /&gt;&amp;lt/html&amp;gt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-4186719955791467981?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/4186719955791467981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/4186719955791467981'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/02/jq-forms-with-ajax-jsp3.html' title='JQ Forms with AJAX-JSP3'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-7747892118362239276</id><published>2011-02-20T00:14:00.000-08:00</published><updated>2011-02-20T00:15:08.915-08:00</updated><title type='text'>JQ Forms with AJAX-JSP2</title><content type='html'>This example demonstarates the use of ajaxSubmit() and pre- / post- submit callback.&lt;br /&gt;&lt;br /&gt;Sample2.jsp&lt;br /&gt;-----------&lt;br /&gt;&amp;lt%-- &lt;br /&gt;    Document   : sample2&lt;br /&gt;    Created on : 19.Şub.2011, 09:56:09&lt;br /&gt;    Originally : belongs to "jQuery Form Plugin"&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lt%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt&lt;br /&gt;&amp;lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;   "http://www.w3.org/TR/html4/loose.dtd"&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lthtml&amp;gt&lt;br /&gt;    &amp;lthead&amp;gt&lt;br /&gt;        &amp;ltmeta http-equiv="Content-Type" content="text/html; charset=UTF-8"&amp;gt&lt;br /&gt;        &amp;lttitle&amp;gtJSP Page&amp;lt/title&amp;gt&lt;br /&gt;            &amp;ltscript type="text/javascript" src="jquery.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="jquery.form.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;&lt;br /&gt;    &amp;ltscript type="text/javascript"&amp;gt&lt;br /&gt;$(document).ready(function() {&lt;br /&gt;    var options = {&lt;br /&gt;        target:        '#output2',   // target element(s) to be updated with server response&lt;br /&gt;        beforeSubmit:  showRequest,  // pre-submit callback&lt;br /&gt;        success:       showResponse  // post-submit callback&lt;br /&gt;&lt;br /&gt;        // other available options:&lt;br /&gt;        //url:       url         // override for form's 'action' attribute&lt;br /&gt;        //type:      type        // 'get' or 'post', override for form's 'method' attribute&lt;br /&gt;        //dataType:  null        // 'xml', 'script', or 'json' (expected server response type)&lt;br /&gt;        //clearForm: true        // clear all form fields after successful submit&lt;br /&gt;        //resetForm: true        // reset the form after successful submit&lt;br /&gt;&lt;br /&gt;        // $.ajax options can be used here too, for example:&lt;br /&gt;        //timeout:   3000&lt;br /&gt;    };&lt;br /&gt;&lt;br /&gt;    // bind to the form's submit event&lt;br /&gt;    $('#myForm2').submit(function() {&lt;br /&gt;        // inside event callbacks 'this' is the DOM element so we first&lt;br /&gt;        // wrap it in a jQuery object and then invoke ajaxSubmit&lt;br /&gt;        $(this).ajaxSubmit(options);&lt;br /&gt;&lt;br /&gt;        // !!! Important !!!&lt;br /&gt;        // always return false to prevent standard browser submit and page navigation&lt;br /&gt;        return false;&lt;br /&gt;    });&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;// pre-submit callback&lt;br /&gt;function showRequest(formData, jqForm, options) {&lt;br /&gt;    // formData is an array; here we use $.param to convert it to a string to display it&lt;br /&gt;    // but the form plugin does this for you automatically when it submits the data&lt;br /&gt;    var queryString = $.param(formData);&lt;br /&gt;&lt;br /&gt;    // jqForm is a jQuery object encapsulating the form element.  To access the&lt;br /&gt;    // DOM element for the form do this:&lt;br /&gt;    // var formElement = jqForm[0];&lt;br /&gt;&lt;br /&gt;    alert('About to submit: \n\n' + queryString);&lt;br /&gt;&lt;br /&gt;    // here we could return false to prevent the form from being submitted;&lt;br /&gt;    // returning anything other than false will allow the form submit to continue&lt;br /&gt;    return true;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// post-submit callback&lt;br /&gt;function showResponse(responseText, statusText, xhr, $form)  {&lt;br /&gt;    // for normal html responses, the first argument to the success callback&lt;br /&gt;    // is the XMLHttpRequest object's responseText property&lt;br /&gt;&lt;br /&gt;    // if the ajaxSubmit method was passed an Options Object with the dataType&lt;br /&gt;    // property set to 'xml' then the first argument to the success callback&lt;br /&gt;    // is the XMLHttpRequest object's responseXML property&lt;br /&gt;&lt;br /&gt;    // if the ajaxSubmit method was passed an Options Object with the dataType&lt;br /&gt;    // property set to 'json' then the first argument to the success callback&lt;br /&gt;    // is the json data object returned by the server&lt;br /&gt;&lt;br /&gt;    alert('status: ' + statusText + '\n\nresponseText: \n' + responseText +&lt;br /&gt;        '\n\nThe output div should have already been updated with the responseText.');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;    &amp;lt/script&amp;gt&lt;br /&gt;    &amp;lt/head&amp;gt&lt;br /&gt;    &amp;ltbody&amp;gt&lt;br /&gt;        &amp;ltdiv id="sample2" class="sampleTabContent" data-tabid="ajaxSubmit"&amp;gt&lt;br /&gt;            &amp;ltp /&amp;gt&lt;br /&gt;            The following code controls the HTML form beneath it. It uses &amp;ltcode class="inline"&amp;gtajaxSubmit&amp;lt/code&amp;gt&lt;br /&gt;                to submit the form.&lt;br /&gt;                &amp;ltpre&amp;gt&amp;ltcode class="mix"&amp;gt// prepare the form when the DOM is ready&lt;br /&gt;&lt;br /&gt;&amp;lt/code&amp;gt&amp;lt/pre&amp;gt&lt;br /&gt;                &amp;ltform id="myForm2" action="dummy.jsp" method="post"&amp;gt&amp;ltdiv&amp;gt&lt;br /&gt;&lt;br /&gt;                        &amp;ltinput type="hidden" name="Hidden" value="hiddenValue" /&amp;gt&lt;br /&gt;                        &amp;lttable&amp;gt&lt;br /&gt;                        &amp;lttr&amp;gt&amp;lttd&amp;gtName:&amp;lt/td&amp;gt&amp;lttd&amp;gt&amp;ltinput name="Name" type="text" value="MyName2" /&amp;gt&amp;lt/td&amp;gt&amp;lt/tr&amp;gt&lt;br /&gt;                        &amp;lttr&amp;gt&amp;lttd&amp;gtPassword:&amp;lt/td&amp;gt&amp;lttd&amp;gt&amp;ltinput name="Password" type="password" /&amp;gt&amp;lt/td&amp;gt&amp;lt/tr&amp;gt&lt;br /&gt;                        &amp;lttr&amp;gt&amp;lttd&amp;gtMultiple:&amp;lt/td&amp;gt&amp;lttd&amp;gt&amp;ltselect name="Multiple" multiple="multiple"&amp;gt&lt;br /&gt;                            &amp;ltoptgroup label="Group 1"&amp;gt&lt;br /&gt;                                &amp;ltoption value="one" selected="selected"&amp;gtOne&amp;lt/option&amp;gt&lt;br /&gt;&lt;br /&gt;                                &amp;ltoption value="two"&amp;gtTwo&amp;lt/option&amp;gt&lt;br /&gt;                                &amp;ltoption value="three"&amp;gtThree&amp;lt/option&amp;gt&lt;br /&gt;                            &amp;lt/optgroup&amp;gt&lt;br /&gt;                            &amp;ltoptgroup label="Group 2"&amp;gt&lt;br /&gt;                                &amp;ltoption value="four"&amp;gtFour&amp;lt/option&amp;gt&lt;br /&gt;                                &amp;ltoption value="five"&amp;gtFive&amp;lt/option&amp;gt&lt;br /&gt;                                &amp;ltoption value="six"&amp;gtSix&amp;lt/option&amp;gt&lt;br /&gt;&lt;br /&gt;                            &amp;lt/optgroup&amp;gt&lt;br /&gt;                        &amp;lt/select&amp;gt&amp;lt/td&amp;gt&amp;lt/tr&amp;gt&lt;br /&gt;                        &amp;lttr&amp;gt&amp;lttd&amp;gtSingle:&amp;lt/td&amp;gt&amp;lttd&amp;gt&amp;ltselect name="Single"&amp;gt&lt;br /&gt;                            &amp;ltoption value="one" selected="selected"&amp;gtOne&amp;lt/option&amp;gt&lt;br /&gt;                            &amp;ltoption value="two"&amp;gtTwo&amp;lt/option&amp;gt&lt;br /&gt;                            &amp;ltoption value="three"&amp;gtThree&amp;lt/option&amp;gt&lt;br /&gt;                        &amp;lt/select&amp;gt&amp;lt/td&amp;gt&amp;lt/tr&amp;gt&lt;br /&gt;&lt;br /&gt;                        &amp;lttr&amp;gt&amp;lttd&amp;gtSingle2:&amp;lt/td&amp;gt&amp;lttd&amp;gt&amp;ltselect name="Single2"&amp;gt&lt;br /&gt;                            &amp;ltoptgroup label="Group 1"&amp;gt&lt;br /&gt;                                &amp;ltoption value="A" selected="selected"&amp;gtA&amp;lt/option&amp;gt&lt;br /&gt;                                &amp;ltoption value="B"&amp;gtB&amp;lt/option&amp;gt&lt;br /&gt;                                &amp;ltoption value="C"&amp;gtC&amp;lt/option&amp;gt&lt;br /&gt;                            &amp;lt/optgroup&amp;gt&lt;br /&gt;                            &amp;ltoptgroup label="Group 2"&amp;gt&lt;br /&gt;&lt;br /&gt;                                &amp;ltoption value="D"&amp;gtD&amp;lt/option&amp;gt&lt;br /&gt;                                &amp;ltoption value="E"&amp;gtE&amp;lt/option&amp;gt&lt;br /&gt;                                &amp;ltoption value="F"&amp;gtF&amp;lt/option&amp;gt&lt;br /&gt;                            &amp;lt/optgroup&amp;gt&lt;br /&gt;                        &amp;lt/select&amp;gt&amp;lt/td&amp;gt&amp;lt/tr&amp;gt&lt;br /&gt;                        &amp;lttr&amp;gt&amp;lttd&amp;gtCheck:&amp;lt/td&amp;gt&amp;lttd&amp;gt&lt;br /&gt;                            &amp;ltinput type="checkbox" name="Check" value="1" /&amp;gt&lt;br /&gt;&lt;br /&gt;                            &amp;ltinput type="checkbox" name="Check" value="2" /&amp;gt&lt;br /&gt;                            &amp;ltinput type="checkbox" name="Check" value="3" /&amp;gt&lt;br /&gt;                        &amp;lt/td&amp;gt&amp;lt/tr&amp;gt&lt;br /&gt;                        &amp;lttr&amp;gt&amp;lttd&amp;gtRadio:&amp;lt/td&amp;gt&amp;lttd&amp;gt&lt;br /&gt;                            &amp;ltinput type="radio" name="Radio" value="1" /&amp;gt&lt;br /&gt;                            &amp;ltinput type="radio" name="Radio" value="2" /&amp;gt&lt;br /&gt;                            &amp;ltinput type="radio" name="Radio" value="3" /&amp;gt&lt;br /&gt;                        &amp;lt/td&amp;gt&amp;lt/tr&amp;gt&lt;br /&gt;                        &amp;lttr&amp;gt&amp;lttd&amp;gtText:&amp;lt/td&amp;gt&amp;lttd&amp;gt&amp;lttextarea name="Text" rows="2" cols="20"&amp;gtThis is Form2&amp;lt/textarea&amp;gt&amp;lt/td&amp;gt&amp;lt/tr&amp;gt&lt;br /&gt;&lt;br /&gt;                        &amp;lt/table&amp;gt&lt;br /&gt;                        &amp;ltinput type="reset"   name="resetButton " value="Reset" /&amp;gt&lt;br /&gt;                        &amp;ltinput type="submit"  name="submitButton" value="Submit1" /&amp;gt&lt;br /&gt;                        &amp;ltinput type="image"   name="submitButton" value="Submit2" src="submit.gif" /&amp;gt&lt;br /&gt;                &amp;lt/div&amp;gt&amp;lt/form&amp;gt&lt;br /&gt;                &amp;lth1&amp;gtOutput Div (#output2):&amp;lt/h1&amp;gt&lt;br /&gt;                &amp;ltdiv id="output2"&amp;gtAJAX response will replace this content.&amp;lt/div&amp;gt&lt;br /&gt;            &amp;lt/div&amp;gt&lt;br /&gt;&lt;br /&gt;    &amp;lt/body&amp;gt&lt;br /&gt;&amp;lt/html&amp;gt&lt;br /&gt;&lt;br /&gt;dummy.jsp&lt;br /&gt;---------&lt;br /&gt;&amp;lt%-- &lt;br /&gt;    Document   : dummy&lt;br /&gt;    Created on : 19.?ub.2011, 09:30:16&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&amp;lt%&lt;br /&gt;out.print("Hello world");&lt;br /&gt;%&amp;gt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-7747892118362239276?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/7747892118362239276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/7747892118362239276'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/02/jq-forms-with-ajax-jsp2.html' title='JQ Forms with AJAX-JSP2'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-4333483642906719116</id><published>2011-02-20T00:12:00.001-08:00</published><updated>2011-02-20T00:14:28.197-08:00</updated><title type='text'>JQ Forms with AJAX-JSP1</title><content type='html'>This tutorial is based on the examples given at "jQuery Form Plugin" page.  I tried to remain as loyal as possible to the originals which belong to the official JQuery site.&lt;br /&gt;&lt;br /&gt;My contribution although not big is:&lt;br /&gt;1- I extracted the examples from the gorgious example frame of JQuery and made them simple easy to copy and use seperate examples.&lt;br /&gt;&lt;br /&gt;2- I changed the PHP AJAX calls to JSP AJAX calls.&lt;br /&gt;&lt;br /&gt;Kind regards.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This example demonstarates the use of ajaxForm() and pre- / post- submit callback.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sample1.jsp&lt;br /&gt;-----------&lt;br /&gt;&amp;lt%-- &lt;br /&gt;    Document   : sample1&lt;br /&gt;    Created on : 19.Şub.2011, 09:19:43 &lt;br /&gt;    Originally : belongs to "jQuery Form Plugin"&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lt%@page contentType="text/html" pageEncoding="UTF-8"%&amp;gt&lt;br /&gt;&amp;lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;   "http://www.w3.org/TR/html4/loose.dtd"&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lthtml&amp;gt&lt;br /&gt;    &amp;lthead&amp;gt&lt;br /&gt;        &amp;ltmeta http-equiv="Content-Type" content="text/html; charset=UTF-8"&amp;gt&lt;br /&gt;        &amp;lttitle&amp;gtJSP Page&amp;lt/title&amp;gt&lt;br /&gt;&lt;br /&gt;    &amp;ltscript type="text/javascript" src="jquery.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" src="jquery.form.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;&lt;br /&gt;    &amp;ltscript type="text/javascript"&amp;gt&lt;br /&gt;        // wait for the DOM to be loaded&lt;br /&gt;$(document).ready(function() {&lt;br /&gt;    var options = {&lt;br /&gt;        target:        '#output1',   // target element(s) to be updated with server response&lt;br /&gt;        beforeSubmit:  showRequest,  // pre-submit callback&lt;br /&gt;        success:       showResponse  // post-submit callback&lt;br /&gt;&lt;br /&gt;        // other available options:&lt;br /&gt;        //url:       url         // override for form's 'action' attribute&lt;br /&gt;        //type:      type        // 'get' or 'post', override for form's 'method' attribute&lt;br /&gt;        //dataType:  null        // 'xml', 'script', or 'json' (expected server response type)&lt;br /&gt;        //clearForm: true        // clear all form fields after successful submit&lt;br /&gt;        //resetForm: true        // reset the form after successful submit&lt;br /&gt;&lt;br /&gt;        // $.ajax options can be used here too, for example:&lt;br /&gt;        //timeout:   3000&lt;br /&gt;    };&lt;br /&gt;&lt;br /&gt;    // bind form using 'ajaxForm'&lt;br /&gt;    $('#myForm1').ajaxForm(options);&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;// pre-submit callback&lt;br /&gt;function showRequest(formData, jqForm, options) {&lt;br /&gt;    // formData is an array; here we use $.param to convert it to a string to display it&lt;br /&gt;    // but the form plugin does this for you automatically when it submits the data&lt;br /&gt;    var queryString = $.param(formData);&lt;br /&gt;&lt;br /&gt;    // jqForm is a jQuery object encapsulating the form element.  To access the&lt;br /&gt;    // DOM element for the form do this:&lt;br /&gt;    // var formElement = jqForm[0];&lt;br /&gt;&lt;br /&gt;    alert('About to submit: \n\n' + queryString);&lt;br /&gt;&lt;br /&gt;    // here we could return false to prevent the form from being submitted;&lt;br /&gt;    // returning anything other than false will allow the form submit to continue&lt;br /&gt;    return true;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// post-submit callback&lt;br /&gt;function showResponse(responseText, statusText, xhr, $form)  {&lt;br /&gt;    // for normal html responses, the first argument to the success callback&lt;br /&gt;    // is the XMLHttpRequest object's responseText property&lt;br /&gt;&lt;br /&gt;    // if the ajaxForm method was passed an Options Object with the dataType&lt;br /&gt;    // property set to 'xml' then the first argument to the success callback&lt;br /&gt;    // is the XMLHttpRequest object's responseXML property&lt;br /&gt;&lt;br /&gt;    // if the ajaxForm method was passed an Options Object with the dataType&lt;br /&gt;    // property set to 'json' then the first argument to the success callback&lt;br /&gt;    // is the json data object returned by the server&lt;br /&gt;&lt;br /&gt;    alert('status: ' + statusText + '\n\nresponseText: \n' + responseText +&lt;br /&gt;        '\n\nThe output div should have already been updated with the responseText.');&lt;br /&gt;}&lt;br /&gt;    &amp;lt/script&amp;gt&lt;br /&gt;    &amp;lt/head&amp;gt&lt;br /&gt;    &amp;ltbody&amp;gt&lt;br /&gt;            &amp;ltdiv id="sample1"&amp;gt&lt;br /&gt;                &amp;ltform id="myForm1" action="dummy.jsp" method="post"&amp;gt&amp;ltdiv&amp;gt&lt;br /&gt;                        &amp;ltinput type="hidden" name="Hidden" value="hiddenValue" /&amp;gt&lt;br /&gt;                        &amp;lttable&amp;gt&lt;br /&gt;                        &amp;lttr&amp;gt&amp;lttd&amp;gtName:&amp;lt/td&amp;gt&amp;lttd&amp;gt&amp;ltinput name="Name" type="text" value="MyName1" /&amp;gt&amp;lt/td&amp;gt&amp;lt/tr&amp;gt&lt;br /&gt;                        &amp;lttr&amp;gt&amp;lttd&amp;gtPassword:&amp;lt/td&amp;gt&amp;lttd&amp;gt&amp;ltinput name="Password" type="password" /&amp;gt&amp;lt/td&amp;gt&amp;lt/tr&amp;gt&lt;br /&gt;                        &amp;lttr&amp;gt&amp;lttd&amp;gtMultiple:&amp;lt/td&amp;gt&amp;lttd&amp;gt&amp;ltselect name="Multiple" multiple="multiple"&amp;gt&lt;br /&gt;&lt;br /&gt;                            &amp;ltoptgroup label="Group 1"&amp;gt&lt;br /&gt;                                &amp;ltoption value="one" selected="selected"&amp;gtOne&amp;lt/option&amp;gt&lt;br /&gt;                                &amp;ltoption value="two"&amp;gtTwo&amp;lt/option&amp;gt&lt;br /&gt;                                &amp;ltoption value="three"&amp;gtThree&amp;lt/option&amp;gt&lt;br /&gt;                            &amp;lt/optgroup&amp;gt&lt;br /&gt;                            &amp;ltoptgroup label="Group 2"&amp;gt&lt;br /&gt;                                &amp;ltoption value="four"&amp;gtFour&amp;lt/option&amp;gt&lt;br /&gt;&lt;br /&gt;                                &amp;ltoption value="five"&amp;gtFive&amp;lt/option&amp;gt&lt;br /&gt;                                &amp;ltoption value="six"&amp;gtSix&amp;lt/option&amp;gt&lt;br /&gt;                            &amp;lt/optgroup&amp;gt&lt;br /&gt;                        &amp;lt/select&amp;gt&amp;lt/td&amp;gt&amp;lt/tr&amp;gt&lt;br /&gt;                        &amp;lttr&amp;gt&amp;lttd&amp;gtSingle:&amp;lt/td&amp;gt&amp;lttd&amp;gt&amp;ltselect name="Single"&amp;gt&lt;br /&gt;                            &amp;ltoption value="one" selected="selected"&amp;gtOne&amp;lt/option&amp;gt&lt;br /&gt;                            &amp;ltoption value="two"&amp;gtTwo&amp;lt/option&amp;gt&lt;br /&gt;&lt;br /&gt;                            &amp;ltoption value="three"&amp;gtThree&amp;lt/option&amp;gt&lt;br /&gt;                        &amp;lt/select&amp;gt&amp;lt/td&amp;gt&amp;lt/tr&amp;gt&lt;br /&gt;                        &amp;lttr&amp;gt&amp;lttd&amp;gtSingle2:&amp;lt/td&amp;gt&amp;lttd&amp;gt&amp;ltselect name="Single2"&amp;gt&lt;br /&gt;                            &amp;ltoptgroup label="Group 1"&amp;gt&lt;br /&gt;                                &amp;ltoption value="A" selected="selected"&amp;gtA&amp;lt/option&amp;gt&lt;br /&gt;                                &amp;ltoption value="B"&amp;gtB&amp;lt/option&amp;gt&lt;br /&gt;                                &amp;ltoption value="C"&amp;gtC&amp;lt/option&amp;gt&lt;br /&gt;                            &amp;lt/optgroup&amp;gt&lt;br /&gt;                            &amp;ltoptgroup label="Group 2"&amp;gt&lt;br /&gt;                                &amp;ltoption value="D"&amp;gtD&amp;lt/option&amp;gt&lt;br /&gt;                                &amp;ltoption value="E"&amp;gtE&amp;lt/option&amp;gt&lt;br /&gt;                                &amp;ltoption value="F"&amp;gtF&amp;lt/option&amp;gt&lt;br /&gt;                            &amp;lt/optgroup&amp;gt&lt;br /&gt;                        &amp;lt/select&amp;gt&amp;lt/td&amp;gt&amp;lt/tr&amp;gt&lt;br /&gt;&lt;br /&gt;                        &amp;lttr&amp;gt&amp;lttd&amp;gtCheck:&amp;lt/td&amp;gt&amp;lttd&amp;gt&lt;br /&gt;                            &amp;ltinput type="checkbox" name="Check" value="1" /&amp;gt&lt;br /&gt;                            &amp;ltinput type="checkbox" name="Check" value="2" /&amp;gt&lt;br /&gt;                            &amp;ltinput type="checkbox" name="Check" value="3" /&amp;gt&lt;br /&gt;                        &amp;lt/td&amp;gt&amp;lt/tr&amp;gt&lt;br /&gt;                        &amp;lttr&amp;gt&amp;lttd&amp;gtRadio:&amp;lt/td&amp;gt&amp;lttd&amp;gt&lt;br /&gt;                            &amp;ltinput type="radio" name="Radio" value="1" /&amp;gt&lt;br /&gt;                            &amp;ltinput type="radio" name="Radio" value="2" /&amp;gt&lt;br /&gt;&lt;br /&gt;                            &amp;ltinput type="radio" name="Radio" value="3" /&amp;gt&lt;br /&gt;                        &amp;lt/td&amp;gt&amp;lt/tr&amp;gt&lt;br /&gt;                        &amp;lttr&amp;gt&amp;lttd&amp;gtText:&amp;lt/td&amp;gt&amp;lttd&amp;gt&amp;lttextarea name="Text" rows="2" cols="20"&amp;gtThis is Form1&amp;lt/textarea&amp;gt&amp;lt/td&amp;gt&amp;lt/tr&amp;gt&lt;br /&gt;                        &amp;lt/table&amp;gt&lt;br /&gt;                        &amp;ltinput type="reset"   name="resetButton " value="Reset" /&amp;gt&lt;br /&gt;                        &amp;ltinput type="submit"  name="submitButton" value="Submit1" /&amp;gt&lt;br /&gt;                        &amp;ltinput type="image"   name="submitButton" value="Submit2" src="submit.gif" /&amp;gt&lt;br /&gt;                        &amp;ltinput type="image"   name="submitButton" value="Submit3" src="submit.gif" /&amp;gt&lt;br /&gt;                        &amp;ltinput type="image"   name="submitButton" value="Submit4" src="submit.gif" /&amp;gt&lt;br /&gt;   &amp;ltbutton type="submit" name="submitButton" value="Submit5"&amp;gt&amp;ltspan&amp;gtsubmit 5&amp;lt/span&amp;gt&amp;lt/button&amp;gt&lt;br /&gt;                &amp;lt/div&amp;gt&amp;lt/form&amp;gt&lt;br /&gt;                &amp;lth1&amp;gtOutput Div (#output1):&amp;lt/h1&amp;gt&lt;br /&gt;                &amp;ltdiv id="output1"&amp;gtAJAX response will replace this content.&amp;lt/div&amp;gt&lt;br /&gt;            &amp;lt/div&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt/body&amp;gt&lt;br /&gt;&amp;lt/html&amp;gt&lt;br /&gt;&lt;br /&gt;dummy.jsp&lt;br /&gt;---------&lt;br /&gt;&amp;lt%-- &lt;br /&gt;    Document   : dummy&lt;br /&gt;    Created on : 19.?ub.2011, 09:30:16&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&amp;lt%&lt;br /&gt;out.print("Hello world");&lt;br /&gt;%&amp;gt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-4333483642906719116?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/4333483642906719116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/4333483642906719116'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/02/jq-forms-with-ajax-jsp1.html' title='JQ Forms with AJAX-JSP1'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-7099861258016703050</id><published>2011-02-18T07:25:00.000-08:00</published><updated>2011-02-18T07:26:38.150-08:00</updated><title type='text'>JQ datatable pipeline largedata with AJAX</title><content type='html'>JQuery datatable how to pipeline largedata with AJAX and JSP&lt;br /&gt;&lt;br /&gt;My work depends on "DataTables server-side processing with &lt;br /&gt;pipelining example " from the official JQuery side.  The&lt;br /&gt;difference are:&lt;br /&gt;&lt;br /&gt;1.  The original example's AJAX works with PHP where as mine works&lt;br /&gt;with JSP.&lt;br /&gt;2.  I corrected a paging problem which I do not know why it&lt;br /&gt;happened to me or whether the original also has it.  The problem was:&lt;br /&gt;Although it did not come to the end of the data, it disabled the &lt;br /&gt;further arrow &amp;gt button.  So, I could not reach the data further than&lt;br /&gt;the data that had been read at the first moment.  I figured out that if&lt;br /&gt;I change the TotalDisplayRecords the datatable behaves as required,&lt;br /&gt;including the page size and sort change cases.&lt;br /&gt;&lt;br /&gt;I added:&lt;br /&gt;&lt;br /&gt;if ((oCache.iDisplayStart+ oCache.iDisplayLength &amp;lt json.iTotalRecords) &amp;&amp;&lt;br /&gt;    (oCache.iCacheUpper+ oCache.iDisplayLength &amp;lt json.iTotalRecords))&lt;br /&gt;         json.iTotalDisplayRecords=oCache.iCacheUpper+oCache.iDisplayLength;&lt;br /&gt; else&lt;br /&gt;                json.iTotalDisplayRecords = json.iTotalRecords;&lt;br /&gt;&lt;br /&gt;The complete and running code follws:&lt;br /&gt;&lt;br /&gt;serverSideJQdtARS_5.jsp&lt;br /&gt;-----------------------&lt;br /&gt;&lt;br /&gt;&amp;lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&amp;gt&lt;br /&gt;&amp;lthtml&amp;gt&lt;br /&gt;    &amp;lthead&amp;gt&lt;br /&gt;        &amp;ltmeta http-equiv="content-type" content="text/html; charset=utf-8" /&amp;gt&lt;br /&gt;    &amp;ltlink rel="shortcut icon" type="image/ico" href="DataTables-1.7.5/media/images/favicon.ico" /&amp;gt&lt;br /&gt;&lt;br /&gt;    &amp;lttitle&amp;gtDataTables example&amp;lt/title&amp;gt&lt;br /&gt;    &amp;ltstyle type="text/css" title="currentStyle"&amp;gt&lt;br /&gt;        @import "DataTables-1.7.5/media/css/demo_page.css";&lt;br /&gt;        @import "DataTables-1.7.5/media/css/demo_table.css";&lt;br /&gt;    &amp;lt/style&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" language="javascript" src="DataTables-1.7.5/media/js/jquery.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" language="javascript" src="DataTables-1.7.5/media/js/jquery.dataTables.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" charset="utf-8"&amp;gt&lt;br /&gt;        var oCache = {&lt;br /&gt;    iCacheLower: -1&lt;br /&gt;   };&lt;br /&gt;&lt;br /&gt;   function fnSetKey( aoData, sKey, mValue )&lt;br /&gt;   {&lt;br /&gt;    for ( var i=0, iLen=aoData.length ; i&amp;ltiLen ; i++ )&lt;br /&gt;    {&lt;br /&gt;     if ( aoData[i].name == sKey )&lt;br /&gt;     {&lt;br /&gt;      aoData[i].value = mValue;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   function fnGetKey( aoData, sKey )&lt;br /&gt;   {&lt;br /&gt;    for ( var i=0, iLen=aoData.length ; i&amp;ltiLen ; i++ )&lt;br /&gt;    {&lt;br /&gt;     if ( aoData[i].name == sKey )&lt;br /&gt;     {&lt;br /&gt;      return aoData[i].value;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;    return null;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   function fnDataTablesPipeline ( sSource, aoData, fnCallback ) {&lt;br /&gt;                            //alert("fnDataTablesPipeline");&lt;br /&gt;    var iPipe = 2; /* Ajust the pipe size */&lt;br /&gt;&lt;br /&gt;    var bNeedServer = false;&lt;br /&gt;    var sEcho = fnGetKey(aoData, "sEcho");&lt;br /&gt;    var iRequestStart = fnGetKey(aoData, "iDisplayStart");&lt;br /&gt;    var iRequestLength = fnGetKey(aoData, "iDisplayLength");&lt;br /&gt;    var iRequestEnd = iRequestStart + iRequestLength;&lt;br /&gt;                        //alert("iRequestStart="+iRequestStart+"iRequestLength="+iRequestLength);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    oCache.iDisplayStart = iRequestStart;&lt;br /&gt;&lt;br /&gt;    /* outside pipeline? */&lt;br /&gt;    if ( oCache.iCacheLower &amp;lt 0 || iRequestStart &amp;lt oCache.iCacheLower || iRequestEnd + iRequestLength*iPipe &amp;gt oCache.iCacheUpper )&lt;br /&gt;    {&lt;br /&gt;     bNeedServer = true;&lt;br /&gt;    }&lt;br /&gt;                                //alert(bNeedServer);&lt;br /&gt;    /* sorting etc changed? */&lt;br /&gt;    if ( oCache.lastRequest &amp;&amp; !bNeedServer )&lt;br /&gt;    {&lt;br /&gt;     for( var i=0, iLen=aoData.length ; i&amp;ltiLen ; i++ )&lt;br /&gt;     {&lt;br /&gt;      if ( aoData[i].name != "iDisplayStart" &amp;&amp; aoData[i].name != "iDisplayLength" &amp;&amp; aoData[i].name != "sEcho" )&lt;br /&gt;      {&lt;br /&gt;       if ( aoData[i].value != oCache.lastRequest[i].value )&lt;br /&gt;       {&lt;br /&gt;        bNeedServer = true;&lt;br /&gt;        break;&lt;br /&gt;       }&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /* Store the request for checking next time around */&lt;br /&gt;    oCache.lastRequest = aoData.slice();&lt;br /&gt;&lt;br /&gt;    if ( bNeedServer )&lt;br /&gt;    {&lt;br /&gt;     if ( iRequestStart &amp;lt oCache.iCacheLower )&lt;br /&gt;     {&lt;br /&gt;      iRequestStart = iRequestStart - (iRequestLength*(iPipe-1));&lt;br /&gt;      if ( iRequestStart &amp;lt 0 )&lt;br /&gt;      {&lt;br /&gt;       iRequestStart = 0;&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     oCache.iCacheLower = iRequestStart;&lt;br /&gt;     oCache.iCacheUpper = iRequestStart + (iRequestLength * iPipe);&lt;br /&gt;     oCache.iDisplayLength = fnGetKey( aoData, "iDisplayLength" );&lt;br /&gt;     fnSetKey( aoData, "iDisplayStart", iRequestStart );&lt;br /&gt;     fnSetKey( aoData, "iDisplayLength", iRequestLength*iPipe );&lt;br /&gt;//alert("oCache.iCacheLower="+oCache.iCacheLower+"oCache.iCacheUpper="+oCache.iCacheUpper);&lt;br /&gt;&lt;br /&gt;     $.getJSON( sSource, aoData, function (json) {&lt;br /&gt;      /* Callback processing */&lt;br /&gt;      oCache.lastJson = jQuery.extend(true, {}, json);&lt;br /&gt;&lt;br /&gt;      if ( oCache.iCacheLower != oCache.iDisplayStart )&lt;br /&gt;      {&lt;br /&gt;       json.aaData.splice( 0, oCache.iDisplayStart-oCache.iCacheLower );&lt;br /&gt;      }&lt;br /&gt;      json.aaData.splice( oCache.iDisplayLength, json.aaData.length );&lt;br /&gt;                                                jsonARS = json;&lt;br /&gt;&lt;br /&gt;                                             //   if (oCache.iCacheUpper+ oCache.iDisplayLength &amp;lt json.iTotalRecords)&lt;br /&gt;                                             //       json.iTotalDisplayRecords=oCache.iCacheUpper+oCache.iDisplayLength;&lt;br /&gt;                                                if ((oCache.iDisplayStart+ oCache.iDisplayLength &amp;lt json.iTotalRecords) &amp;&amp;&lt;br /&gt;                                                    (oCache.iCacheUpper+ oCache.iDisplayLength &amp;lt json.iTotalRecords))&lt;br /&gt;                                                    json.iTotalDisplayRecords=oCache.iCacheUpper+oCache.iDisplayLength;&lt;br /&gt;                                                else&lt;br /&gt;                                                    json.iTotalDisplayRecords = json.iTotalRecords;&lt;br /&gt;                                                fnCallback(json)&lt;br /&gt;     } );&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;     json = jQuery.extend(true, {}, oCache.lastJson);&lt;br /&gt;     json.sEcho = sEcho; /* Update the echo for each response */&lt;br /&gt;     json.aaData.splice( 0, iRequestStart-oCache.iCacheLower );&lt;br /&gt;     json.aaData.splice( iRequestLength, json.aaData.length );&lt;br /&gt;                                        jsonARS = json;&lt;br /&gt;                                        fnCallback(json);&lt;br /&gt;     return;&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;        $(document).ready(function() {&lt;br /&gt;            oTable = $('#example').dataTable( {&lt;br /&gt;                "bProcessing": true,&lt;br /&gt;                "bServerSide": true,&lt;br /&gt;//                "sPaginationType": "full_numbers",&lt;br /&gt;                    "sPaginationType": "two_button",&lt;br /&gt;                "aaSorting": [[0, 'desc'], [1, 'desc']],&lt;br /&gt;&lt;br /&gt;                "sAjaxSource": "./server_processing.jsp",&lt;br /&gt;                "fnServerData": fnDataTablesPipeline&lt;br /&gt;            } );&lt;br /&gt;        } );&lt;br /&gt;        &lt;br /&gt;&lt;br /&gt;    &amp;lt/script&amp;gt&lt;br /&gt;&amp;lt/head&amp;gt&lt;br /&gt;&amp;ltbody id="dt_example"&amp;gt&lt;br /&gt;&amp;ltdiv id="container"&amp;gt&lt;br /&gt;    &amp;ltdiv class="full_width big"&amp;gt&lt;br /&gt;        &amp;lti&amp;gtDataTables&amp;lt/i&amp;gt server-side processing  example&lt;br /&gt;    &amp;lt/div&amp;gt&lt;br /&gt;    &amp;ltH1&amp;gtLive example&amp;lt/H1&amp;gt&lt;br /&gt;    &amp;ltDIV id=dynamic&amp;gt&lt;br /&gt;        &amp;ltTABLE id=example class=display border=0 cellSpacing=0 cellPadding=0&amp;gt&lt;br /&gt;            &amp;ltTHEAD&amp;gt&lt;br /&gt;                &amp;ltTR&amp;gt&lt;br /&gt;                    &amp;ltTH width="20%"&amp;gtRendering engine&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH width="25%"&amp;gtBrowser&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH width="25%"&amp;gtPlatform(s)&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH width="15%"&amp;gtEngine version&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH width="15%"&amp;gtCSS grade&amp;lt/TH&amp;gt&amp;lt/TR&amp;gt&amp;lt/THEAD&amp;gt&lt;br /&gt;            &amp;ltTBODY&amp;gt&lt;br /&gt;                &amp;ltTR&amp;gt&lt;br /&gt;                    &amp;ltTD class=dataTables_empty colSpan=5&amp;gtLoading data from server&lt;br /&gt;                    &amp;lt/TD&amp;gt&lt;br /&gt;                &amp;lt/TR&amp;gt&lt;br /&gt;            &amp;lt/TBODY&amp;gt&lt;br /&gt;            &amp;ltTFOOT&amp;gt&lt;br /&gt;                &amp;ltTR&amp;gt&lt;br /&gt;                    &amp;ltTH&amp;gtRendering engine&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH&amp;gtBrowser&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH&amp;gtPlatform(s)&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH&amp;gtEngine version&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH&amp;gtCSS grade&amp;lt/TH&amp;gt&lt;br /&gt;                &amp;lt/TR&amp;gt&lt;br /&gt;            &amp;lt/TFOOT&amp;gt&lt;br /&gt;        &amp;lt/TABLE&amp;gt&lt;br /&gt;    &amp;lt/DIV&amp;gt&lt;br /&gt;&amp;lt/div&amp;gt&lt;br /&gt;&amp;lt/body&amp;gt&lt;br /&gt;&amp;lt/html&amp;gt&lt;br /&gt;&lt;br /&gt;server_processing.jsp&lt;br /&gt;---------------------&lt;br /&gt;&lt;br /&gt;&amp;lt%--&lt;br /&gt;    Document   : server_processingARS.jsp&lt;br /&gt;    Created on : 04.?ub.2011, 17:53:53&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lt%@page import="java.sql.Connection"%&amp;gt&lt;br /&gt;&amp;lt%@page import="atg.taglib.json.util.*"%&amp;gt&lt;br /&gt;&amp;lt%@page import= "java.util.*"%&amp;gt&lt;br /&gt;&amp;lt%@page import= "java.sql.*"%&amp;gt&lt;br /&gt;&amp;lt%@page import= "org.apache.commons.lang.*"%&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt%&lt;br /&gt;            class Utilities {&lt;br /&gt;&lt;br /&gt;                Utilities() {&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                ;&lt;br /&gt;&lt;br /&gt;                String escape_string(String input) {&lt;br /&gt;                    return StringEscapeUtils.escapeHtml(input);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;%&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lt%&lt;br /&gt;            System.out.println("test arsssssssssssssssssssssss");&lt;br /&gt;            Utilities util = new Utilities();&lt;br /&gt;            /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *&lt;br /&gt;             * Easy set variables&lt;br /&gt;             */&lt;br /&gt;&lt;br /&gt;            /* Array of database columns which should be read and sent back to DataTables. Use a space where&lt;br /&gt;             * you want to insert a non-database field (for example a counter or static image)&lt;br /&gt;             */&lt;br /&gt;            String[] aColumns = {"engine", "browser", "platform", "version", "grade"};&lt;br /&gt;&lt;br /&gt;            /* Indexed column (used for fast and accurate table cardinality) */&lt;br /&gt;            String sIndexColumn = "id";&lt;br /&gt;&lt;br /&gt;            /* DB table to use */&lt;br /&gt;            String sTable = "ajax";&lt;br /&gt;            /* Database connection information */&lt;br /&gt;            String user = "root";&lt;br /&gt;            String password = "3391309";&lt;br /&gt;            String db = "jquerydb";&lt;br /&gt;            String server = "localhost";&lt;br /&gt;&lt;br /&gt;            /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *&lt;br /&gt;             * If you just want to use the basic configuration for DataTables with PHP server-side, there is&lt;br /&gt;             * no need to edit below this line&lt;br /&gt;             */&lt;br /&gt;&lt;br /&gt;            /*&lt;br /&gt;             * MySQL connection&lt;br /&gt;             */&lt;br /&gt;&lt;br /&gt;            Connection conn = null;&lt;br /&gt;&lt;br /&gt;            try {&lt;br /&gt;                Class.forName("com.mysql.jdbc.Driver").newInstance();&lt;br /&gt;                conn = DriverManager.getConnection("jdbc:mysql://localhost/" + db,&lt;br /&gt;                        user, password);&lt;br /&gt;&lt;br /&gt;                if (!conn.isClosed()) {&lt;br /&gt;                    System.out.println("Successfully connected to "&lt;br /&gt;                            + "MySQL server using TCP/IP...");&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;            } catch (Exception e) {&lt;br /&gt;                System.err.println("Exception: " + e.getMessage());&lt;br /&gt;            } finally {&lt;br /&gt;//                try {&lt;br /&gt;//                    if (conn != null) {&lt;br /&gt;//                        //conn.close();&lt;br /&gt;//                    }&lt;br /&gt;//                } catch (SQLException e) {&lt;br /&gt;//                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;                /*&lt;br /&gt;                 * Paging&lt;br /&gt;                 */&lt;br /&gt;                String sLimit = "";&lt;br /&gt;                if (request.getParameter("iDisplayStart") != null&lt;br /&gt;                        &amp;&amp; request.getParameter("iDisplayLength") != "-1") {&lt;br /&gt;                    sLimit = "LIMIT " + util.escape_string(request.getParameter("iDisplayStart")) +&lt;br /&gt;                            ", " + util.escape_string(request.getParameter("iDisplayLength"));&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                /*&lt;br /&gt;                 * Ordering&lt;br /&gt;                 */&lt;br /&gt;                String sOrder = "";&lt;br /&gt;               &lt;br /&gt;                if (request.getParameter("iSortCol_0") != null) {&lt;br /&gt;                    sOrder = "ORDER BY  ";&lt;br /&gt;&lt;br /&gt;                    for (int i = 0; i &amp;lt Integer.valueOf(request.getParameter("iSortingCols")); i++) {&lt;br /&gt;                        if (request.getParameter("bSortable_" + Integer.valueOf(request.getParameter("iSortCol_" + String.valueOf(i)))).equals("true")) {&lt;br /&gt;                            sOrder += aColumns[Integer.valueOf(request.getParameter("iSortCol_" + String.valueOf(i)))] + " "&lt;br /&gt;                                    + util.escape_string(request.getParameter("sSortDir_" + String.valueOf(i))) + ", ";&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;&lt;br /&gt;                    sOrder = sOrder.substring(0, sOrder.length()-2);&lt;br /&gt;                    if (sOrder.equals("ORDER BY")) {&lt;br /&gt;                        sOrder = "";&lt;br /&gt;                    }&lt;br /&gt;                    sOrder += " ";&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                /*&lt;br /&gt;                 * Filtering&lt;br /&gt;                 * NOTE this does not match the built-in DataTables filtering which does it&lt;br /&gt;                 * word by word on any field. It's possible to do here, but concerned about efficiency&lt;br /&gt;                 * on very large tables, and MySQL's regex functionality is very limited&lt;br /&gt;                 */&lt;br /&gt;                String sWhere = "";&lt;br /&gt;                 System.out.println("sSearch="+ request.getParameter("sSearch"));&lt;br /&gt;                 &lt;br /&gt;                if (request.getParameter("sSearch") != "") {&lt;br /&gt;                    sWhere = "WHERE (";&lt;br /&gt;                    for (int i = 0; i &amp;lt aColumns.length; i++) {&lt;br /&gt;                        sWhere += aColumns[i] + " LIKE '%" + util.escape_string(request.getParameter("sSearch")) + "%' OR ";&lt;br /&gt;                    }&lt;br /&gt;                    sWhere = sWhere.substring(0, sWhere.length()-3);&lt;br /&gt;                    sWhere += ')';&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                /* Individual column filtering */&lt;br /&gt;&lt;br /&gt;                for (int i = 0; i &amp;lt aColumns.length; i++) {&lt;br /&gt;                    if (request.getParameter("bSearchable_" + String.valueOf(i)) == "true"&lt;br /&gt;                            &amp;&amp; request.getParameter("sSearch_" + String.valueOf(i)) != "") {&lt;br /&gt;                        if (sWhere == "") {&lt;br /&gt;                            sWhere = "WHERE ";&lt;br /&gt;                        } else {&lt;br /&gt;                            sWhere += " AND ";&lt;br /&gt;                        }&lt;br /&gt;                        sWhere += aColumns[i] + " LIKE '%" + util.escape_string(request.getParameter("sSearch_" + String.valueOf(i))) + "%' ";&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                /*&lt;br /&gt;                 * SQL queries&lt;br /&gt;                 * Get data to display&lt;br /&gt;                 */&lt;br /&gt;                String strColumnNames = "";&lt;br /&gt;&lt;br /&gt;                for (int i=0;i &amp;lt aColumns.length;i++){&lt;br /&gt;                    strColumnNames = strColumnNames + ", "+ aColumns[i];&lt;br /&gt;                    }&lt;br /&gt;                strColumnNames = strColumnNames.substring(1);&lt;br /&gt;&lt;br /&gt;                String sQuery = "SELECT "&lt;br /&gt;                        + strColumnNames&lt;br /&gt;                        + " FROM " + sTable&lt;br /&gt;                        + " "&lt;br /&gt;                        + sWhere&lt;br /&gt;                        + sOrder&lt;br /&gt;                        + sLimit;&lt;br /&gt;&lt;br /&gt;    System.out.println("sQuery="+sQuery);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                Statement s = conn.createStatement();&lt;br /&gt;                s.executeQuery(sQuery);&lt;br /&gt;&lt;br /&gt;                /* Data set length after filtering */&lt;br /&gt;                ResultSet rs = s.getResultSet();&lt;br /&gt;                int count = 0;&lt;br /&gt;                while (rs.next()) {&lt;br /&gt;                    String engineCol = rs.getString("engine");&lt;br /&gt;                    System.out.println("engine = " + engineCol);&lt;br /&gt;                    ++count;&lt;br /&gt;                }&lt;br /&gt;                int iFilteredTotal = count;&lt;br /&gt;                rs.close();&lt;br /&gt;                s.close();&lt;br /&gt;                System.out.println("Selected count="+iFilteredTotal);&lt;br /&gt;&lt;br /&gt;                /* Total data set length */&lt;br /&gt;                s = conn.createStatement();&lt;br /&gt;                String sQuery2 = " SELECT COUNT(*) AS rowcount FROM " + sTable;&lt;br /&gt;                rs = s.executeQuery(sQuery2);&lt;br /&gt;                rs.next();&lt;br /&gt;                int iTotal = rs.getInt("rowcount");&lt;br /&gt;                rs.close();&lt;br /&gt;                s.close();&lt;br /&gt;                System.out.println("Total count="+iTotal);&lt;br /&gt;&lt;br /&gt;         /*&lt;br /&gt;  * Output&lt;br /&gt;  */&lt;br /&gt;  String output = "{" +&lt;br /&gt;  "\"sEcho\" : "+ request.getParameter("sEcho")+ ", " +&lt;br /&gt;  "\"iTotalRecords\" : " +  String.valueOf(iTotal) + ", " +&lt;br /&gt;  "\"iTotalDisplayRecords\" : " + String.valueOf(iFilteredTotal) + ", " +&lt;br /&gt; //              "\"iDisplayLength\" : " + "10" + ", " +&lt;br /&gt; //               "\"iDisplayStart\" : " + "10" + ", " +&lt;br /&gt;  "\"aaData\" : [" + "";&lt;br /&gt;&lt;br /&gt;         Object[][] aaData= new Object[iFilteredTotal][5];&lt;br /&gt;&lt;br /&gt;               s = conn.createStatement();&lt;br /&gt;                s.executeQuery(sQuery);&lt;br /&gt;                rs = s.getResultSet();&lt;br /&gt;&lt;br /&gt;                int rowNum=0;&lt;br /&gt; while ( rs.next() )&lt;br /&gt; {&lt;br /&gt;            System.out.println("rowNum="+ rowNum);&lt;br /&gt;            //if (rowNum &amp;gt 3) break;&lt;br /&gt;                Object[] aRow = {"","","",0,""};&lt;br /&gt;  Object[] row = {"","","",0,""};&lt;br /&gt;&lt;br /&gt;  for ( int i=0 ; i&amp;ltaColumns.length ; i++ )&lt;br /&gt;  {&lt;br /&gt;                    System.out.println("i="+ i +" colVal="+ rs.getString( aColumns[i]));&lt;br /&gt;   if ( aColumns[i] == "version" )&lt;br /&gt;   {&lt;br /&gt;    /* Special output formatting for 'version' column */&lt;br /&gt;    row[i] = (rs.getInt( aColumns[i] )==0) ? "-" : rs.getInt(aColumns[i]);&lt;br /&gt;   }&lt;br /&gt;   else if ( aColumns[i] != " " )&lt;br /&gt;   {&lt;br /&gt;    /* General output */&lt;br /&gt;    row[i] = rs.getString( aColumns[i]);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  aaData[rowNum] = row;&lt;br /&gt;                System.out.println("rowNum("+rowNum +") row[0]="+row[0].toString());&lt;br /&gt;                rowNum++;&lt;br /&gt; }&lt;br /&gt;                rs.close();&lt;br /&gt;                s.close();&lt;br /&gt;&lt;br /&gt;               String valRow = " [ ";&lt;br /&gt;                for (int rowN = 0; rowN &amp;lt iFilteredTotal; rowN++) {&lt;br /&gt;                    System.out.println("rowN="+rowN);&lt;br /&gt;                    for (int colN = 0; colN &amp;lt aColumns.length; colN++) {&lt;br /&gt;                        System.out.println("      colN="+colN);&lt;br /&gt;                        if (aColumns[colN] == "version" )&lt;br /&gt;                            valRow = valRow + " " + aaData[rowN][colN].toString() + " , ";&lt;br /&gt;                        else if ( aColumns[colN] != " " )&lt;br /&gt;                             valRow = valRow + "\"" + aaData[rowN][colN].toString() + "\" , ";&lt;br /&gt;                    }&lt;br /&gt;                    valRow = valRow.substring(0, valRow.length()-2);&lt;br /&gt;                    valRow = valRow + " ], ";&lt;br /&gt;                    System.out.println("valRow="+valRow);&lt;br /&gt;                    output = output + valRow;&lt;br /&gt;                    valRow = " [ ";&lt;br /&gt;                }&lt;br /&gt;               System.out.println("output="+output);&lt;br /&gt;                output = output.substring(0, output.length()-2);&lt;br /&gt;                output = output + " ] }";&lt;br /&gt;&lt;br /&gt;                out.print(output);&lt;br /&gt;%&amp;gt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-7099861258016703050?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/7099861258016703050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/7099861258016703050'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/02/jq-datatable-pipeline-largedata-with.html' title='JQ datatable pipeline largedata with AJAX'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-6945670354484472960</id><published>2011-02-16T00:19:00.000-08:00</published><updated>2011-02-16T00:27:23.383-08:00</updated><title type='text'>JQ AJAX server processing with PAGING</title><content type='html'>This is the continuation of the previous tutorial on serverSide JQuery DataTable with JSP tutorial.  After you finish this tutorial you may have noticed that the paging buttons(two_button) did not work.  If studied one can see that the original server_processing.php example had the same discrepancy.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-IfcyAd03SpE/TVuJA5GRm_I/AAAAAAAAAZM/guadMYvMv6Q/s1600/serverSidepagingJQdtARS1.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 215px;" src="http://2.bp.blogspot.com/-IfcyAd03SpE/TVuJA5GRm_I/AAAAAAAAAZM/guadMYvMv6Q/s400/serverSidepagingJQdtARS1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5574199612221266930" /&gt;&lt;/a&gt;&lt;br /&gt;I believe Allan JARDINE has done a tremendous contribution and deserves a decent return anyway.  The mentioned example is basicly an AJAX server processing example and it is not a paging example.  So, it may not be adequate to name it as a discrepancy.  Nevertheless, it has to be fixed to continue our endevour.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-GJjHgWVmb3c/TVuJMbEDOKI/AAAAAAAAAZU/RD7U_VOrE0s/s1600/serverSidepagingJQdtARS2.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 163px;" src="http://2.bp.blogspot.com/-GJjHgWVmb3c/TVuJMbEDOKI/AAAAAAAAAZU/RD7U_VOrE0s/s400/serverSidepagingJQdtARS2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5574199810317301922" /&gt;&lt;/a&gt;&lt;br /&gt;Thee is a simple solution to this which requires a better understanding of server processing with a 'json' object and event handling.&lt;br /&gt;&lt;br /&gt;Define a new(global) json variable above the  $(document).ready function:&lt;br /&gt;...&lt;br /&gt;json jsonARS;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Get the json variable returned from the server and put it in the global jsonARS var.&lt;br /&gt;&lt;br /&gt;Place in the $(document).ready function:&lt;br /&gt;...&lt;br /&gt;"sAjaxSource": "./server_processing.jsp",&lt;br /&gt;                "fnServerData": function ( sSource, aoData, fnCallback ) {&lt;br /&gt;      /* Add some extra data to the sender */&lt;br /&gt;      aoData.push( { "name": "more_data", "value": "my_value" } );&lt;br /&gt;      $.getJSON( sSource, aoData, function (json) {&lt;br /&gt;       /* Do whatever additional processing you want on the callback, then tell DataTables */&lt;br /&gt;       //alert("OK");&lt;br /&gt;                                                        jsonARS = json;&lt;br /&gt;                                                        fnCallback(json);&lt;br /&gt;      } );&lt;br /&gt;     }&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Handle the two_button bttons with:&lt;br /&gt;...&lt;br /&gt;$('#example_prev').click( function() {&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;get the osettings structure pointer to acces the _iDisplayLength&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt; var oSettings = oTable.fnSettings();&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;use jsonARS to access the jsonARS.iTotalDisplayRecords&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Please note that, I handle the below cases in event processing:&lt;br /&gt;1- Do not go forward over the end of the total data.&lt;br /&gt;2- Do not go backwards before the beginning of the total data.&lt;br /&gt;3- Do not go further than the end of the displayed(selected) data.&lt;br /&gt;etc.&lt;br /&gt;&lt;br /&gt;The complete working code follows.&lt;br /&gt;&lt;br /&gt;Cheers.&lt;br /&gt;&lt;br /&gt;Ali R+&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-ZLz-5d8DJrs/TVuJnDUEmQI/AAAAAAAAAZc/k7z8ypB-prA/s1600/serverSidepagingJQdtARS3.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 101px;" src="http://2.bp.blogspot.com/-ZLz-5d8DJrs/TVuJnDUEmQI/AAAAAAAAAZc/k7z8ypB-prA/s400/serverSidepagingJQdtARS3.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5574200267798518018" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;serverSideJQdtARS_3.jsp&lt;br /&gt;-----------------------&lt;br /&gt;&amp;lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&amp;gt&lt;br /&gt;&amp;lthtml&amp;gt&lt;br /&gt;    &amp;lthead&amp;gt&lt;br /&gt;        &amp;ltmeta http-equiv="content-type" content="text/html; charset=utf-8" /&amp;gt&lt;br /&gt;    &amp;ltlink rel="shortcut icon" type="image/ico" href="DataTables-1.7.5/media/images/favicon.ico" /&amp;gt&lt;br /&gt;&lt;br /&gt;    &amp;lttitle&amp;gtDataTables example&amp;lt/title&amp;gt&lt;br /&gt;    &amp;ltstyle type="text/css" title="currentStyle"&amp;gt&lt;br /&gt;        @import "DataTables-1.7.5/media/css/demo_page.css";&lt;br /&gt;        @import "DataTables-1.7.5/media/css/demo_table.css";&lt;br /&gt;    &amp;lt/style&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" language="javascript" src="DataTables-1.7.5/media/js/jquery.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" language="javascript" src="DataTables-1.7.5/media/js/jquery.dataTables.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" charset="utf-8"&amp;gt&lt;br /&gt;        var jsonARS;&lt;br /&gt;        $(document).ready(function() {&lt;br /&gt;            oTable = $('#example').dataTable( {&lt;br /&gt;                "bProcessing": true,&lt;br /&gt;                "bServerSide": true,&lt;br /&gt;//                "sPaginationType": "full_numbers",&lt;br /&gt;                    "sPaginationType": "two_button",&lt;br /&gt;                "aaSorting": [[0, 'desc'], [1, 'desc']],&lt;br /&gt;&lt;br /&gt;                "sAjaxSource": "./server_processing.jsp",&lt;br /&gt;                "fnServerData": function ( sSource, aoData, fnCallback ) {&lt;br /&gt;      /* Add some extra data to the sender */&lt;br /&gt;      aoData.push( { "name": "more_data", "value": "my_value" } );&lt;br /&gt;      $.getJSON( sSource, aoData, function (json) {&lt;br /&gt;       /* Do whatever additional processing you want on the callback, then tell DataTables */&lt;br /&gt;       //alert("OK");&lt;br /&gt;                                                        jsonARS = json;&lt;br /&gt;                                                        fnCallback(json);&lt;br /&gt;      } );&lt;br /&gt;     },&lt;br /&gt;                "fnCallback": function ( json ) {&lt;br /&gt;                   &lt;br /&gt;                }&lt;br /&gt;            } );&lt;br /&gt;            $('#example_next').click( function() {&lt;br /&gt;                        //alert('paginate click handler');&lt;br /&gt;                        var oSettings = oTable.fnSettings();&lt;br /&gt;//                        alert("iDisplayStart="+oSettings._iDisplayStart+&lt;br /&gt;//                            "iDisplayLength="+oSettings._iDisplayLength+&lt;br /&gt;//                            "iTotalRecords="+jsonARS.iTotalRecords+&lt;br /&gt;//                            "iTotalDisplayRecords="+jsonARS.iTotalDisplayRecords&lt;br /&gt;//                    );&lt;br /&gt;&lt;br /&gt;                        if (((oSettings._iDisplayStart+ oSettings._iDisplayLength) &amp;lt jsonARS.iTotalRecords) &amp;&amp;&lt;br /&gt;                            (jsonARS.iTotalDisplayRecords ==  oSettings._iDisplayLength))&lt;br /&gt;                                 oSettings._iDisplayStart += oSettings._iDisplayLength;&lt;br /&gt;                        oSettings.oApi._fnDraw( oSettings );&lt;br /&gt;             } );&lt;br /&gt;            $('#example_prev').click( function() {&lt;br /&gt;                        //alert('paginate click handler');&lt;br /&gt;                        var oSettings = oTable.fnSettings();&lt;br /&gt;                        oSettings._iDisplayStart -= oSettings._iDisplayLength;&lt;br /&gt;                        if (oSettings._iDisplayStart &amp;lt 0) oSettings._iDisplayStart = 0;&lt;br /&gt;                        oSettings.oApi._fnDraw( oSettings );&lt;br /&gt;             } );&lt;br /&gt;        } );&lt;br /&gt;        &lt;br /&gt;&lt;br /&gt;    &amp;lt/script&amp;gt&lt;br /&gt;&amp;lt/head&amp;gt&lt;br /&gt;&amp;ltbody id="dt_example"&amp;gt&lt;br /&gt;&amp;ltdiv id="container"&amp;gt&lt;br /&gt;    &amp;ltdiv class="full_width big"&amp;gt&lt;br /&gt;        &amp;lti&amp;gtDataTables&amp;lt/i&amp;gt server-side processing  example&lt;br /&gt;    &amp;lt/div&amp;gt&lt;br /&gt;    &amp;ltH1&amp;gtLive example&amp;lt/H1&amp;gt&lt;br /&gt;    &amp;ltDIV id=dynamic&amp;gt&lt;br /&gt;        &amp;ltTABLE id=example class=display border=0 cellSpacing=0 cellPadding=0&amp;gt&lt;br /&gt;            &amp;ltTHEAD&amp;gt&lt;br /&gt;                &amp;ltTR&amp;gt&lt;br /&gt;                    &amp;ltTH width="20%"&amp;gtRendering engine&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH width="25%"&amp;gtBrowser&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH width="25%"&amp;gtPlatform(s)&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH width="15%"&amp;gtEngine version&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH width="15%"&amp;gtCSS grade&amp;lt/TH&amp;gt&amp;lt/TR&amp;gt&amp;lt/THEAD&amp;gt&lt;br /&gt;            &amp;ltTBODY&amp;gt&lt;br /&gt;                &amp;ltTR&amp;gt&lt;br /&gt;                    &amp;ltTD class=dataTables_empty colSpan=5&amp;gtLoading data from server&lt;br /&gt;                    &amp;lt/TD&amp;gt&lt;br /&gt;                &amp;lt/TR&amp;gt&lt;br /&gt;            &amp;lt/TBODY&amp;gt&lt;br /&gt;        &amp;lt/TABLE&amp;gt&lt;br /&gt;    &amp;lt/DIV&amp;gt&lt;br /&gt;&amp;lt/div&amp;gt&lt;br /&gt;&amp;lt/body&amp;gt&lt;br /&gt;&amp;lt/html&amp;gt&lt;br /&gt;&lt;br /&gt;server_processing.jsp&lt;br /&gt;---------------------&lt;br /&gt;&lt;br /&gt;&amp;lt%--&lt;br /&gt;    Document   : server_processingARS.jsp&lt;br /&gt;    Created on : 04.?ub.2011, 17:53:53&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lt%@page import="java.sql.Connection"%&amp;gt&lt;br /&gt;&amp;lt%@page import="atg.taglib.json.util.*"%&amp;gt&lt;br /&gt;&amp;lt%@page import= "java.util.*"%&amp;gt&lt;br /&gt;&amp;lt%@page import= "java.sql.*"%&amp;gt&lt;br /&gt;&amp;lt%@page import= "org.apache.commons.lang.*"%&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt%&lt;br /&gt;            class Utilities {&lt;br /&gt;&lt;br /&gt;                Utilities() {&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                ;&lt;br /&gt;&lt;br /&gt;                String escape_string(String input) {&lt;br /&gt;                    return StringEscapeUtils.escapeHtml(input);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;%&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lt%&lt;br /&gt;            System.out.println("test arsssssssssssssssssssssss");&lt;br /&gt;            Utilities util = new Utilities();&lt;br /&gt;            /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *&lt;br /&gt;             * Easy set variables&lt;br /&gt;             */&lt;br /&gt;&lt;br /&gt;            /* Array of database columns which should be read and sent back to DataTables. Use a space where&lt;br /&gt;             * you want to insert a non-database field (for example a counter or static image)&lt;br /&gt;             */&lt;br /&gt;            String[] aColumns = {"engine", "browser", "platform", "version", "grade"};&lt;br /&gt;&lt;br /&gt;            /* Indexed column (used for fast and accurate table cardinality) */&lt;br /&gt;            String sIndexColumn = "id";&lt;br /&gt;&lt;br /&gt;            /* DB table to use */&lt;br /&gt;            String sTable = "ajax";&lt;br /&gt;            /* Database connection information */&lt;br /&gt;            String user = "root";&lt;br /&gt;            String password = "3391309";&lt;br /&gt;            String db = "jquerydb";&lt;br /&gt;            String server = "localhost";&lt;br /&gt;&lt;br /&gt;            /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *&lt;br /&gt;             * If you just want to use the basic configuration for DataTables with PHP server-side, there is&lt;br /&gt;             * no need to edit below this line&lt;br /&gt;             */&lt;br /&gt;&lt;br /&gt;            /*&lt;br /&gt;             * MySQL connection&lt;br /&gt;             */&lt;br /&gt;&lt;br /&gt;            Connection conn = null;&lt;br /&gt;&lt;br /&gt;            try {&lt;br /&gt;                Class.forName("com.mysql.jdbc.Driver").newInstance();&lt;br /&gt;                conn = DriverManager.getConnection("jdbc:mysql://localhost/" + db,&lt;br /&gt;                        user, password);&lt;br /&gt;&lt;br /&gt;                if (!conn.isClosed()) {&lt;br /&gt;                    System.out.println("Successfully connected to "&lt;br /&gt;                            + "MySQL server using TCP/IP...");&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;            } catch (Exception e) {&lt;br /&gt;                System.err.println("Exception: " + e.getMessage());&lt;br /&gt;            } finally {&lt;br /&gt;//                try {&lt;br /&gt;//                    if (conn != null) {&lt;br /&gt;//                        //conn.close();&lt;br /&gt;//                    }&lt;br /&gt;//                } catch (SQLException e) {&lt;br /&gt;//                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;                /*&lt;br /&gt;                 * Paging&lt;br /&gt;                 */&lt;br /&gt;                String sLimit = "";&lt;br /&gt;                if (request.getParameter("iDisplayStart") != null&lt;br /&gt;                        &amp;&amp; request.getParameter("iDisplayLength") != "-1") {&lt;br /&gt;                    sLimit = "LIMIT " + util.escape_string(request.getParameter("iDisplayStart")) +&lt;br /&gt;                            ", " + util.escape_string(request.getParameter("iDisplayLength"));&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                /*&lt;br /&gt;                 * Ordering&lt;br /&gt;                 */&lt;br /&gt;                String sOrder = "";&lt;br /&gt;               &lt;br /&gt;                if (request.getParameter("iSortCol_0") != null) {&lt;br /&gt;                    sOrder = "ORDER BY  ";&lt;br /&gt;&lt;br /&gt;                    for (int i = 0; i &amp;lt Integer.valueOf(request.getParameter("iSortingCols")); i++) {&lt;br /&gt;                        if (request.getParameter("bSortable_" + Integer.valueOf(request.getParameter("iSortCol_" + String.valueOf(i)))).equals("true")) {&lt;br /&gt;                            sOrder += aColumns[Integer.valueOf(request.getParameter("iSortCol_" + String.valueOf(i)))] + " "&lt;br /&gt;                                    + util.escape_string(request.getParameter("sSortDir_" + String.valueOf(i))) + ", ";&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;&lt;br /&gt;                    sOrder = sOrder.substring(0, sOrder.length()-2);&lt;br /&gt;                    if (sOrder.equals("ORDER BY")) {&lt;br /&gt;                        sOrder = "";&lt;br /&gt;                    }&lt;br /&gt;                    sOrder += " ";&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                /*&lt;br /&gt;                 * Filtering&lt;br /&gt;                 * NOTE this does not match the built-in DataTables filtering which does it&lt;br /&gt;                 * word by word on any field. It's possible to do here, but concerned about efficiency&lt;br /&gt;                 * on very large tables, and MySQL's regex functionality is very limited&lt;br /&gt;                 */&lt;br /&gt;                String sWhere = "";&lt;br /&gt;                 System.out.println("sSearch="+ request.getParameter("sSearch"));&lt;br /&gt;                 &lt;br /&gt;                if (request.getParameter("sSearch") != "") {&lt;br /&gt;                    sWhere = "WHERE (";&lt;br /&gt;                    for (int i = 0; i &amp;lt aColumns.length; i++) {&lt;br /&gt;                        sWhere += aColumns[i] + " LIKE '%" + util.escape_string(request.getParameter("sSearch")) + "%' OR ";&lt;br /&gt;                    }&lt;br /&gt;                    sWhere = sWhere.substring(0, sWhere.length()-3);&lt;br /&gt;                    sWhere += ')';&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                /* Individual column filtering */&lt;br /&gt;&lt;br /&gt;                for (int i = 0; i &amp;lt aColumns.length; i++) {&lt;br /&gt;                    if (request.getParameter("bSearchable_" + String.valueOf(i)) == "true"&lt;br /&gt;                            &amp;&amp; request.getParameter("sSearch_" + String.valueOf(i)) != "") {&lt;br /&gt;                        if (sWhere == "") {&lt;br /&gt;                            sWhere = "WHERE ";&lt;br /&gt;                        } else {&lt;br /&gt;                            sWhere += " AND ";&lt;br /&gt;                        }&lt;br /&gt;                        sWhere += aColumns[i] + " LIKE '%" + util.escape_string(request.getParameter("sSearch_" + String.valueOf(i))) + "%' ";&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                /*&lt;br /&gt;                 * SQL queries&lt;br /&gt;                 * Get data to display&lt;br /&gt;                 */&lt;br /&gt;                String strColumnNames = "";&lt;br /&gt;&lt;br /&gt;                for (int i=0;i &amp;lt aColumns.length;i++){&lt;br /&gt;                    strColumnNames = strColumnNames + ", "+ aColumns[i];&lt;br /&gt;                    }&lt;br /&gt;                strColumnNames = strColumnNames.substring(1);&lt;br /&gt;&lt;br /&gt;                String sQuery = "SELECT "&lt;br /&gt;                        + strColumnNames&lt;br /&gt;                        + " FROM " + sTable&lt;br /&gt;                        + " "&lt;br /&gt;                        + sWhere&lt;br /&gt;                        + sOrder&lt;br /&gt;                        + sLimit;&lt;br /&gt;&lt;br /&gt;    System.out.println("sQuery="+sQuery);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                Statement s = conn.createStatement();&lt;br /&gt;                s.executeQuery(sQuery);&lt;br /&gt;&lt;br /&gt;                /* Data set length after filtering */&lt;br /&gt;                ResultSet rs = s.getResultSet();&lt;br /&gt;                int count = 0;&lt;br /&gt;                while (rs.next()) {&lt;br /&gt;                    String engineCol = rs.getString("engine");&lt;br /&gt;                    System.out.println("engine = " + engineCol);&lt;br /&gt;                    ++count;&lt;br /&gt;                }&lt;br /&gt;                int iFilteredTotal = count;&lt;br /&gt;                rs.close();&lt;br /&gt;                s.close();&lt;br /&gt;                System.out.println("Selected count="+iFilteredTotal);&lt;br /&gt;&lt;br /&gt;                /* Total data set length */&lt;br /&gt;                s = conn.createStatement();&lt;br /&gt;                String sQuery2 = " SELECT COUNT(*) AS rowcount FROM " + sTable;&lt;br /&gt;                rs = s.executeQuery(sQuery2);&lt;br /&gt;                rs.next();&lt;br /&gt;                int iTotal = rs.getInt("rowcount");&lt;br /&gt;                rs.close();&lt;br /&gt;                s.close();&lt;br /&gt;                System.out.println("Total count="+iTotal);&lt;br /&gt;&lt;br /&gt;         /*&lt;br /&gt;  * Output&lt;br /&gt;  */&lt;br /&gt;  String output = "{" +&lt;br /&gt;  "\"sEcho\" : "+ request.getParameter("sEcho")+ ", " +&lt;br /&gt;  "\"iTotalRecords\" : " +  String.valueOf(iTotal) + ", " +&lt;br /&gt;  "\"iTotalDisplayRecords\" : " + String.valueOf(iFilteredTotal) + ", " +&lt;br /&gt; //              "\"iDisplayLength\" : " + "10" + ", " +&lt;br /&gt; //               "\"iDisplayStart\" : " + "10" + ", " +&lt;br /&gt;  "\"aaData\" : [" + "";&lt;br /&gt;&lt;br /&gt;         Object[][] aaData= new Object[iFilteredTotal][5];&lt;br /&gt;&lt;br /&gt;               s = conn.createStatement();&lt;br /&gt;                s.executeQuery(sQuery);&lt;br /&gt;                rs = s.getResultSet();&lt;br /&gt;&lt;br /&gt;                int rowNum=0;&lt;br /&gt; while ( rs.next() )&lt;br /&gt; {&lt;br /&gt;            System.out.println("rowNum="+ rowNum);&lt;br /&gt;            //if (rowNum &amp;gt 3) break;&lt;br /&gt;                Object[] aRow = {"","","",0,""};&lt;br /&gt;  Object[] row = {"","","",0,""};&lt;br /&gt;&lt;br /&gt;  for ( int i=0 ; i&amp;ltaColumns.length ; i++ )&lt;br /&gt;  {&lt;br /&gt;                    System.out.println("i="+ i +" colVal="+ rs.getString( aColumns[i]));&lt;br /&gt;   if ( aColumns[i] == "version" )&lt;br /&gt;   {&lt;br /&gt;    /* Special output formatting for 'version' column */&lt;br /&gt;    row[i] = (rs.getInt( aColumns[i] )==0) ? "-" : rs.getInt(aColumns[i]);&lt;br /&gt;   }&lt;br /&gt;   else if ( aColumns[i] != " " )&lt;br /&gt;   {&lt;br /&gt;    /* General output */&lt;br /&gt;    row[i] = rs.getString( aColumns[i]);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  aaData[rowNum] = row;&lt;br /&gt;                System.out.println("rowNum("+rowNum +") row[0]="+row[0].toString());&lt;br /&gt;                rowNum++;&lt;br /&gt; }&lt;br /&gt;                rs.close();&lt;br /&gt;                s.close();&lt;br /&gt;&lt;br /&gt;               String valRow = " [ ";&lt;br /&gt;                for (int rowN = 0; rowN &amp;lt iFilteredTotal; rowN++) {&lt;br /&gt;                    System.out.println("rowN="+rowN);&lt;br /&gt;                    for (int colN = 0; colN &amp;lt aColumns.length; colN++) {&lt;br /&gt;                        System.out.println("      colN="+colN);&lt;br /&gt;                        if (aColumns[colN] == "version" )&lt;br /&gt;                            valRow = valRow + " " + aaData[rowN][colN].toString() + " , ";&lt;br /&gt;                        else if ( aColumns[colN] != " " )&lt;br /&gt;                             valRow = valRow + "\"" + aaData[rowN][colN].toString() + "\" , ";&lt;br /&gt;                    }&lt;br /&gt;                    valRow = valRow.substring(0, valRow.length()-2);&lt;br /&gt;                    valRow = valRow + " ], ";&lt;br /&gt;                    System.out.println("valRow="+valRow);&lt;br /&gt;                    output = output + valRow;&lt;br /&gt;                    valRow = " [ ";&lt;br /&gt;                }&lt;br /&gt;               System.out.println("output="+output);&lt;br /&gt;                output = output.substring(0, output.length()-2);&lt;br /&gt;                output = output + " ] }";&lt;br /&gt;&lt;br /&gt;                out.print(output);&lt;br /&gt;%&amp;gt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-6945670354484472960?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/6945670354484472960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/6945670354484472960'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/02/jq-ajax-server-processing-with-paging.html' title='JQ AJAX server processing with PAGING'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-IfcyAd03SpE/TVuJA5GRm_I/AAAAAAAAAZM/guadMYvMv6Q/s72-c/serverSidepagingJQdtARS1.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-1274035539011291939</id><published>2011-02-15T00:38:00.000-08:00</published><updated>2011-02-15T00:48:30.022-08:00</updated><title type='text'>JQ server-processing with AJAX calls using JSP</title><content type='html'>This is the JAVA-JSP version of "DataTables server-side processing example" of official JQuery website.  I have converted the 'server_processing.php'  to 'server_processing.jsp'.  &lt;br /&gt;&lt;br /&gt;Please note  that the original example lacks the &lt;br /&gt; &lt;br /&gt; "sPaginationType": "two_button",  (or "sPaginationType": "full_numbers")&lt;br /&gt;&lt;br /&gt;My JSP version lacks it too...  This is basicly an example for AJAX and server-side processing not pagination.  I will be providing an example which uses pagination and AJAX calls for server-side processing in a couple of days or weeks.&lt;br /&gt;&lt;br /&gt;Here is the full complete working code:&lt;br /&gt;&lt;br /&gt;serverSideJQdtARS.jsp&lt;br /&gt;---------------------&lt;br /&gt;&lt;br /&gt;&amp;lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&amp;gt&lt;br /&gt;&amp;lthtml&amp;gt&lt;br /&gt;    &amp;lthead&amp;gt&lt;br /&gt;        &amp;ltmeta http-equiv="content-type" content="text/html; charset=utf-8" /&amp;gt&lt;br /&gt;    &amp;ltlink rel="shortcut icon" type="image/ico" href="DataTables-1.7.5/media/images/favicon.ico" /&amp;gt&lt;br /&gt;&lt;br /&gt;    &amp;lttitle&amp;gtDataTables example&amp;lt/title&amp;gt&lt;br /&gt;    &amp;ltstyle type="text/css" title="currentStyle"&amp;gt&lt;br /&gt;        @import "DataTables-1.7.5/media/css/demo_page.css";&lt;br /&gt;        @import "DataTables-1.7.5/media/css/demo_table.css";&lt;br /&gt;    &amp;lt/style&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" language="javascript" src="DataTables-1.7.5/media/js/jquery.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" language="javascript" src="DataTables-1.7.5/media/js/jquery.dataTables.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" charset="utf-8"&amp;gt&lt;br /&gt;        $(document).ready(function() {&lt;br /&gt;            $('#example').dataTable( {&lt;br /&gt;                "bProcessing": true,&lt;br /&gt;                "bServerSide": true,&lt;br /&gt;                "aaSorting": [[0, 'desc'], [1, 'desc']],&lt;br /&gt;&lt;br /&gt;                "sAjaxSource": "./server_processing.jsp"&lt;br /&gt;            } );&lt;br /&gt;        } );&lt;br /&gt;        &lt;br /&gt;&lt;br /&gt;    &amp;lt/script&amp;gt&lt;br /&gt;&amp;lt/head&amp;gt&lt;br /&gt;&amp;ltbody id="dt_example"&amp;gt&lt;br /&gt;&amp;ltdiv id="container"&amp;gt&lt;br /&gt;    &amp;ltdiv class="full_width big"&amp;gt&lt;br /&gt;        &amp;lti&amp;gtDataTables&amp;lt/i&amp;gt server-side processing  example&lt;br /&gt;    &amp;lt/div&amp;gt&lt;br /&gt;    &amp;ltH1&amp;gtLive example&amp;lt/H1&amp;gt&lt;br /&gt;    &amp;ltDIV id=dynamic&amp;gt&lt;br /&gt;        &amp;ltTABLE id=example class=display border=0 cellSpacing=0 cellPadding=0&amp;gt&lt;br /&gt;            &amp;ltTHEAD&amp;gt&lt;br /&gt;                &amp;ltTR&amp;gt&lt;br /&gt;                    &amp;ltTH width="20%"&amp;gtRendering engine&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH width="25%"&amp;gtBrowser&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH width="25%"&amp;gtPlatform(s)&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH width="15%"&amp;gtEngine version&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH width="15%"&amp;gtCSS grade&amp;lt/TH&amp;gt&amp;lt/TR&amp;gt&amp;lt/THEAD&amp;gt&lt;br /&gt;            &amp;ltTBODY&amp;gt&lt;br /&gt;                &amp;ltTR&amp;gt&lt;br /&gt;                    &amp;ltTD class=dataTables_empty colSpan=5&amp;gtLoading data from server&lt;br /&gt;                    &amp;lt/TD&amp;gt&lt;br /&gt;                &amp;lt/TR&amp;gt&lt;br /&gt;            &amp;lt/TBODY&amp;gt&lt;br /&gt;            &amp;ltTFOOT&amp;gt&lt;br /&gt;                &amp;ltTR&amp;gt&lt;br /&gt;                    &amp;ltTH&amp;gtRendering engine&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH&amp;gtBrowser&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH&amp;gtPlatform(s)&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH&amp;gtEngine version&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH&amp;gtCSS grade&amp;lt/TH&amp;gt&lt;br /&gt;                &amp;lt/TR&amp;gt&lt;br /&gt;            &amp;lt/TFOOT&amp;gt&lt;br /&gt;        &amp;lt/TABLE&amp;gt&lt;br /&gt;    &amp;lt/DIV&amp;gt&lt;br /&gt;&amp;lt/div&amp;gt&lt;br /&gt;&amp;lt/body&amp;gt&lt;br /&gt;&amp;lt/html&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;server_processing.jsp&lt;br /&gt;---------------------&lt;br /&gt;&lt;br /&gt;&amp;lt%--&lt;br /&gt;    Document   : server_processingARS.jsp&lt;br /&gt;    Created on : 04.?ub.2011, 17:53:53&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lt%@page import="java.sql.Connection"%&amp;gt&lt;br /&gt;&amp;lt%@page import="atg.taglib.json.util.*"%&amp;gt&lt;br /&gt;&amp;lt%@page import= "java.util.*"%&amp;gt&lt;br /&gt;&amp;lt%@page import= "java.sql.*"%&amp;gt&lt;br /&gt;&amp;lt%@page import= "org.apache.commons.lang.*"%&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt%&lt;br /&gt;            class Utilities {&lt;br /&gt;&lt;br /&gt;                Utilities() {&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                ;&lt;br /&gt;&lt;br /&gt;                String escape_string(String input) {&lt;br /&gt;                    return StringEscapeUtils.escapeHtml(input);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;%&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;lt%&lt;br /&gt;            System.out.println("test arsssssssssssssssssssssss");&lt;br /&gt;            Utilities util = new Utilities();&lt;br /&gt;            /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *&lt;br /&gt;             * Easy set variables&lt;br /&gt;             */&lt;br /&gt;&lt;br /&gt;            /* Array of database columns which should be read and sent back to DataTables. Use a space where&lt;br /&gt;             * you want to insert a non-database field (for example a counter or static image)&lt;br /&gt;             */&lt;br /&gt;            String[] aColumns = {"engine", "browser", "platform", "version", "grade"};&lt;br /&gt;&lt;br /&gt;            /* Indexed column (used for fast and accurate table cardinality) */&lt;br /&gt;            String sIndexColumn = "id";&lt;br /&gt;&lt;br /&gt;            /* DB table to use */&lt;br /&gt;            String sTable = "ajax";&lt;br /&gt;            /* Database connection information */&lt;br /&gt;            String user = "root";&lt;br /&gt;            String password = "3391309";&lt;br /&gt;            String db = "jquerydb";&lt;br /&gt;            String server = "localhost";&lt;br /&gt;&lt;br /&gt;            /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *&lt;br /&gt;             * If you just want to use the basic configuration for DataTables with PHP server-side, there is&lt;br /&gt;             * no need to edit below this line&lt;br /&gt;             */&lt;br /&gt;&lt;br /&gt;            /*&lt;br /&gt;             * MySQL connection&lt;br /&gt;             */&lt;br /&gt;&lt;br /&gt;            Connection conn = null;&lt;br /&gt;&lt;br /&gt;            try {&lt;br /&gt;                Class.forName("com.mysql.jdbc.Driver").newInstance();&lt;br /&gt;                conn = DriverManager.getConnection("jdbc:mysql://localhost/" + db,&lt;br /&gt;                        user, password);&lt;br /&gt;&lt;br /&gt;                if (!conn.isClosed()) {&lt;br /&gt;                    System.out.println("Successfully connected to "&lt;br /&gt;                            + "MySQL server using TCP/IP...");&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;            } catch (Exception e) {&lt;br /&gt;                System.err.println("Exception: " + e.getMessage());&lt;br /&gt;            } finally {&lt;br /&gt;//                try {&lt;br /&gt;//                    if (conn != null) {&lt;br /&gt;//                        //conn.close();&lt;br /&gt;//                    }&lt;br /&gt;//                } catch (SQLException e) {&lt;br /&gt;//                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;                /*&lt;br /&gt;                 * Paging&lt;br /&gt;                 */&lt;br /&gt;                String sLimit = "";&lt;br /&gt;                if (request.getParameter("iDisplayStart") != null&lt;br /&gt;                        &amp;&amp; request.getParameter("iDisplayLength") != "-1") {&lt;br /&gt;                    sLimit = "LIMIT " + util.escape_string(request.getParameter("iDisplayStart")) +&lt;br /&gt;                            ", " + util.escape_string(request.getParameter("iDisplayLength"));&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                /*&lt;br /&gt;                 * Ordering&lt;br /&gt;                 */&lt;br /&gt;                String sOrder = "";&lt;br /&gt;               &lt;br /&gt;                if (request.getParameter("iSortCol_0") != null) {&lt;br /&gt;                    sOrder = "ORDER BY  ";&lt;br /&gt;&lt;br /&gt;                    for (int i = 0; i &amp;lt Integer.valueOf(request.getParameter("iSortingCols")); i++) {&lt;br /&gt;                        if (request.getParameter("bSortable_" + Integer.valueOf(request.getParameter("iSortCol_" + String.valueOf(i)))).equals("true")) {&lt;br /&gt;                            sOrder += aColumns[Integer.valueOf(request.getParameter("iSortCol_" + String.valueOf(i)))] + " "&lt;br /&gt;                                    + util.escape_string(request.getParameter("sSortDir_" + String.valueOf(i))) + ", ";&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;&lt;br /&gt;                    sOrder = sOrder.substring(0, sOrder.length()-2);&lt;br /&gt;                    if (sOrder.equals("ORDER BY")) {&lt;br /&gt;                        sOrder = "";&lt;br /&gt;                    }&lt;br /&gt;                    sOrder += " ";&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                /*&lt;br /&gt;                 * Filtering&lt;br /&gt;                 * NOTE this does not match the built-in DataTables filtering which does it&lt;br /&gt;                 * word by word on any field. It's possible to do here, but concerned about efficiency&lt;br /&gt;                 * on very large tables, and MySQL's regex functionality is very limited&lt;br /&gt;                 */&lt;br /&gt;                String sWhere = "";&lt;br /&gt;                 System.out.println("sSearch="+ request.getParameter("sSearch"));&lt;br /&gt;                 &lt;br /&gt;                if (request.getParameter("sSearch") != "") {&lt;br /&gt;                    sWhere = "WHERE (";&lt;br /&gt;                    for (int i = 0; i &amp;lt aColumns.length; i++) {&lt;br /&gt;                        sWhere += aColumns[i] + " LIKE '%" + util.escape_string(request.getParameter("sSearch")) + "%' OR ";&lt;br /&gt;                    }&lt;br /&gt;                    sWhere = sWhere.substring(0, sWhere.length()-3);&lt;br /&gt;                    sWhere += ')';&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                /* Individual column filtering */&lt;br /&gt;&lt;br /&gt;                for (int i = 0; i &amp;lt aColumns.length; i++) {&lt;br /&gt;                    if (request.getParameter("bSearchable_" + String.valueOf(i)) == "true"&lt;br /&gt;                            &amp;&amp; request.getParameter("sSearch_" + String.valueOf(i)) != "") {&lt;br /&gt;                        if (sWhere == "") {&lt;br /&gt;                            sWhere = "WHERE ";&lt;br /&gt;                        } else {&lt;br /&gt;                            sWhere += " AND ";&lt;br /&gt;                        }&lt;br /&gt;                        sWhere += aColumns[i] + " LIKE '%" + util.escape_string(request.getParameter("sSearch_" + String.valueOf(i))) + "%' ";&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                /*&lt;br /&gt;                 * SQL queries&lt;br /&gt;                 * Get data to display&lt;br /&gt;                 */&lt;br /&gt;                String strColumnNames = "";&lt;br /&gt;&lt;br /&gt;                for (int i=0;i &amp;lt aColumns.length;i++){&lt;br /&gt;                    strColumnNames = strColumnNames + ", "+ aColumns[i];&lt;br /&gt;                    }&lt;br /&gt;                strColumnNames = strColumnNames.substring(1);&lt;br /&gt;&lt;br /&gt;                String sQuery = "SELECT "&lt;br /&gt;                        + strColumnNames&lt;br /&gt;                        + " FROM " + sTable&lt;br /&gt;                        + " "&lt;br /&gt;                        + sWhere&lt;br /&gt;                        + sOrder&lt;br /&gt;                        + sLimit;&lt;br /&gt;&lt;br /&gt;    System.out.println("sQuery="+sQuery);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                Statement s = conn.createStatement();&lt;br /&gt;                s.executeQuery(sQuery);&lt;br /&gt;&lt;br /&gt;                /* Data set length after filtering */&lt;br /&gt;                ResultSet rs = s.getResultSet();&lt;br /&gt;                int count = 0;&lt;br /&gt;                while (rs.next()) {&lt;br /&gt;                    String engineCol = rs.getString("engine");&lt;br /&gt;                    System.out.println("engine = " + engineCol);&lt;br /&gt;                    ++count;&lt;br /&gt;                }&lt;br /&gt;                int iFilteredTotal = count;&lt;br /&gt;                rs.close();&lt;br /&gt;                s.close();&lt;br /&gt;                System.out.println("Selected count="+iFilteredTotal);&lt;br /&gt;&lt;br /&gt;                /* Total data set length */&lt;br /&gt;                s = conn.createStatement();&lt;br /&gt;                String sQuery2 = " SELECT COUNT(*) AS rowcount FROM " + sTable;&lt;br /&gt;                rs = s.executeQuery(sQuery2);&lt;br /&gt;                rs.next();&lt;br /&gt;                int iTotal = rs.getInt("rowcount");&lt;br /&gt;                rs.close();&lt;br /&gt;                s.close();&lt;br /&gt;                System.out.println("Total count="+iTotal);&lt;br /&gt;&lt;br /&gt;         /*&lt;br /&gt;  * Output&lt;br /&gt;  */&lt;br /&gt;  String output = "{" +&lt;br /&gt;  "\"sEcho\" : "+ request.getParameter("sEcho")+ ", " +&lt;br /&gt;  "\"iTotalRecords\" : " +  Integer.valueOf(iTotal) + ", " +&lt;br /&gt;  "\"iTotalDisplayRecords\" : " + iFilteredTotal + ", " +&lt;br /&gt;  "\"aaData\" : [" + "";&lt;br /&gt;&lt;br /&gt;         Object[][] aaData= new Object[iFilteredTotal][5];&lt;br /&gt;&lt;br /&gt;               s = conn.createStatement();&lt;br /&gt;                s.executeQuery(sQuery);&lt;br /&gt;                rs = s.getResultSet();&lt;br /&gt;&lt;br /&gt;                int rowNum=0;&lt;br /&gt; while ( rs.next() )&lt;br /&gt; {&lt;br /&gt;            System.out.println("rowNum="+ rowNum);&lt;br /&gt;            //if (rowNum &amp;gt 3) break;&lt;br /&gt;                Object[] aRow = {"","","",0,""};&lt;br /&gt;  Object[] row = {"","","",0,""};&lt;br /&gt;&lt;br /&gt;  for ( int i=0 ; i&amp;ltaColumns.length ; i++ )&lt;br /&gt;  {&lt;br /&gt;                    System.out.println("i="+ i +" colVal="+ rs.getString( aColumns[i]));&lt;br /&gt;   if ( aColumns[i] == "version" )&lt;br /&gt;   {&lt;br /&gt;    /* Special output formatting for 'version' column */&lt;br /&gt;    row[i] = (rs.getInt( aColumns[i] )==0) ? "-" : rs.getInt(aColumns[i]);&lt;br /&gt;   }&lt;br /&gt;   else if ( aColumns[i] != " " )&lt;br /&gt;   {&lt;br /&gt;    /* General output */&lt;br /&gt;    row[i] = rs.getString( aColumns[i]);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  aaData[rowNum] = row;&lt;br /&gt;                System.out.println("rowNum("+rowNum +") row[0]="+row[0].toString());&lt;br /&gt;                rowNum++;&lt;br /&gt; }&lt;br /&gt;                rs.close();&lt;br /&gt;                s.close();&lt;br /&gt;&lt;br /&gt;               String valRow = " [ ";&lt;br /&gt;                for (int rowN = 0; rowN &amp;lt iFilteredTotal; rowN++) {&lt;br /&gt;                    System.out.println("rowN="+rowN);&lt;br /&gt;                    for (int colN = 0; colN &amp;lt aColumns.length; colN++) {&lt;br /&gt;                        System.out.println("      colN="+colN);&lt;br /&gt;                        if (aColumns[colN] == "version" )&lt;br /&gt;                            valRow = valRow + " " + aaData[rowN][colN].toString() + " , ";&lt;br /&gt;                        else if ( aColumns[colN] != " " )&lt;br /&gt;                             valRow = valRow + "\"" + aaData[rowN][colN].toString() + "\" , ";&lt;br /&gt;                    }&lt;br /&gt;                    valRow = valRow.substring(0, valRow.length()-2);&lt;br /&gt;                    valRow = valRow + " ], ";&lt;br /&gt;                    System.out.println("valRow="+valRow);&lt;br /&gt;                    output = output + valRow;&lt;br /&gt;                    valRow = " [ ";&lt;br /&gt;                }&lt;br /&gt;               System.out.println("output="+output);&lt;br /&gt;                output = output.substring(0, output.length()-2);&lt;br /&gt;                output = output + " ] }";&lt;br /&gt;&lt;br /&gt;                out.print(output);&lt;br /&gt;%&amp;gt&lt;br /&gt;&lt;br /&gt;MySQL definitions and insert commands&lt;br /&gt;-------------------------------------&lt;br /&gt;&lt;br /&gt;CREATE TABLE `ajax` (&lt;br /&gt;  `engine` varchar(20) NOT NULL DEFAULT '',&lt;br /&gt;  `browser` varchar(35) DEFAULT NULL,&lt;br /&gt;  `platform` varchar(20) DEFAULT NULL,&lt;br /&gt;  `version` int(11) DEFAULT NULL,&lt;br /&gt;  `grade` varchar(1) DEFAULT NULL,&lt;br /&gt;  PRIMARY KEY (`engine`)&lt;br /&gt;) ENGINE=InnoDB DEFAULT CHARSET=latin1;&lt;br /&gt;&lt;br /&gt;INSERT INTO `ajax` (`engine`, `browser`, `platform`, `version`, `grade`) &lt;br /&gt;VALUES ("engine1", "browser1", "platform1", 1, "A");&lt;br /&gt;INSERT INTO `ajax` (`engine`, `browser`, `platform`, `version`, `grade`) &lt;br /&gt;VALUES ("engine2", "browser1", "platform1", 1, "A");&lt;br /&gt;INSERT INTO `ajax` (`engine`, `browser`, `platform`, `version`, `grade`) &lt;br /&gt;VALUES ("engine3", "browser1", "platform1", 1, "A");&lt;br /&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-1274035539011291939?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/1274035539011291939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/1274035539011291939'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/02/jq-datatables-server-side-processing.html' title='JQ server-processing with AJAX calls using JSP'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-2234623654585395624</id><published>2011-02-07T10:55:00.000-08:00</published><updated>2011-02-07T10:59:57.246-08:00</updated><title type='text'>JQuery server processing with JSP-JAVA</title><content type='html'>This is a small and simple tutorial which shows how you&lt;br /&gt;can populate a JQuery table via AJAX and using JAVA-JSP.&lt;br /&gt;There will be four steps to achieve this.&lt;br /&gt;&lt;br /&gt;1- Calling the JSP.  This is the first JSP where you will make&lt;br /&gt;the AJAX call to the JSP on the server.  This is also where&lt;br /&gt;the results of the AJAX call will be displayed in a data table&lt;br /&gt;with the id "example."  Please note the references to the&lt;br /&gt;jquery javascript files and style css files.&lt;br /&gt;&lt;br /&gt;Originally this example belongs to the official JQuery site&lt;br /&gt;but it works with a php server there.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_e5HI2FtzhaI/TVBAdMT7SwI/AAAAAAAAAYs/RqcEsz5jlc4/s1600/nbJQserverProc1.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 273px; height: 400px;" src="http://2.bp.blogspot.com/_e5HI2FtzhaI/TVBAdMT7SwI/AAAAAAAAAYs/RqcEsz5jlc4/s400/nbJQserverProc1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5571023609322490626" /&gt;&lt;/a&gt;&lt;br /&gt;serverSideJQdtARS.jsp&lt;br /&gt;---------------------&lt;br /&gt;&amp;lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&amp;gt&lt;br /&gt;&amp;lthtml&amp;gt&lt;br /&gt;    &amp;lthead&amp;gt&lt;br /&gt;        &amp;ltmeta http-equiv="content-type" content="text/html; charset=utf-8" /&amp;gt&lt;br /&gt;    &amp;ltlink rel="shortcut icon" type="image/ico" href="DataTables-1.7.5/media/images/favicon.ico" /&amp;gt&lt;br /&gt;&lt;br /&gt;    &amp;lttitle&amp;gtDataTables example&amp;lt/title&amp;gt&lt;br /&gt;    &amp;ltstyle type="text/css" title="currentStyle"&amp;gt&lt;br /&gt;        @import "DataTables-1.7.5/media/css/demo_page.css";&lt;br /&gt;        @import "DataTables-1.7.5/media/css/demo_table.css";&lt;br /&gt;    &amp;lt/style&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" language="javascript" src="DataTables-1.7.5/media/js/jquery.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" language="javascript" src="DataTables-1.7.5/media/js/jquery.dataTables.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;    &amp;ltscript type="text/javascript" charset="utf-8"&amp;gt&lt;br /&gt;        $(document).ready(function() {&lt;br /&gt;            $('#example').dataTable( {&lt;br /&gt;                "bProcessing": true,&lt;br /&gt;                "bServerSide": true,&lt;br /&gt;                "sAjaxSource": "./server_processingARS3.jsp"&lt;br /&gt;            } );&lt;br /&gt;        } );&lt;br /&gt;    &amp;lt/script&amp;gt&lt;br /&gt;&amp;lt/head&amp;gt&lt;br /&gt;&amp;ltbody id="dt_example"&amp;gt&lt;br /&gt;&amp;ltdiv id="container"&amp;gt&lt;br /&gt;    &amp;ltdiv class="full_width big"&amp;gt&lt;br /&gt;        &amp;lti&amp;gtDataTables&amp;lt/i&amp;gt server-side processing  example&lt;br /&gt;    &amp;lt/div&amp;gt&lt;br /&gt;    &amp;ltH1&amp;gtLive example&amp;lt/H1&amp;gt&lt;br /&gt;    &amp;ltDIV id=dynamic&amp;gt&lt;br /&gt;        &amp;ltTABLE id=example class=display border=0 cellSpacing=0 cellPadding=0&amp;gt&lt;br /&gt;               &amp;ltTHEAD&amp;gt&lt;br /&gt;                &amp;ltTR&amp;gt&lt;br /&gt;                    &amp;ltTH width="20%"&amp;gtRendering engine&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH width="25%"&amp;gtBrowser&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH width="25%"&amp;gtPlatform(s)&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH width="15%"&amp;gtEngine version&amp;lt/TH&amp;gt&lt;br /&gt;                    &amp;ltTH width="15%"&amp;gtCSS grade&amp;lt/TH&amp;gt&amp;lt/TR&amp;gt&amp;lt/THEAD&amp;gt&lt;br /&gt;            &amp;ltTBODY&amp;gt&lt;br /&gt;                &amp;ltTR&amp;gt&lt;br /&gt;                    &amp;ltTD class=dataTables_empty colSpan=5&amp;gtLoading data from server&lt;br /&gt;                    &amp;lt/TD&amp;gt&lt;br /&gt;                &amp;lt/TR&amp;gt&lt;br /&gt;            &amp;lt/TBODY&amp;gt&lt;br /&gt;        &amp;lt/TABLE&amp;gt&lt;br /&gt;    &amp;lt/DIV&amp;gt&lt;br /&gt;&amp;lt/div&amp;gt&lt;br /&gt;&amp;lt/body&amp;gt&lt;br /&gt;&amp;lt/html&amp;gt&lt;br /&gt;&lt;br /&gt;The JSP file on the server is below.  The purpose here is only if it has been called.&lt;br /&gt;You may check the print out at the server log.  So it works at least. &lt;br /&gt; &lt;br /&gt;server_processingARS.jsp&lt;br /&gt;------------------------&lt;br /&gt;&amp;lt%-- &lt;br /&gt;    Document   : server_processingARS.jsp&lt;br /&gt;    Created on : 04.?ub.2011, 17:53:53&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&amp;lt%@page import="java.util.Vector"%&amp;gt&lt;br /&gt;&amp;lt%&lt;br /&gt;&lt;br /&gt;        System.out.println( "test arsssssssssssssssssssssss" );&lt;br /&gt;        %&amp;gt&lt;br /&gt;&lt;br /&gt;Of course it will give some error like:&lt;br /&gt;"Data Tables warning: JSON data from server could not be parsed. &lt;br /&gt;This is caused by a JSON formatting error."&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_e5HI2FtzhaI/TVBAnPTZn5I/AAAAAAAAAY0/_0GiTDijMao/s1600/nbJQserverProc2.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 140px;" src="http://4.bp.blogspot.com/_e5HI2FtzhaI/TVBAnPTZn5I/AAAAAAAAAY0/_0GiTDijMao/s400/nbJQserverProc2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5571023781924282258" /&gt;&lt;/a&gt;&lt;br /&gt;2- Next, I tried to create a JSON array which fits the requirements&lt;br /&gt;of JQuery.  I changed the JSP on the server as:&lt;br /&gt;&lt;br /&gt;server_processingARS2.jsp&lt;br /&gt;-------------------------&lt;br /&gt;&lt;br /&gt;&amp;lt%-- &lt;br /&gt;    Document   : server_processingARS.jsp&lt;br /&gt;    Created on : 04.?ub.2011, 17:53:53&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&amp;lt%@page import="atg.taglib.json.util.*"%&amp;gt&lt;br /&gt;&amp;lt%&lt;br /&gt;&lt;br /&gt;            System.out.println("test arsssssssssssssssssssssss");&lt;br /&gt;&lt;br /&gt;            CDL cdl = new CDL();&lt;br /&gt;            JSONArray jsonarray = new JSONArray();&lt;br /&gt;&lt;br /&gt;            try {&lt;br /&gt;                JSONObject jsObj = new JSONObject();&lt;br /&gt;                jsObj = jsObj.put("sEcho", 1);&lt;br /&gt;                jsonarray.add(jsObj);&lt;br /&gt;&lt;br /&gt;                jsObj = new JSONObject();&lt;br /&gt;                jsObj = jsObj.put("iTotalRecords", 1);&lt;br /&gt;                jsonarray.add(jsObj);&lt;br /&gt;&lt;br /&gt;                jsObj = new JSONObject();&lt;br /&gt;                jsObj = jsObj.put("iTotalDisplayRecords", 1);&lt;br /&gt;                jsonarray.add(jsObj);&lt;br /&gt;&lt;br /&gt;                JSONObject jsObjEngine = new JSONObject();&lt;br /&gt;                jsObjEngine = jsObjEngine.put("Engine","Trident");&lt;br /&gt;                JSONObject jsObjBrowser = new JSONObject();&lt;br /&gt;                jsObjBrowser = jsObjBrowser.put("Browser", "Internet Explorer 4.0");&lt;br /&gt;                JSONObject jsObjPlatform = new JSONObject();&lt;br /&gt;                jsObjPlatform = jsObjPlatform.put("Platform", "Win 95+");&lt;br /&gt;                JSONObject jsObjVersion = new JSONObject();&lt;br /&gt;                jsObjVersion = jsObjVersion.put("Version", "4");&lt;br /&gt;                JSONObject jsObjGrade = new JSONObject();&lt;br /&gt;                jsObjGrade = jsObjGrade.put("Grade", "X");&lt;br /&gt;&lt;br /&gt;                JSONArray jsArraaData = new JSONArray();&lt;br /&gt;                jsArraaData.add(jsObjEngine );&lt;br /&gt;                jsArraaData.add(jsObjBrowser );&lt;br /&gt;                jsArraaData.add(jsObjPlatform );&lt;br /&gt;                jsArraaData.add(jsObjVersion );&lt;br /&gt;                jsArraaData.add(jsObjGrade );&lt;br /&gt;&lt;br /&gt;                JSONObject jsObjaaData = new JSONObject();&lt;br /&gt;                jsObjaaData = jsObjaaData.put("aaData", jsArraaData);&lt;br /&gt;&lt;br /&gt;                jsonarray.add(jsObjaaData);&lt;br /&gt;                out.print(jsonarray);&lt;br /&gt;&lt;br /&gt;                //String y = jsonarray.toString();&lt;br /&gt;                //System.out.println(y);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            } catch (JSONException je) {&lt;br /&gt;                System.out.println(je.toString());&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;%&amp;gt&lt;br /&gt;&lt;br /&gt;I played around but I could not pass over this hurdle:&lt;br /&gt;"aaData.length is null or not an object"&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_e5HI2FtzhaI/TVBAzQKigaI/AAAAAAAAAY8/8v0qhxE7lDc/s1600/nbJQserverProc3.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 262px;" src="http://2.bp.blogspot.com/_e5HI2FtzhaI/TVBAzQKigaI/AAAAAAAAAY8/8v0qhxE7lDc/s400/nbJQserverProc3.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5571023988313981346" /&gt;&lt;/a&gt;&lt;br /&gt;3- I looked around and found a small note from ALLAN on the&lt;br /&gt;JQuery official board.  It said you can have a look at&lt;br /&gt;.../datatables/examples/example_support/json_sources2.txt&lt;br /&gt;&lt;br /&gt;I tried his suggestion with the below code:&lt;br /&gt;&lt;br /&gt;server_processing3.jsp&lt;br /&gt;----------------------&lt;br /&gt;&amp;lt%-- &lt;br /&gt;    Document   : server_processingARS.jsp&lt;br /&gt;    Created on : 04.?ub.2011, 17:53:53&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&amp;lt%@page import="atg.taglib.json.util.*"%&amp;gt&lt;br /&gt;&amp;lt%&lt;br /&gt;            System.out.println("test arsssssssssssssssssssssss");&lt;br /&gt;            try {&lt;br /&gt;                String x =&lt;br /&gt;"{ \"aaData\": ["+&lt;br /&gt;" [ \"ALLAN\", \"Internet Explorer 4.0\", \"Win 95+\", 4, \"X\" ],"+&lt;br /&gt;" [ \"Trident\", \"Internet Explorer 5.0\", \"Win 95+\", 5, \"C\" ]"+&lt;br /&gt;"] }";&lt;br /&gt;&lt;br /&gt;                out.print(x);&lt;br /&gt;                }&lt;br /&gt;catch (Error e){System.out.println("errorrrrrrr");}&lt;br /&gt;%&amp;gt&lt;br /&gt;&lt;br /&gt;It worked.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_e5HI2FtzhaI/TVBA_HU4uBI/AAAAAAAAAZE/yRLkVJKZqkM/s1600/nbJQserverProc4.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 143px;" src="http://3.bp.blogspot.com/_e5HI2FtzhaI/TVBA_HU4uBI/AAAAAAAAAZE/yRLkVJKZqkM/s400/nbJQserverProc4.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5571024192099891218" /&gt;&lt;/a&gt;&lt;br /&gt;4- Now the problem was to produce the same JSON code programmatically,&lt;br /&gt;using the lib ofJSON.org.  The solution is:&lt;br /&gt;&lt;br /&gt;server_processing4.jsp&lt;br /&gt;----------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt%-- &lt;br /&gt;    Document   : server_processingARS.jsp&lt;br /&gt;    Created on : 04.?ub.2011, 17:53:53&lt;br /&gt;    Author     : Ali Riza SARAL&lt;br /&gt;--%&amp;gt&lt;br /&gt;&amp;lt%@page import="atg.taglib.json.util.*"%&amp;gt&lt;br /&gt;&amp;lt%&lt;br /&gt;&lt;br /&gt;            System.out.println("test arsssssssssssssssssssssss");&lt;br /&gt;            try {&lt;br /&gt;                String x =&lt;br /&gt;"{ \"aaData\": ["+&lt;br /&gt;" [ \"ALLAN\", \"Internet Explorer 4.0\", \"Win 95+\", 4, \"X\" ],"+&lt;br /&gt;" [ \"Trident\", \"Internet Explorer 5.0\", \"Win 95+\", 5, \"C\" ]"+&lt;br /&gt;"] }";&lt;br /&gt;                //out.print(x);&lt;br /&gt;                //out.print("&amp;ltbr /&amp;gt");&lt;br /&gt;                JSONArray jsaaData = new JSONArray();&lt;br /&gt;                &lt;br /&gt;                Object a[] = {"ALLAN", "Internet Explorer 4.0", "Win 95+",(int) 4, "X"};&lt;br /&gt;                JSONArray jsaaData1 = new JSONArray(a);&lt;br /&gt;                Object b[] = {"Trident", "Internet Explorer 5.0", "Win 95+",(int) 5, "C"};&lt;br /&gt;                JSONArray jsaaData2 = new JSONArray(b);&lt;br /&gt;&lt;br /&gt;                jsaaData.add(jsaaData1);&lt;br /&gt;                jsaaData.add(jsaaData2);&lt;br /&gt;&lt;br /&gt;                JSONObject jsObj = new JSONObject();&lt;br /&gt;                jsObj = jsObj.put("aaData", jsaaData);&lt;br /&gt;&lt;br /&gt;                String y = jsObj.toString();&lt;br /&gt;                out.print(y);&lt;br /&gt;            } catch (JSONException je) {&lt;br /&gt;                System.out.println(je.toString());&lt;br /&gt;            }&lt;br /&gt;%&amp;gt&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_e5HI2FtzhaI/TVBA_HU4uBI/AAAAAAAAAZE/yRLkVJKZqkM/s1600/nbJQserverProc4.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 143px;" src="http://3.bp.blogspot.com/_e5HI2FtzhaI/TVBA_HU4uBI/AAAAAAAAAZE/yRLkVJKZqkM/s400/nbJQserverProc4.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5571024192099891218" /&gt;&lt;/a&gt;&lt;br /&gt;I tried to keep JQuery and ALLAN's references alive but if any&lt;br /&gt;offense I will happily correct any discrepancies.&lt;br /&gt;&lt;br /&gt;Kind regards.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/345401084154429965-2234623654585395624?l=tekne-techne.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/2234623654585395624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/345401084154429965/posts/default/2234623654585395624'/><link rel='alternate' type='text/html' href='http://tekne-techne.blogspot.com/2011/02/jquery-server-processing-with-jsp-java.html' title='JQuery server processing with JSP-JAVA'/><author><name>Air Traffic Control and Large Systems</name><uri>http://www.blogger.com/profile/12383935845301881036</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://1.bp.blogspot.com/-aQXshrqnJ6M/Ttfhpu1RM3I/AAAAAAAAAcM/eKg9cifmabA/s220/ARS2009-2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_e5HI2FtzhaI/TVBAdMT7SwI/AAAAAAAAAYs/RqcEsz5jlc4/s72-c/nbJQserverProc1.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-345401084154429965.post-6520844121139728162</id><published>2011-02-05T10:13:00.000-08:00</published><updated>2011-02-05T10:17:33.845-08:00</updated><title type='text'>Simple JSON Examples with JAVA</title><content type='html'>These are my four working examples for using JSON with JAVA.&lt;br /&gt;They use the JSON.org's json-taglib-0.4.1.jar.&lt;br /&gt;&lt;br /&gt;Cheers.&lt;br /&gt;&lt;br /&gt;Ali R+&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_e5HI2FtzhaI/TU2T462YwHI/AAAAAAAAAYk/kk2I4Kc5wg0/s1600/exJSONwthJAVA.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 285px; height: 395px;" src="http://3.bp.blogspot.com/_e5HI2FtzhaI/TU2T462YwHI/AAAAAAAAAYk/kk2I4Kc5wg0/s400/exJSONwthJAVA.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5570270920206499954" /&gt;&lt;/a&gt;&lt;br /&gt;1st example:&lt;br /&gt;-----------&lt;br /&gt;package nbjson;&lt;br /&gt;&lt;br /&gt;import atg.taglib.json.util.*;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; *&lt;br /&gt; * @author Ali Riza SARAL&lt;br /&gt; */&lt;br /&gt;public class convertToJSONArray {&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * @param args the command line arguments&lt;br /&gt;     */&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        CDL cdl=new CDL();&lt;br /&gt;        JSONArray jsonarray = new JSONArray();&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;       JSONObject jsObj = new JSONObject();&lt;br /&gt;       jsObj = jsObj.put("Col1Header", "1");&lt;br /&gt;        jsonarray.add(jsObj);&lt;br /&gt;&lt;br /&gt;       jsObj = new JSONObject();&lt;br /&gt;       jsObj = jsObj.put("Col2Header", "2");&lt;br /&gt;       jsonarray.add(jsObj);&lt;br /&gt;&lt;br /&gt;       String y = jsonarray.toString();&lt;br /&gt;       System.out.println(y);&lt;br /&gt;       // output: [{"Col1Header":"1"},{"Col2Header":"2"}]&lt;br /&gt;        } catch (JSONException je) {&lt;br /&gt;            System.out.println(je.toString());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;//String y = new JSONObject().put("JSON", "Hello, World!").toString();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2nd example:&lt;br /&gt;-----------&lt;br /&gt;package nbjson;&lt;br /&gt;&lt;br /&gt;import atg.taglib.json.util.*;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; *&lt;br /&gt; * @author Ali Riza SARAL&lt;br /&gt; */&lt;br /&gt;public class convertToJSONArray1 {&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * @param args the command line arguments&lt;br /&gt;     */&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        CDL cdl=new CDL();&lt;br /&gt;        JSONArray jsonarray = new JSONArray();&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;       JSONObject jsObj = new JSONObject();&lt;br /&gt;       jsObj = jsObj.put("Col1Header", "1");&lt;br /&gt;        jsonarray.add(jsObj);&lt;br /&gt;&lt;br /&gt;       jsObj = new JSONObject();&lt;br /&gt;       jsObj = jsObj.put("Col2Header", "2");&lt;br /&gt;       jsonarray.add(jsObj);&lt;br /&gt;&lt;br /&gt;       String y = jsonarray.toString();&lt;br /&gt;       System.out.println(y);&lt;br /&gt;&lt;br /&gt;       JSONArray jsonarray2 = CDL.toJSONArray(jsonarray, "11,22");&lt;br /&gt;       String y2 = jsonarray2.toString();&lt;br /&gt;       System.out.println(y2);&lt;br /&gt;// output:&lt;br /&gt;//      [{"Col1Header":"1"},{"Col2Header":"2"}]&lt;br /&gt;//      [{"{\"Col1Header\":\"1\"}":"11","{\"Col2Header\":\"2\"}":"22"}]&lt;br /&gt;        } catch (JSONException je) {&lt;br /&gt;            System.out.println(je.toString());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;//String y = new JSONObject().put("JSON", "Hello, World!").toString();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3rd Example:&lt;br /&gt;------------&lt;br /&gt;package nbjson;&lt;br /&gt;&lt;br /&gt;import atg.taglib.json.util.*;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; *&lt;br /&gt; * @author Ali Riza SARAL&lt;br /&gt; */&lt;br /&gt;public class convertToJSONArray2 {&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * @param args the command line arguments&lt;br /&gt;     */&lt;br /&gt;    public static
