<?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-6525846562674072021</id><updated>2012-02-16T21:10:22.285-06:00</updated><category term='EJB'/><category term='URL Rewrite'/><category term='Struts'/><category term='JBoss'/><category term='Java Tutorial'/><category term='Ebooks'/><category term='MySQL'/><category term='MyEclipse'/><category term='JSP'/><category term='Graphics'/><category term='Encoding'/><category term='Javascript'/><category term='Charset'/><category term='Validation'/><category term='Full-text Search'/><category term='XML'/><category term='CMP'/><category term='Design'/><category term='Tutorial'/><category term='Search'/><category term='Java'/><category term='Servlet'/><category term='Form'/><category term='Upload File'/><title type='text'>Cafeman</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cafemen.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6525846562674072021/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cafemen.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Nguyen, Lam D</name><uri>http://www.blogger.com/profile/12108041437914557759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='25' src='http://3.bp.blogspot.com/_eum50fCHUAE/SLC4GzRRyiI/AAAAAAAAALw/wCMX0KSOzCk/S220/prlamnguyen_2x1.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6525846562674072021.post-1991169913368413209</id><published>2008-07-19T12:33:00.000-05:00</published><updated>2008-09-04T14:47:50.121-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CMP'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='EJB'/><category scheme='http://www.blogger.com/atom/ns#' term='JBoss'/><category scheme='http://www.blogger.com/atom/ns#' term='MyEclipse'/><title type='text'>Creating Container-managed Entity Beans with JBoss and MyEclipse</title><content type='html'>&lt;div class="profile-data"&gt;Introduction&lt;/div&gt;An Entity Bean is an Enterprise JavaBean (EJB) that represents a  persistent object in a relational database. JBoss provides two methods  of entity bean persistence, Bean Managed Persistence (BMP) and  Container-Managed Persistence (CMP). With BMP, the entity bean  developer must implement all the persistence logic. With CMP, the  application server manages entity bean persistence; the developer  provides interfaces and configuration.&lt;br /&gt;Entity JavaBeans that use container-managed persistence (CMP) are  convenient, because they require so little custom code to achieve  automatic persistence. But that convenience carries a price: beans  using CMP are also ferociously complex to configure, and often  difficult to debug.&lt;br /&gt;&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;span class="profile-data"&gt;Preparing&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;There're many ways to create EJB with CMP method. But, why we not make it simply by using MyEclipse? In this article, you will see how can i make an CMP in MyEclipse and Jboss step by step.&lt;span id="fullpost"&gt; So, you have to install pre-requirements to make it works. I'm using:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Eclipse 3.2.1 with MyEclipse 5.5.1 GA&lt;/li&gt;&lt;li&gt;Database MSSQL 2000 with services pack 3 (so easily config in tutorial), you can use any SQL server you want.&lt;/li&gt;&lt;li&gt; Java SE 5.0 with Update 10 (the old version of Java SE, lastest realease is &lt;br /&gt;Java SE 6 Update 10 Beta)&lt;/li&gt;&lt;li&gt;jboss-4.0.5.GA&lt;/li&gt;&lt;/ul&gt;You sould create a working directory where you install and store all related files. In this tutorial we'll use &lt;span class="code"&gt;C:\Java&lt;/span&gt; as working directory. If you want to store it somewhere else, then you'll have to replace every occurence of "&lt;span class="code"&gt;C:\Java&lt;/span&gt;" throughout the tutorial by the desired directory.&lt;br /&gt;&lt;br /&gt;&lt;div class="profile-data"&gt;Download and install Java SE JDK&lt;/div&gt;You can download the lastest version of Java SE JDK is Java SE 6 JDK in &lt;a href="http://java.sun.com/javase/downloads/index.jsp"&gt;Java SE download page&lt;/a&gt;. I'm still using Java Se 5 JDK :D&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Pick the latest JDK without Java EE SDK and/or Netbeans. (so, we not need NetBean for whatever :D)&lt;/li&gt;&lt;li&gt;Accept the License Agreement and click at &lt;u&gt;Windows Offline Installation, Multi-language&lt;/u&gt;.&lt;/li&gt;&lt;li&gt;You will get the file &lt;b&gt;jdk-xxx-windows-i586-p.exe&lt;/b&gt; (xxx base on your version downloaded), save it to disk.&lt;/li&gt;&lt;li&gt;Install the JDK and JRE in &lt;span class="code"&gt;C:\Java\&lt;/span&gt; .Default path for install is C:\Program Files\java. You should change to C:\java because when using command, you not need to add double quote to java path.&lt;/li&gt;&lt;/ol&gt;&lt;span class="profile-data"&gt;Download and install Eclipse 3.2 with MyEclipse 5.5.1 GA    &lt;/span&gt;&lt;br /&gt;Eclipse is fee :D. You should download the lastest Eclipse IDE package &lt;b&gt;&lt;a class="packageTitle" href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/R/eclipse-jee-ganymede-win32.zip" onclick="clickCount(110, 'windows');"&gt;Eclipse IDE for Java EE Developers&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Surf to the &lt;a href="http://www.eclipse.org/downloads" target="_blank"&gt;Eclipse download page&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Click at &lt;u&gt;Eclipse IDE for Java EE Developers&lt;/u&gt;.&lt;/li&gt;&lt;li&gt;Select a mirror and you will get the file &lt;b&gt;eclipse-jee-ganymede-win32.zip&lt;/b&gt;, save it to disk.&lt;/li&gt;&lt;li&gt;Extract the zip to your work directory.&lt;/li&gt;&lt;/ol&gt;Well, you can download one package include Eclipse and MyEclipse at MyEclipse Download Page by &lt;b&gt;Accept&lt;/b&gt; License Agreement:  Standard/Pro License and Blue Edition License. Please download Eclipse IDE 3.2.x same as my tutorial.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;See &lt;b&gt;MyEclipse Enterprise Workbench 5.5.1 GA for Windows 98/2000/NT/XP/Vista (05/21/2007)&lt;/b&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Choose All In One Package if you want to install MyEclipse Full Package includes Eclipse or Plug-in if want MyEclipse Standalone.&lt;/li&gt;&lt;li&gt;Install IDE or Plug-In.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;div class="profile-data"&gt;Download jboss&lt;/div&gt;Download lastest version of jboss if you want or jboss version 4.0.5 GA same as mine at &lt;a href="http://www.jboss.org/jbossas/downloads/"&gt;JBoss Application Server Downloads&lt;/a&gt;&lt;br /&gt;Extract the package to your work directory. Done.&lt;br /&gt;&lt;br /&gt;&lt;span class="profile-data"&gt;Install Microsoft SQL Server with Services Pack 3&lt;/span&gt; (or above)&lt;br /&gt;If you installed MS SQL 2000 server, you have to install services pack 3 to work with JNDI Datasource. Download the services pack at &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=90DCD52C-0488-4E46-AFBF-ACACE5369FA3&amp;amp;displaylang=en"&gt;MS SQL 2000 Server with Services Pack 3a download page&lt;/a&gt;.&lt;br /&gt;&lt;b&gt;Important:&lt;/b&gt;   You must upgrade computers running Microsoft® Windows®      XP to Windows XP Service Pack 1 before applying SQL Server 2000 Service Pack      3a. &lt;br /&gt;&lt;br /&gt;&lt;div class="profile-data"&gt;Run and configure Eclipse&lt;/div&gt;&lt;ol&gt;&lt;li&gt;The first time to start Eclipse, you must select work space for Eclipse.&amp;nbsp;&lt;/li&gt;&lt;div class="separator" style="text-align: center; clear: both;"&gt;&lt;a href="http://bp2.blogger.com/_eum50fCHUAE/SIInes14aQI/AAAAAAAAAF4/rCQtwfVNlL8/s1600-h/03.gif" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://bp2.blogger.com/_eum50fCHUAE/SIInes14aQI/AAAAAAAAAF4/a5MAew_zrEw/s320-R/03.gif" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;li&gt;On the welcome screen, click at the icon with the curved arrow at the right side: &lt;i&gt;Go to the workbench&lt;/i&gt;&lt;/li&gt;&lt;div class="separator" style="text-align: center; clear: both;"&gt;&lt;a href="http://bp3.blogger.com/_eum50fCHUAE/SIIoc3PkB7I/AAAAAAAAAGA/QtCAqUrFboY/s1600-h/eclipse-welcomepage.jpg" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://bp3.blogger.com/_eum50fCHUAE/SIIoc3PkB7I/AAAAAAAAAGA/sE3AACY4jas/s320-R/eclipse-welcomepage.jpg" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;li&gt;In the top menu, go to &lt;i&gt;Window&lt;/i&gt; » &lt;i&gt;Preferences&lt;/i&gt; » &lt;i&gt;Java&lt;/i&gt; » &lt;i&gt;Installed JREs&lt;/i&gt;. Select the current JRE (it should automatically be the same as you have installed, but we not use jre as JRE Installed, should edit it to JDK directory, in this case, click jre which automatically add to Eclipse and Edit, point the directory to JDK installed directory, and it'll automatically known what directory where jre is. Now the source code of the Java SE API is available in Eclipse.&lt;/li&gt;&lt;div class="separator" style="text-align: center; clear: both;"&gt;&lt;a href="http://bp0.blogger.com/_eum50fCHUAE/SIIpXJswepI/AAAAAAAAAGI/opOk6g7Is7I/s1600-h/jre.jpg" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://bp0.blogger.com/_eum50fCHUAE/SIIpXJswepI/AAAAAAAAAGI/P09TFQRLBYs/s320-R/jre.jpg" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/ol&gt;&lt;span class="profile-data"&gt;Integrate JBoss in Eclipse    &lt;/span&gt;&lt;br /&gt;In the top menu, go to &lt;i&gt;Window&lt;/i&gt; » &lt;i&gt;Preferences&lt;/i&gt; » &lt;i&gt;MyEclipse&lt;/i&gt; » &lt;i&gt;Application Servers » Jboss 4&lt;/i&gt;. Select Enable Jboss Server, select Jboss Home Directory, others field is default. Then select JDK, choose JDK you installed, click Apply, then Ok. Now Jboss is integrated in Eclipse.&lt;br /&gt;&lt;br /&gt;On the Toolbar of Eclipse, click&amp;nbsp;&lt;img src="http://bp0.blogger.com/_eum50fCHUAE/SIIqy3jNruI/AAAAAAAAAGo/uKcRjT7BXp8/s320-R/jboss-start.jpg" style="border: 0pt none ;" /&gt; and select JBoss server to start jboss. Default port of jboss is 8080(keep in mind), you can change it later. Once it is started, go to &lt;a href="http://localhost:8080/" target="_blank"&gt;http://localhost:8080&lt;/a&gt; (where 8080 is supposed to be the HTTP/1.1 port of Tomcat). You should get the default Jboss home page.&lt;br /&gt;&lt;div class="separator" style="text-align: center; clear: both;"&gt;&lt;a href="http://bp2.blogger.com/_eum50fCHUAE/SIIrDPFG4JI/AAAAAAAAAGw/Eg4iyRyrScU/s1600-h/jboss-default.jpg" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://bp2.blogger.com/_eum50fCHUAE/SIIrDPFG4JI/AAAAAAAAAGw/Tbv_rCPzCAo/s400-R/jboss-default.jpg" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;You can simply stop jboss server by click on &lt;img src="http://bp2.blogger.com/_eum50fCHUAE/SIIrInRYNMI/AAAAAAAAAG4/iF9ZAp6lXOk/s320-R/jboss-stop.jpg" style="border: 0pt none ;" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="profile-data"&gt;Create EJB project with CMP method&lt;/div&gt;In the menu, click &lt;i&gt;File » New » Project..&lt;/i&gt;.In the New Project Dialog, select MyEclipse, then choose EJB Project:&lt;br /&gt;&lt;div class="separator" style="text-align: center; clear: both;"&gt;&lt;a href="http://bp1.blogger.com/_eum50fCHUAE/SIIqQauoAjI/AAAAAAAAAGQ/5dKTd2F2DIg/s1600-h/ejb-1.jpg" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://bp1.blogger.com/_eum50fCHUAE/SIIqQauoAjI/AAAAAAAAAGQ/ZStLroOOyY4/s320-R/ejb-1.jpg" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Click next to continues. Then enter the EJB project details, i choose the name as "CMPTutorial", click finish.&lt;br /&gt;Ok, you prepared an EJB project, now, to create new CMP method, right click on Project at Package Eplorer panel, select &lt;i&gt;New »&lt;/i&gt;Other...Choose MyEclipse in Wizard Dialog and select &lt;i&gt;EJB » Entity Bean&lt;/i&gt;, click next as image below&lt;br /&gt;&lt;div class="separator" style="text-align: center; clear: both;"&gt;&lt;a href="http://bp2.blogger.com/_eum50fCHUAE/SIIqcRbhLCI/AAAAAAAAAGY/V6jmyZokZcU/s1600-h/ejb-2.jpg" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://bp2.blogger.com/_eum50fCHUAE/SIIqcRbhLCI/AAAAAAAAAGY/DHAQkZnYZW8/s320-R/ejb-2.jpg" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;In Entity Bean Diaplog image above, you can see the red ellip. Note: the name of package must be end with ejb folder and the class name must be end with Bean. Example, if your package is "yourpackage" the entity bean must be in "yourpackage.ejb" and the name of class entity bean of yours is YourBean or AnythingBean....Access of the EJB can be Remote/Local or Both, i select Remote in order to access from outside EJB.&lt;br /&gt;&lt;div class="separator" style="text-align: center; clear: both;"&gt;&lt;a href="http://bp1.blogger.com/_eum50fCHUAE/SIIqmCrZX7I/AAAAAAAAAGg/Uz2_4TcTo5Q/s1600-h/ejb-3.jpg" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://bp1.blogger.com/_eum50fCHUAE/SIIqmCrZX7I/AAAAAAAAAGg/VK2MK87NIxM/s320-R/ejb-3.jpg" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Click Finish.&lt;br /&gt;&lt;br /&gt;&lt;div class="profile-data"&gt;The Entity Bean Class&lt;/div&gt;The entity bean class contains the entity bean logic. However, with  CMP, the entity class is abstract, because many of the methods are  defined in the class but implemented by the container. Accessor methods must be both public and abstract and the name of every method defined in CMP must be exactly with database field name.&lt;br /&gt;In database:&lt;br /&gt;&lt;div class="separator" style="text-align: center; clear: both;"&gt;&lt;a href="http://bp0.blogger.com/_eum50fCHUAE/SIIsFGhYebI/AAAAAAAAAHA/I_b6-sc1DKo/s1600-h/database.jpg" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://bp0.blogger.com/_eum50fCHUAE/SIIsFGhYebI/AAAAAAAAAHA/2Oo4jedfNTU/s320-R/database.jpg" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;In Entity Bean class:&lt;br /&gt;&lt;pre class="java" name="code"&gt;/**&lt;br /&gt;* @ejb.interface-method view-type="both"&lt;br /&gt;* @ejb.pk-field&lt;br /&gt;* @ejb.persistence &lt;br /&gt;* @jboss.persistence&lt;br /&gt;*    not-null = "true"&lt;br /&gt;*    auto-increment = "true"&lt;br /&gt;* @jboss.sql-type&lt;br /&gt;*   type = "int"&lt;br /&gt;* @jboss.jdbc-type&lt;br /&gt;*      type = "INTEGER"&lt;br /&gt;* @return&lt;br /&gt;*/&lt;br /&gt;public abstract Integer getArticle_ID();&lt;br /&gt;/**&lt;br /&gt;* @ejb.interface-method view-type="both"  &lt;br /&gt;* @param article_ID  &lt;br /&gt;*/&lt;br /&gt;public abstract void setArticle_ID(Integer article_ID);&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;&lt;br /&gt;* @ejb.persistence-field &lt;br /&gt;* @ejb.interface-method view-type="remote"&lt;br /&gt;* @return&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;public abstract String getArticle_title();&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* @ejb.interface-method view-type="both"  &lt;br /&gt;* @param article_title  &lt;br /&gt;*/&lt;br /&gt;public abstract void setArticle_title(String article_title);&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* @ejb.persistence-field &lt;br /&gt;* @ejb.interface-method view-type="remote"&lt;br /&gt;* @return&lt;br /&gt;*/&lt;br /&gt;public abstract String getArticle_desc();&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* @ejb.interface-method view-type="both"  &lt;br /&gt;* @param article_desc  &lt;br /&gt;*/&lt;br /&gt;public abstract void setArticle_desc(String article_desc);&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* @ejb.persistence-field &lt;br /&gt;* @ejb.interface-method view-type="remote"&lt;br /&gt;* @return&lt;br /&gt;*/&lt;br /&gt;public abstract String getArticle_content();&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* @ejb.interface-method view-type="both"  &lt;br /&gt;* @param article_content  &lt;br /&gt;*/&lt;br /&gt;public abstract void setArticle_content(String article_content);&lt;br /&gt;&lt;/pre&gt;So, because in database, the primary field is article_ID, the getArticle_ID must be declared as pk-field and if it's auto-increment, you have to add &lt;span class="codecomment2"&gt;@jboss.persistence&lt;/span&gt; with not-null="true" and auto-increment = "true". Each method getter in Entity Bean class have to be added in the top with the following: &lt;span class="codecomment2"&gt;@ejb.persistence-field&lt;/span&gt; and &lt;span class="codecomment2"&gt;@ejb.interface-method view-type="remote"&lt;/span&gt; and each method setter, must be: &lt;span class="codecomment2"&gt;@ejb.interface-method view-type="both"&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Add following codes into the top of class:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;/**&lt;br /&gt;*&lt;br /&gt;* @ejb.bean name="Article"&lt;br /&gt;*           display-name="Name for Article"&lt;br /&gt;*           description="Description for Article"&lt;br /&gt;*           jndi-name="ejb/Article"&lt;br /&gt;*           type="CMP"&lt;br /&gt;*           cmp-version="2.x"&lt;br /&gt;*           view-type="remote"&lt;br /&gt;*           schema="ArticlesSchema"&lt;br /&gt;*           primkey-field="article_ID"&lt;br /&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;primkey-class="java.lang.Integer"&lt;br /&gt;* &lt;br /&gt;* @ejb.pk class = "java.lang.Integer"  generate = "False" &lt;br /&gt;* &lt;br /&gt;* @jboss.unknown-pk class="java.lang.Integer"&lt;br /&gt;*      column-name="article_ID"&lt;br /&gt;*      jdbc-type="INTEGER"&lt;br /&gt;*      sql-type="int"&lt;br /&gt;*      auto-increment="true" &lt;br /&gt;* @jboss.entity-command name="mssql-fetch-key"&lt;br /&gt;* &lt;br /&gt;* @ejb.finder query="SELECT OBJECT(b) FROM ArticlesSchema AS b"&lt;br /&gt;*    signature="java.util.Collection findAll()"&lt;br /&gt;* &lt;br /&gt;* @ejb.finder query="SELECT OBJECT(b) FROM ArticlesSchema AS b WHERE b.article_ID=?1"&lt;br /&gt;*    signature="java.util.Collection findByArticleId(java.lang.Integer article_ID)"&lt;br /&gt;* &lt;br /&gt;* @ejb.persistence table-name="Articles"&lt;br /&gt;* @jboss.persistence table-name="Articles"&lt;br /&gt;*/&lt;br /&gt;public abstract class UsersCMPBean implements EntityBean {&lt;/pre&gt;External clients use an entity bean's home interface to create, remove,  and find instances of the entity bean. In Entity Bean class defines the following methods:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="pf"&gt;Create&lt;/span&gt;. Creates an entity bean instance.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span class="pf"&gt;Remove&lt;/span&gt;. (required) Removes an entity bean instance.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span class="pf"&gt;Finder methods&lt;/span&gt;.  Find one or more entity bean instances. Finder method names must start with "find" (which i've defined in the top of the class above). For a CMP entity bean, the finder method &lt;span class="pf"&gt;findByPrimaryKey&lt;/span&gt; must be defined, but with MyEclipse, findByPrimaryKey method will be automatically generated by XDoclet.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;In Entity Bean class, search for ejbCreate() method, replace by:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;public Integer ejbCreate(String article_title, String article_desc, String article_content) throws CreateException {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setArticle_title(article_title);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setArticle_desc(article_desc);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setArticle_content(article_content);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return null;&lt;br /&gt;}&lt;/pre&gt;Becasue article_ID is primary field and it's auto-increment, so you not need to set Article_ID in ejbCreate. Note: ejbCreate() method must return to primary value type(in above, primary field is article_ID, and the value type is Integer, sql-type and jdbc-type are different).&lt;br /&gt;&lt;br /&gt;Replace ejbPostCreate() method by:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;public void ejbPostCreate(String article_title, String article_desc, String article_content) throws CreateException {&lt;br /&gt;}&lt;/pre&gt;The entity Bean Provider may use the ejbPostCreate() to set the values of cmr-fields to complete the initialization of the entity bean instance. An ejbPostCreate() method executes in the same transaction context as the previous ejbCreate() method.&lt;br /&gt;&lt;br /&gt;&lt;div class="profile-data"&gt;Add Standard EJB module to XDoclet project properties&lt;/div&gt;To generate EJB related classes using XDoclet, you have to add Standard EJB module to XDoclet project properties. Right click on Project, click on Properties. Choose &lt;i&gt;MyEclipse » XDoclet&lt;/i&gt;. In Configuration tab, click Add Standard..., select Standard EJB, click OK.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="text-align: center; clear: both;"&gt;&lt;a href="http://bp3.blogger.com/_eum50fCHUAE/SIIsb4fUrmI/AAAAAAAAAHI/_ebH9c4rkRg/s1600-h/ejb-4.jpg" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://bp3.blogger.com/_eum50fCHUAE/SIIsb4fUrmI/AAAAAAAAAHI/4g5Gk9-yYCY/s320-R/ejb-4.jpg" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="profile-data"&gt;Customize XDoclet configuration&lt;/div&gt;&lt;div class="separator" style="float: right; text-align: center; clear: both;"&gt;&lt;a href="http://bp2.blogger.com/_eum50fCHUAE/SIIsvj0MAYI/AAAAAAAAAHQ/6QI7ig6SBUM/s1600-h/ejb-5.jpg" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://bp2.blogger.com/_eum50fCHUAE/SIIsvj0MAYI/AAAAAAAAAHQ/6NJS-zIeeDg/s200-R/ejb-5.jpg" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;/div&gt;Right  click on Standard EJB was defined above, choose Add(not Add Doclet), select jboss, click OK to add jboss entity.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can customize XDoclet with some value in order to generate EJB related classes&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;deloymentDescription&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;destDir :src/META-INF&lt;/li&gt;&lt;br /&gt;&lt;li&gt;validateXML: true&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;fileset &lt;/li&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;dir: src&lt;/li&gt;&lt;br /&gt;&lt;li&gt; includes: **/*.java&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;li&gt; jboss&lt;/li&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;version: 4.0&lt;/li&gt;&lt;br /&gt;&lt;li&gt;alterTable: false&lt;/li&gt;&lt;br /&gt;&lt;li&gt;creatTable: false;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;            datasource: java:/Articles&lt;/li&gt;&lt;br /&gt;&lt;li&gt; datasourceMapping: MS SQLSERVER2000&lt;/li&gt;&lt;br /&gt;&lt;li&gt; destDir :src/META-INF&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;/ul&gt;Following entities are required, you can remove others.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="text-align: center; clear: both;"&gt;&lt;a href="http://bp1.blogger.com/_eum50fCHUAE/SIItXfa4V7I/AAAAAAAAAHg/w3yNS0ddrQU/s1600-h/ejb-6.jpg" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://bp1.blogger.com/_eum50fCHUAE/SIItXfa4V7I/AAAAAAAAAHg/0Jx1-mWsTCU/s320-R/ejb-6.jpg" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="profile-data"&gt;Run XDoclet&lt;/div&gt;We  have not completely finished the source code, but it is time for a  first generation with xdoclet. &lt;br /&gt;&lt;br /&gt;Right click on the project and  choose run xdoclet.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="text-align: center; clear: both;"&gt;&lt;a href="http://bp2.blogger.com/_eum50fCHUAE/SIIts9bfM7I/AAAAAAAAAHo/Vu41Yi7qSU4/s1600-h/ejb-7.jpg" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://bp2.blogger.com/_eum50fCHUAE/SIIts9bfM7I/AAAAAAAAAHo/mpthWzm3fhs/s320-R/ejb-7.jpg" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="profile-data"&gt;Create JNDN Datasource&lt;/div&gt;Create new XML file and deploy(simply save XML file to Jboss directoryserverdefaultdeploy) with name: xxx-ds.xml and inlcudes following codes:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&amp;lt;datasources&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;local-tx-datasource&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;jndi-name&amp;gt;Articles&amp;lt;/jndi-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;connection-url&amp;gt;jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=YourDatabase&amp;lt;/connection-url&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;driver-class&amp;gt;com.microsoft.jdbc.sqlserver.SQLServerDriver&amp;lt;/driver-class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;user-name&amp;gt;username&amp;lt;/user-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;password&amp;gt;password&amp;lt;/password&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;metadata&amp;gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;type-mapping&amp;gt;MS SQLSERVER2000&amp;lt;/type-mapping&amp;gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/metadata&amp;gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/local-tx-datasource&amp;gt;&lt;br /&gt;&amp;lt;/datasources&amp;gt;    &lt;/pre&gt;&lt;br /&gt;&lt;div class="profile-data"&gt;Deploy EJB to Jboss server&lt;/div&gt;Right click in Project, select &lt;i&gt;MyEclipse » Add and Remove Project Deployments...&lt;/i&gt; Following these steps below:&lt;br /&gt;&lt;div class="separator" style="text-align: center; clear: both;"&gt;&lt;a href="http://bp2.blogger.com/_eum50fCHUAE/SIIt6ea5OlI/AAAAAAAAAHw/C8WpFeXkAWU/s1600-h/ejb-8.jpg" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://bp2.blogger.com/_eum50fCHUAE/SIIt6ea5OlI/AAAAAAAAAHw/-I4zUQU_umw/s200-R/ejb-8.jpg" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;a href="http://bp0.blogger.com/_eum50fCHUAE/SIIt_4K5VgI/AAAAAAAAAH4/EJQw6hHf_N4/s1600-h/ejb-9.jpg" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://bp0.blogger.com/_eum50fCHUAE/SIIt_4K5VgI/AAAAAAAAAH4/Tb_UQMzsoe8/s200-R/ejb-9.jpg" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;When completed, in console window announ that Bound EJB Home 'Article' to jndi 'ejb/Article'. That's all, you have created new EJB with CMP method successfully.&lt;br /&gt;&lt;div class="separator" style="text-align: center; clear: both;"&gt;&lt;a href="http://bp0.blogger.com/_eum50fCHUAE/SIIuTWFfDdI/AAAAAAAAAIA/G0LNsj-4nGQ/s1600-h/ejb-10.jpg" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://bp0.blogger.com/_eum50fCHUAE/SIIuTWFfDdI/AAAAAAAAAIA/GZVn8j2OKIo/s400-R/ejb-10.jpg" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;/div&gt;For the next article, i'll guide you how to access EJB with Java Application and Java Web Aplication&lt;br /&gt;Best Rigard!&lt;br /&gt;&lt;br /&gt;&lt;div class="article-copyright"&gt;© 2008, Lam Duy Nguyen&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6525846562674072021-1991169913368413209?l=cafemen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cafemen.blogspot.com/feeds/1991169913368413209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cafemen.blogspot.com/2008/07/creating-container-managed-entity-beans.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6525846562674072021/posts/default/1991169913368413209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6525846562674072021/posts/default/1991169913368413209'/><link rel='alternate' type='text/html' href='http://cafemen.blogspot.com/2008/07/creating-container-managed-entity-beans.html' title='Creating Container-managed Entity Beans with JBoss and MyEclipse'/><author><name>Nguyen, Lam D</name><uri>http://www.blogger.com/profile/12108041437914557759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='25' src='http://3.bp.blogspot.com/_eum50fCHUAE/SLC4GzRRyiI/AAAAAAAAALw/wCMX0KSOzCk/S220/prlamnguyen_2x1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_eum50fCHUAE/SIInes14aQI/AAAAAAAAAF4/a5MAew_zrEw/s72-Rc/03.gif' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6525846562674072021.post-7904006591414790984</id><published>2008-07-16T01:30:00.000-05:00</published><updated>2008-09-04T14:47:50.147-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Servlet'/><category scheme='http://www.blogger.com/atom/ns#' term='Search'/><category scheme='http://www.blogger.com/atom/ns#' term='URL Rewrite'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='JSP'/><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Form'/><title type='text'>Post form to clean, a tutorial with JSP/Servlet and JavaScript</title><content type='html'>Rewritten URLs are valuable because they increase website usability and improve search engine optimisation (SEO), in PHP with mod_rewrite, you can rewrite URL easily and simple, when using java, you can too, just follow this article. Well, but we have a problem: HTML forms and rewrite URL &lt;b&gt;were not designed to work together&lt;/b&gt;. So, you have to use client-side(java script) to transfer page to result page wich rewrited URL. However, you can do it by server-side script by &lt;b&gt;pre-processing input from HTML Forms and transfer to result page&lt;/b&gt;. In this tutorial, i'll guide you how to make it work by 2 way: &lt;span class="codeoutputerror"&gt;Client-side&lt;/span&gt; and &lt;span class="codeoutputerror"&gt;Server-side&lt;/span&gt;.&lt;br /&gt;HTML forms only have two ways to pass variables to their target page: &lt;span class="code"&gt;GET&lt;/span&gt; and &lt;span class="code"&gt;POST&lt;/span&gt; methods. &lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="profile-data"&gt;POST Method:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="text-align: center; clear: both;"&gt;&lt;a href="http://lh4.ggpht.com/prlam.nguyen/SH2XF0uj69I/AAAAAAAAAFY/ee-j_rwY3mA/search-form-get.gif" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://lh4.ggpht.com/prlam.nguyen/SH2W7WiN0hI/AAAAAAAAAFQ/zCfT65fp2tE/search-form-post.gif" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Using POST method is sercured by empty URL in address bar. If the result page is &lt;span class="code"&gt;result.jsp&lt;/span&gt;, URL when POST is only: &lt;span class="code"&gt;result.jsp&lt;/span&gt;. Wow, nice URL, but, the visitor or user can not reuseable for this URL, and can not simply get the same value when re-access this URL. POST method is best for inserting record to database, but worth for searching or fetching records from HTML forms.&lt;br /&gt;&lt;br /&gt;&lt;div class="profile-data"&gt;GET Method:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="text-align: center; clear: both;"&gt;&lt;a href="http://lh4.ggpht.com/prlam.nguyen/SH2W7WiN0hI/AAAAAAAAAFQ/zCfT65fp2tE/search-form-post.gif" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://lh4.ggpht.com/prlam.nguyen/SH2XF0uj69I/AAAAAAAAAFY/ee-j_rwY3mA/search-form-get.gif" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Forms using the GET method send data via the URL. This means that the URL can be copied and revisited at any time.     The problem with this method is the format of the parameters. The values in the URL string are ugly, verbose and     unfriendly; this is what we are trying to avoid. SEO with GET method is so bad. Almost search engineers like: Google, Yahoo, Live... not love URL generated by GET method.&lt;br /&gt;&lt;br /&gt;&lt;span class="profile-data"&gt;The Client-Side Solution:&lt;/span&gt; Post by JavaScript to result page.&lt;br /&gt;&lt;div class="separator" style="text-align: center; clear: both;"&gt;&lt;a href="http://lh4.ggpht.com/prlam.nguyen/SH2W7WiN0hI/AAAAAAAAAFQ/zCfT65fp2tE/search-form-post.gif" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="" src="http://lh5.ggpht.com/prlam.nguyen/SH3dxqJxRdI/AAAAAAAAAFg/fvwcn1msM7M/search-form-javascript.gif" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;/div&gt;Using javascript with windows.location. In the HTML form, you will create new event for form. When the form is submitted, the function in javascript will be called and tranfer to new page. Script will be following codes:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="js"&gt;function getKeyword(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;q=document.getElementById('query').value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;window.location = &amp;quot;http://localhost:8080/PostCleanTut/search/&amp;quot;+q;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="codekeyword"&gt;document&lt;/span&gt;.getElementById(&lt;span class="codevalue"&gt;'query'&lt;/span&gt;).value used for getting value of textfiled inside your search form. After getting the keyword value, script will transfer you to result page(JSP/Servlet) which will be created and rewrited URL yourself. Now, create your new HTML Search form name as &lt;span class="code"&gt;searchform.jsp&lt;/span&gt;, and it likes following codes:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="html"&gt;&amp;lt;html&amp;gt; &lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Search Form&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;form action=&amp;quot;&amp;quot; onsubmit=&amp;quot;getKeyword(); return false;&amp;quot; method=&amp;quot;post&amp;quot; name=&amp;quot;searchForm&amp;quot; id=&amp;quot;searchForm&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Query: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;query&amp;quot; id=&amp;quot;query&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;btnSubmit&amp;quot; id=&amp;quot;btnSubmit&amp;quot; value=&amp;quot;Submit&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/pre&gt;&lt;span class="codeoutputerror"&gt;onsubmit="getKeyword(); return false;"&lt;/span&gt; used to call &lt;span class="code"&gt;getKeyword()&lt;/span&gt; funtion from javacript. When done all thing above, submit your form, data posted will be transfered to result page with example address: &lt;a href="http://localhost:8080/PostCleanTut/search/yourkeyword"&gt;http://localhost:8080/PostCleanTut/search/yourkeyword&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="profile-data"&gt;The Server-side Solution:&lt;/span&gt; Pre-processed by a servlet or JSP self page and send redirect to Result page.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="text-align: center; clear: both;"&gt;&lt;a href="http://lh4.ggpht.com/prlam.nguyen/SH2W7WiN0hI/AAAAAAAAAFQ/zCfT65fp2tE/search-form-post.gif" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="" src="http://lh3.ggpht.com/prlam.nguyen/SH3dzpBLGiI/AAAAAAAAAFo/K0Y_f9xuTbM/search-form-servlet.gif" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;/div&gt;Simply processing with a single jsp or a servlet, you can POST to self jsp page include HTML Form, then send redirect to another page which will be rewrited URL. So, in this article, i will do it with a servlet page by doPost() method. In the pre-processing servlet, doPost() method gets parameter from HTML form, you can clean up by removing unwanted characters. However, this article just do simply to explaint what the servlet do with posting form to clean.&lt;br /&gt;&lt;br /&gt;Create your new servlet, name as: &lt;span class="code"&gt;SearchProcess.java&lt;/span&gt;, codes will be:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;package prlamnguyen.servlet;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.io.PrintWriter;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.HttpServlet;&lt;br /&gt;import javax.servlet.http.HttpServletRequest;&lt;br /&gt;import javax.servlet.http.HttpServletResponse;&lt;br /&gt;import prlamnguyen.util.StringUtil;&lt;br /&gt;public class SearchProcess extends HttpServlet {&lt;br /&gt; &amp;nbsp;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* Constructor of the object.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public SearchProcess() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;super();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* Pre-Processing of Search&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @param request&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @param response&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @throws ServletException&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @throws IOException&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void proccessRequest(HttpServletRequest request,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HttpServletResponse response) throws ServletException, IOException {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Get parameter from HTML form&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String q = request.getParameter(&amp;quot;query&amp;quot;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Clean up by removing unwanted characters if you want&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String newQ = StringUtil.&lt;em&gt;searchInput&lt;/em&gt;(q);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;response.sendRedirect(request.getContextPath() + &amp;quot;/search/&amp;quot; + newQ);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* The doGet method of the servlet. &amp;lt;br&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* This method is called when a form has its tag value method equals to get.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @param request the request send by the client to the server&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @param response the response send by the server to the client&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @throws ServletException if an error occurred&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @throws IOException if an error occurred&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void doGet(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throws ServletException, IOException {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proccessRequest(request, response);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* The doPost method of the servlet. &amp;lt;br&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* This method is called when a form has its tag value method equals to post.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @param request the request send by the client to the server&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @param response the response send by the server to the client&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @throws ServletException if an error occurred&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @throws IOException if an error occurred&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throws ServletException, IOException {&lt;br /&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proccessRequest(request, response);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* Initialization of the servlet. &amp;lt;br&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @throws ServletException if an error occure&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void init() throws ServletException {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Put your code here&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Above is java class which pre-process and transfer, new servlet which will display result and url will be rewriten have to be created such as name &lt;span class="code"&gt;Search.java&lt;/span&gt;. Note: you can do it simply by a single jsp to handle and display result, but with a servlet, you can handle data easily by &lt;span class="code"&gt;doPost()&lt;/span&gt; or &lt;span class="code"&gt;doGet()&lt;/span&gt; methods, so, it's reason i'm using servlet for this tutorial.&lt;br /&gt;&lt;br /&gt;Searching in website is not simply like: where id=?, title=? or onething=?. You should use Full-text Searching,   a full-text search allows a search of multiple text columns. If you are setting up a search of a series of articles or a site with  lots of product-related content, a MySQL FULLTEXT search can make it  very easy to find articles or products related to the keywords used by  a searcher. This search method does exactly what its name implies–it  allows a full search of large text fields. If you're new to Full-text Search, please follow &lt;a href="http://prlamnguyen.blogspot.com/2008/07/using-mysql-full-text-search.html"&gt;this link&lt;/a&gt; to know how MySQL does with Full-text search.&lt;br /&gt;&lt;br /&gt;Following codes bellows are written &lt;b&gt;almost important steps to make search works with URL Rewriter&lt;/b&gt;, something like database connection, JNDI...please do it yourself.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Codes of &lt;span class="code"&gt;Search.java&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;package prlamnguyen.servlet;&lt;br /&gt;/**&lt;br /&gt;* @author Nguyen Duy Lam&lt;br /&gt;*/&lt;br /&gt;import java.sql.Connection;&lt;br /&gt;import java.sql.PreparedStatement;&lt;br /&gt;import java.sql.ResultSet;&lt;br /&gt;import java.sql.SQLException;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import javax.naming.NamingException;&lt;br /&gt;import javax.servlet.ServletContext;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.HttpServlet;&lt;br /&gt;import javax.servlet.http.HttpServletRequest;&lt;br /&gt;import javax.servlet.http.HttpServletResponse;&lt;br /&gt;import prlamnguyen.connector.PrlConnection;&lt;br /&gt;import prlamnguyen.model.Article;&lt;br /&gt;public class Search extends HttpServlet {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Connection con = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PreparedStatement prst = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ResultSet rs = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Here is my Connection class&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// please create your one class to get connection or write it inside this servlet&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PrlConnection prlcon = null;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* Constructor of the object.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public Search() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;super();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @param request&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @param response&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @throws ServletException&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @throws IOException&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void proccessRequest(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throws ServletException, IOException {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Init my new connection&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prlcon = new PrlConnection();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Display articles in result list in result jsp page which will be created before&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Get database connection&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;con=prlcon.getConnection();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Prepare Statement with Full-text search query, i'm using MySQL.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prst=con.prepareStatement(&amp;quot;SELECT * FROM articles WHERE MATCH(article_title, article_desc, article_content) AGAINST (?)&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Get query parameter&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String keyword = request.getParameter(&amp;quot;query&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prst.setString(1, keyword);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rs=prst.executeQuery();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ArrayList&amp;lt;Article&amp;gt; articleList = new ArrayList&amp;lt;Article&amp;gt;();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(rs.next()){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Article article = new Article(rs.getInt(&amp;quot;article_ID&amp;quot;), rs.getString(&amp;quot;article_title&amp;quot;), rs.getString(&amp;quot;article_desc&amp;quot;), rs.getString(&amp;quot;article_content&amp;quot;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;articleList.add(article);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;request.setAttribute(&amp;quot;keyword&amp;quot;, keyword);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;request.setAttribute(&amp;quot;articles&amp;quot;, articleList);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} catch (ClassNotFoundException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} catch (SQLException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} catch (NamingException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} finally {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(!con.isClosed()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;con = prlcon.closeConnection(con, prst, rs);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} catch (SQLException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ServletContext context = getServletContext(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;context.getRequestDispatcher(&amp;quot;/result_search.jsp&amp;quot;).forward(request, response); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* The doGet method of the servlet. &amp;lt;br&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* This method is called when a form has its tag value method equals to get.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @param request the request send by the client to the server&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @param response the response send by the server to the client&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @throws ServletException if an error occurred&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @throws IOException if an error occurred&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void doGet(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throws ServletException, IOException {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proccessRequest(request, response); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* The doPost method of the servlet. &amp;lt;br&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* This method is called when a form has its tag value method equals to post.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @param request the request send by the client to the server&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @param response the response send by the server to the client&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @throws ServletException if an error occurred&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @throws IOException if an error occurred&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void doPost(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throws ServletException, IOException {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proccessRequest(request, response); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* Initialization of the servlet. &amp;lt;br&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @throws ServletException if an error occure&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void init() throws ServletException {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Put your code here&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To display data records, you have to have one data model class. Bellow is one use for above:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;package prlamnguyen.model;&lt;br /&gt;/**&lt;br /&gt;* @author Nguyen Duy Lam&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;public class Article {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;private int article_ID;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;private String article_title;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;private String article_desc;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;private String article_content;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;* @return the article_content&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;public String getArticle_content() {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return article_content;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;* @return the article_desc&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;public String getArticle_desc() {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return article_desc;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;* @return the article_ID&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;public int getArticle_ID() {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return article_ID;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;* @return the article_title&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;public String getArticle_title() {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return article_title;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;* @param article_content the article_content to set&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;public void setArticle_content(String article_content) {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.article_content = article_content;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;* @param article_desc the article_desc to set&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;public void setArticle_desc(String article_desc) {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.article_desc = article_desc;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;* @param article_ID the article_ID to set&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;public void setArticle_ID(int article_ID) {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.article_ID = article_ID;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;* @param article_title the article_title to set&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;public void setArticle_title(String article_title) {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.article_title = article_title;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;public Article() {&lt;br /&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;* Article model for search result&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;* @param article_ID&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;* @param article_title&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;* @param article_desc&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;public Article(int article_ID, String article_title, String article_desc, String article_content) {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.article_ID=article_ID;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.article_title=article_title;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.article_desc=article_desc;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.article_content=article_content;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ok, almost important about bussiness logic are done, to be continue, create new JSP page to display search result. &lt;span class="code"&gt;Search.java&lt;/span&gt; is a servlet, and when fetched data records, it forward to JSP result page name as &lt;span class="code"&gt;result_search.jsp&lt;/span&gt;, you have to create this jsp page, something likes this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="html"&gt;&amp;lt;%@ page contentType=&amp;quot;text/html; charset=utf-8&amp;quot; language=&amp;quot;java&amp;quot; import=&amp;quot;java.util.*&amp;quot; errorPage=&amp;quot;&amp;quot; %&amp;gt;&lt;br /&gt;&amp;lt;%@ page import=&amp;quot;prlamnguyen.model.Article&amp;quot; %&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;% &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ArrayList articleList = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Iterator iterator;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Article article;&lt;br /&gt;&lt;br /&gt;%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Result search 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;p&amp;gt;Search result for: &amp;lt;strong&amp;gt;&amp;lt;%=request.getAttribute(&amp;quot;keyword&amp;quot;) %&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;%&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(request.getAttribute(&amp;quot;articles&amp;quot;)!=null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;articleList = (ArrayList)request.getAttribute(&amp;quot;articles&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;request.removeAttribute(&amp;quot;articles&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iterator = articleList.iterator();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(articleList.isEmpty()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out.print(&amp;quot;&amp;lt;i&amp;gt;Found nothing, sorry ^^!&amp;lt;/i&amp;gt;&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out.print(&amp;quot;&amp;lt;ul&amp;gt;&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while ( iterator.hasNext() ) { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;article = (Article) iterator.next();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out.print(&amp;quot;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;&amp;quot; + article.getArticle_title() +&amp;quot;&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out.print(&amp;quot;&amp;lt;i&amp;gt;&amp;quot; + article.getArticle_desc() + &amp;quot;&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out.print(&amp;quot;&amp;lt;/ul&amp;gt;&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;%&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="profile-data"&gt;&lt;br /&gt;&lt;br /&gt;URL Rewrite&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Follow this article to know how to rewrite URL in java, it will guide you step by step hwo to install URLRewriter and make it work in Java Web Application. When installed, insert into your urlrewrite.xml following codes to make URL rewrite work for search in this tutorial.&lt;br /&gt;&lt;br /&gt;Add new rule somewhere between &lt;span class="codetag"&gt;&amp;lt;urlrewrite&amp;gt;&lt;/span&gt;&lt;span class="code"&gt;..&lt;/span&gt;&lt;span class="codetag"&gt;&amp;lt;/urlrewrite&amp;gt;&lt;/span&gt; tag&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&amp;lt;rule enabled=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;from&amp;gt;/search/([^/.]+)&amp;lt;/from&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;to&amp;gt;/search?query=&lt;pre name="code" class="js"&gt;&amp;lt;/to&amp;gt;&lt;br /&gt;&amp;lt;/rule&amp;gt;&lt;/pre&gt;All thing seem to be done, oh, please edit your HTML form. In the Client-side case, form was submitted by javascript, but in Server-side case, please remove &lt;span class="codeoutputerror"&gt;onsubmit&lt;/span&gt; event, and point action of the form to "&lt;span class="codetagscript"&gt;&amp;lt;%&lt;/span&gt;&lt;span class="code"&gt;=request.getContextPath()&lt;/span&gt; &lt;span class="codetagscript"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="codevalue"&gt;/searchProcess&lt;/span&gt;". Example:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="html"&gt;&amp;lt;%@ page language=&amp;quot;java&amp;quot; pageEncoding=&amp;quot;ISO-8859-1&amp;quot;%&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;title&amp;gt;Search Form&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;form action=&amp;quot;&amp;lt;%=request.getContextPath() %&amp;gt;/searchProcess&amp;quot; method=&amp;quot;post&amp;quot; name=&amp;quot;searchForm&amp;quot; id=&amp;quot;searchForm&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Query: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;query&amp;quot; id=&amp;quot;query&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;btnSubmit&amp;quot; id=&amp;quot;btnSubmit&amp;quot; value=&amp;quot;Submit&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/pre&gt;Ok, deploy your web application into web server, example url for testing will be &lt;a href="http://localhost:8080/PostCleanTut/searchform.jsp"&gt;http://localhost:8080/PostCleanTut/searchform.jsp&lt;/a&gt;&lt;br /&gt;Note: when coding for a search, you have to handle data inputed from user, should replace Statement with PrepareStatement and set parameter for it to avoid SQL Injection&lt;br /&gt;Best Rigard!&lt;br /&gt;&lt;div class="article-copyright"&gt;©2008 Lam Duy Nguyen&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6525846562674072021-7904006591414790984?l=cafemen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cafemen.blogspot.com/feeds/7904006591414790984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cafemen.blogspot.com/2008/07/post-form-to-clean-tutorial-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6525846562674072021/posts/default/7904006591414790984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6525846562674072021/posts/default/7904006591414790984'/><link rel='alternate' type='text/html' href='http://cafemen.blogspot.com/2008/07/post-form-to-clean-tutorial-with.html' title='Post form to clean, a tutorial with JSP/Servlet and JavaScript'/><author><name>Nguyen, Lam D</name><uri>http://www.blogger.com/profile/12108041437914557759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='25' src='http://3.bp.blogspot.com/_eum50fCHUAE/SLC4GzRRyiI/AAAAAAAAALw/wCMX0KSOzCk/S220/prlamnguyen_2x1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/prlam.nguyen/SH2W7WiN0hI/AAAAAAAAAFQ/zCfT65fp2tE/s72-c/search-form-post.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6525846562674072021.post-2804206919001943307</id><published>2008-07-07T10:40:00.000-05:00</published><updated>2008-09-04T14:47:50.133-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Full-text Search'/><title type='text'>Using a MySQL Full-Text Search</title><content type='html'>A full-text search allows a search of multiple text columns. If you are  setting up a search of a series of articles or a site with lots of  product-related content, a MySQL FULLTEXT search can make it very easy  to find articles or products related to the keywords used by a  searcher. This search method does exactly what its name implies–it  allows a full search of large text fields. A FULLTEXT search is easy to  set up if you just follow these simple instructions.&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;Basic FULLTEXT search has been available in MySQL since version  3.23.23. MySQL version 4 introduced more complex fulltext search  functions that include boolean searches. This MySQL tutorial covers  basic text searches, which is the type of search most commonly used.  MySQL refers to this simple type of search as Natural Language  Full-Text Searches.&lt;br /&gt;&lt;br /&gt;FULLTEXT searches are only available with a MyISAM table type,  which is MySQL’s default table type unless another type is specified.  One of the nice things about this type of search is that it supports  stop words (search words that are ignored for efficiency) and the  results are sorted by relevancy.&lt;br /&gt;&lt;br /&gt;First, you will need to create a FULLTEXT index using one or more  text-type data columns (TEXT, CHAR or VARCHAR). An index organizes data  and makes it more efficient to find whatever you are searching for.  It’s common to set up a search that includes the content in an article,  as well as the article title, but other relevant text columns can also  be included. Just do not overload the index or the search by including  columns that are not absolutely necessary. There are two easy ways to  set up a FULLTEXT index with an existing database table–either through  an SQL statement or by using phpMyAdmin.&lt;br /&gt;&lt;br /&gt;If you like working with MySQL from a command line, the following  statement will create an index for an existing table called ‘products’.  Both the product name and description columns are included in the index.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="sql"&gt;ALTER TABLE products ADD FULLTEXT (product_name, product_description);  &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You can also use phpMyAdmin to create the index.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="text-align: center; clear: both;"&gt;&lt;a href="http://bp0.blogger.com/_eum50fCHUAE/SHDomOomZeI/AAAAAAAAAB8/iU9jZcQ_DHg/s1600-h/MySQL01.png" imageanchor="1" style="background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://bp0.blogger.com/_eum50fCHUAE/SHDomOomZeI/AAAAAAAAAB8/w7bQz9LctNs/s400-R/MySQL01.png" style="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Select the table, go to the index section of the Table page, enter the number of columns you wish to index, and click Go.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;On the Create a New Index page, select FULLTEXT as the index type,  then select the columns you want to include in the index. You can name  the index if you wish, but it is not necessary.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Click Save. &lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;There are a few things you should know about the basic FULLTEXT search. First, all &lt;a href="http://dev.mysql.com/doc/refman/5.0/en/fulltext-stopwords.html" target="_blank"&gt;MySQL stopwords&lt;/a&gt; are ignored in the keyword phrase used in a search. Stopwords are  commonly used words that generally do not add anything useful to a  search phrase. Second, alphabetic character case is ignored in a MySQL  search, so you do not have to convert anything to all upper or lower  case in order to search. Third, any word found in more than 50% of the  rows in the index will be ignored when you use the basic text search.  Fourth, the results will be automatically sorted by relevancy, so the  more times the search words appear in a row in the index, the more  relevant that particular entry will be. Fifth, remember that MySQL does  not index any words that are 3 or less characters in length, so very  short words are ignored. Sixth, hyphenated words are treated as  separate words.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;OK. Lets set up a search to look for a particular product. A  FULLTEXT search use MATCH and AGAINST verbs. You will MATCH the column  fields AGAINST the text word or phrase you are searching for.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Let’s say that the web site’s product offering is machine tools and  you are searching for a drill press. Your query may look like the  following:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="sql"&gt;SELECT * FROM products WHERE  MATCH ( product_name, product_description ) AGAINST ('drill press');  &lt;/pre&gt;&lt;br /&gt;That’s all there is to it. The results should display all rows in  the table that refer to drill presses. The results will display in  descending order of relevancy, which means the most relevant products  will display first.&lt;br /&gt;&lt;br /&gt;Useful link:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://devzone.zend.com/node/view/id/1304"&gt;http://devzone.zend.com/node/view/id/1304&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://dev.mysql.com/doc/refman/5.0/en/fulltext-query-expansion.html%20"&gt;http://dev.mysql.com/doc/refman/5.0/en/fulltext-query-expansion.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6525846562674072021-2804206919001943307?l=cafemen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cafemen.blogspot.com/feeds/2804206919001943307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cafemen.blogspot.com/2008/07/using-mysql-full-text-search.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6525846562674072021/posts/default/2804206919001943307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6525846562674072021/posts/default/2804206919001943307'/><link rel='alternate' type='text/html' href='http://cafemen.blogspot.com/2008/07/using-mysql-full-text-search.html' title='Using a MySQL Full-Text Search'/><author><name>Nguyen, Lam D</name><uri>http://www.blogger.com/profile/12108041437914557759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='25' src='http://3.bp.blogspot.com/_eum50fCHUAE/SLC4GzRRyiI/AAAAAAAAALw/wCMX0KSOzCk/S220/prlamnguyen_2x1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_eum50fCHUAE/SHDomOomZeI/AAAAAAAAAB8/w7bQz9LctNs/s72-Rc/MySQL01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6525846562674072021.post-960551191593321108</id><published>2008-07-06T07:02:00.000-05:00</published><updated>2008-09-04T14:47:50.160-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>How to read XML file in Java</title><content type='html'>This sample code reads the XML file using DOM parser. DOM parser loads the XML file into the memory and makes an object model of it. This Object modal can be traversed to get its elements.&lt;br /&gt;&lt;br /&gt;This code will parse the following &lt;span class="code"&gt;MyXMLFile.xml &lt;/span&gt;file and print its elements to the console.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="profile-data"&gt;XML file: &lt;/span&gt;&lt;span class="code"&gt;MyXMLFile.xml&lt;/span&gt;&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&amp;lt;company&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;employee&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;firstname&amp;gt;Tom&amp;lt;/firstname&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;lastname&amp;gt;Cruise&amp;lt;/lastname&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/employee&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;employee&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;firstname&amp;gt;Paul&amp;lt;/firstname&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;lastname&amp;gt;Enderson&amp;lt;/lastname&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/employee&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;employee&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;firstname&amp;gt;George&amp;lt;/firstname&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;lastname&amp;gt;Bush&amp;lt;/lastname&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/employee&amp;gt;&lt;br /&gt;&amp;lt;/company&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre name="code" class="java"&gt;import java.io.File;&lt;br /&gt;import javax.xml.parsers.DocumentBuilder;&lt;br /&gt;import javax.xml.parsers.DocumentBuilderFactory;&lt;br /&gt;import org.w3c.dom.Document;&lt;br /&gt;import org.w3c.dom.Element;&lt;br /&gt;import org.w3c.dom.Node; &lt;br /&gt;import org.w3c.dom.NodeList; &lt;br /&gt;&lt;br /&gt;public class XMLReader {            &lt;br /&gt;   public static void main(String argv[]) {               &lt;br /&gt;      try {                  &lt;br /&gt;        File file = new File("c:\MyXMLFile.xml");                 &lt;br /&gt;        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DocumentBuilder db = dbf.newDocumentBuilder(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Document doc = db.parse(file); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;doc.getDocumentElement().normalize(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("Root element " + doc.getDocumentElement().getNodeName()); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NodeList nodeLst = doc.getElementsByTagName("employee"); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("Information of all employees"); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (int s = 0; s &amp;lt; nodeLst.getLength(); s++) { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Node fstNode = nodeLst.item(s);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (fstNode.getNodeType() == Node.ELEMENT_NODE) { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Element fstElmnt = (Element) fstNode; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("firstname"); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Element fstNmElmnt = (Element) fstNmElmntLst.item(0); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NodeList fstNm = fstNmElmnt.getChildNodes(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("First Name : " + ((Node) fstNm.item(0)).getNodeValue()); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NodeList lstNmElmntLst = fstElmnt.getElementsByTagName("lastname"); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Element lstNmElmnt = (Element) lstNmElmntLst.item(0); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NodeList lstNm = lstNmElmnt.getChildNodes(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("Last Name : " + ((Node) lstNm.item(0)).getNodeValue()); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} catch (Exception e) { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.printStackTrace(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;} &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6525846562674072021-960551191593321108?l=cafemen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cafemen.blogspot.com/feeds/960551191593321108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cafemen.blogspot.com/2008/07/how-to-read-xml-file-in-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6525846562674072021/posts/default/960551191593321108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6525846562674072021/posts/default/960551191593321108'/><link rel='alternate' type='text/html' href='http://cafemen.blogspot.com/2008/07/how-to-read-xml-file-in-java.html' title='How to read XML file in Java'/><author><name>Nguyen, Lam D</name><uri>http://www.blogger.com/profile/12108041437914557759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='25' src='http://3.bp.blogspot.com/_eum50fCHUAE/SLC4GzRRyiI/AAAAAAAAALw/wCMX0KSOzCk/S220/prlamnguyen_2x1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6525846562674072021.post-1086690431477281271</id><published>2008-06-28T06:36:00.000-05:00</published><updated>2008-09-04T14:47:50.073-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='MyEclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Upload File'/><category scheme='http://www.blogger.com/atom/ns#' term='Struts'/><title type='text'>Struts: Upload file using Struts and Generates unique ID for file name</title><content type='html'>Someone finding the way to upload file with struts, it's simple...You only create form with Struts: Form class with file property is FormFile. But,..&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;how to upload file to server with unique name in folder if some file has same name ???&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;. &lt;/span&gt;Now, with this post, you'll resolve it, &lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;very simple!!!&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span id='fullpost'&gt;First, simply create your Struts form class, below is &lt;span style="font-weight: bold;"&gt;UploadFileForm&lt;/span&gt;, class extends ValidatorActionForm because i want to validate Form for uploading, class:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;package prlamnguyen.struts.form;&lt;br /&gt;&lt;br /&gt;import javax.servlet.http.HttpServletRequest;&lt;br /&gt;import org.apache.struts.action.ActionMapping;&lt;br /&gt;import org.apache.struts.upload.FormFile;&lt;br /&gt;import org.apache.struts.validator.ValidatorActionForm;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Upload File Form Class.&lt;br /&gt;*&lt;br /&gt;* &lt;span style="font-weight: bold;"&gt;@author&lt;/span&gt; prlamnguyen&lt;br /&gt;* &lt;span style="font-weight: bold;"&gt;@link&lt;/span&gt; http://prlamnguyen.blogspot.com/2008/06/upload-file-using-struts-and-generates.html&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;public class UploadFileForm extends ValidatorActionForm {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   /*&lt;br /&gt;   * Extends ValidatorActionForm if you want to validate form&lt;br /&gt;   */&lt;br /&gt;&lt;br /&gt;   /** image property */&lt;br /&gt;   private String fileName;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   /** fileImage property */&lt;br /&gt;   private FormFile file&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;   * @return the file&lt;br /&gt;   */&lt;br /&gt;   public FormFile getFile() {&lt;br /&gt;      return file;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;   * @return the fileName&lt;br /&gt;   */&lt;br /&gt;   public String getFileName() {&lt;br /&gt;      return fileName;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;   * @param file the file to set&lt;br /&gt;   */&lt;br /&gt;   public void setFileImage(FormFile file){&lt;br /&gt;      this.file = file;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;   * @param fileName the fileName to set&lt;br /&gt;   */&lt;br /&gt;   public void setImage(String fileName) {&lt;br /&gt;      this.fileName = fileName;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;   * Method validate&lt;br /&gt;   * @param mapping&lt;br /&gt;   * @param request&lt;br /&gt;   * @return ActionErrors&lt;br /&gt;   */&lt;br /&gt;   public ActionErrors validate(ActionMapping mapping,&lt;br /&gt;   HttpServletRequest request) {&lt;br /&gt;      // Validate your form if you want&lt;br /&gt;      // This helpful for validate type of file, size, extension of file ....&lt;br /&gt;      return null;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;   * Method reset&lt;br /&gt;   * @param mapping&lt;br /&gt;   * @param request&lt;br /&gt;   */&lt;br /&gt;   public void reset(ActionMapping mapping, HttpServletRequest request) {&lt;br /&gt;      // Reset your form input&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Above is UploadFileForm class, we have 2 properties: (String) fileName and (FormFile)file , with property file, you must import org.apache.struts.upload.FormFile which is struts capabilities, with MyEclipse 3.x or above, you can do that simply.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, we must create action class for struts, name of action class is UploadFileAction:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;package prlamnguyen.struts.action;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import java.io.File;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import javax.servlet.http.HttpServletRequest;&lt;br /&gt;import javax.servlet.http.HttpServletResponse;&lt;br /&gt;import prlamnguyen.struts.form.UploadFileForm;&lt;br /&gt;&lt;br /&gt;import org.apache.struts.action.Action;&lt;br /&gt;import org.apache.struts.action.ActionForm;&lt;br /&gt;import org.apache.struts.action.ActionForward;&lt;br /&gt;import org.apache.struts.action.ActionMapping;&lt;br /&gt;import org.apache.struts.upload.FormFile;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Creation date: 05-31-2008&lt;br /&gt;*&lt;br /&gt;* Upload File Action Class.&lt;br /&gt;*&lt;br /&gt;* &lt;b&gt;@author&lt;/b&gt; prlamnguyen&lt;br /&gt;* &lt;b&gt;@link&lt;/b&gt; http://prlamnguyen.blogspot.com/2008/06/upload-file-using-struts-and-generates.html&lt;br /&gt;*&lt;br /&gt;* Definition:&lt;br /&gt;* &lt;b&gt;@struts&lt;/b&gt;.action path="/uploadFile" name="uploadFileForm" input="/upload_file.jsp" scope="request" validate="true"&lt;br /&gt;* &lt;b&gt;@struts&lt;/b&gt;.action-forward name="failed" path="/upload_file.jsp"&lt;br /&gt;* &lt;b&gt;@struts&lt;/b&gt;.action-forward name="success" path="/upload_successful.jsp"&lt;br /&gt;*/&lt;br /&gt;public class UploadFileAction extends Action {&lt;br /&gt;   /*&lt;br /&gt;   * Generated Methods&lt;br /&gt;   */&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;* &lt;b&gt;@param&lt;/b&gt; uploadForm&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;* &lt;b&gt;@return&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;   public String uploadFile(UploadFileForm uploadForm) {&lt;br /&gt;      // Process the FormFile&lt;br /&gt;      FormFile myFile = uploadForm.getFile();&lt;br /&gt;      String fileName="default";&lt;br /&gt;      // Get the file name&lt;br /&gt;      try {&lt;br /&gt;          // Precreate an unique file and then write the InputStream of the uploaded file to it.&lt;br /&gt;          File uniqueFile = DoFile.uniqueFile(new File("your file patch"), myFile.getFileName());&lt;br /&gt;          DoFile.write(uniqueFile, myFile.getInputStream());&lt;br /&gt;          fileName = uniqueFile.getName();&lt;br /&gt;&lt;br /&gt;          // Show succes message.&lt;br /&gt;          System.out.println("Upload file complete");&lt;br /&gt;&lt;br /&gt;      } catch (IOException e) {&lt;br /&gt;&lt;br /&gt;          // Show error message.&lt;br /&gt;          System.out.println("Upload file failed");&lt;br /&gt;&lt;br /&gt;          // Always log stacktraces.&lt;br /&gt;          e.printStackTrace();&lt;br /&gt;      }&lt;br /&gt;      return fileName;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;* Method execute&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;* &lt;b&gt;@param&lt;/b&gt; mapping&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;* &lt;b&gt;@param&lt;/b&gt; form&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;* &lt;b&gt;@param&lt;/b&gt; request&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;* &lt;b&gt;@param&lt;/b&gt; response&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;* &lt;b&gt;@return&lt;/b&gt; ActionForward&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;   public ActionForward execute(ActionMapping mapping, ActionForm form,&lt;br /&gt;       HttpServletRequest request, HttpServletResponse response) {&lt;br /&gt;       UploadFileForm uploadForm = (UploadFileForm) form;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// to do execute&lt;br /&gt;       ActionForward forward = new ActionForward();&lt;br /&gt;&lt;br /&gt;       image = uploadImage(uploadForm);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       return forward = mapping.findForward("success");&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ukie, all important thing done, DoFile above is one class file you must declare, and Struts must be config-ed:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;DoFile Class:&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;/**&lt;br /&gt;* Generate unique file based on the given path and name. If the file exists, then it will&lt;br /&gt;* add "[i]" to the file name as long as the file exists. The value of i can be between&lt;br /&gt;* 0 and 2147483647 (the value of Integer.MAX_VALUE).&lt;br /&gt;* &lt;b&gt;@param&lt;/b&gt; filePath The path of the unique file.&lt;br /&gt;* &lt;b&gt;@param&lt;/b&gt; fileName The name of the unique file.&lt;br /&gt;* &lt;b&gt;@return&lt;/b&gt; The unique file.&lt;br /&gt;* &lt;b&gt;@throws&lt;/b&gt; IOException If unique file cannot be generated, this can be caused if all file&lt;br /&gt;* names are already in use. You may consider another filename instead.&lt;br /&gt;*/&lt;br /&gt;public static File uniqueFile(File filePath, String fileName) throws IOException {&lt;br /&gt;   File file = new File(filePath, fileName);&lt;br /&gt;   if (file.exists()) {&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Split filename and add braces, e.g. "name.ext" --&amp;gt; "name[", "].ext".&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String prefix;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String suffix;&lt;br /&gt;      &amp;nbsp;&amp;nbsp;int dotIndex = fileName.lastIndexOf(".");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;if (dotIndex &amp;gt; -1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prefix = fileName.substring(0, dotIndex) + "[";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;suffix = "]" + fileName.substring(dotIndex);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prefix = fileName + "[";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;suffix = "]";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int count = 0;&lt;br /&gt;      &amp;nbsp;&amp;nbsp;// Add counter to filename as long as file exists.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while (file.exists()) {&lt;br /&gt;&lt;br /&gt;       &amp;nbsp;&amp;nbsp;&amp;nbsp;if (count &amp;lt; 0) { // int++ restarts at -2147483648 after 2147483647.&lt;br /&gt;          &amp;nbsp;&amp;nbsp;&amp;nbsp;throw new IOException("No unique filename available for " + fileName&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ " in path " + filePath.getPath() + ".");&lt;br /&gt;       &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;       &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Glue counter between prefix and suffix, e.g. "name[" + count + "].ext".&lt;br /&gt;       &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;file = new File(filePath, prefix + (count++) + suffix);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   return file;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Write byte inputstream to file. If file already exists, it will be overwritten.It's highly&lt;br /&gt;* recommended to feed the inputstream as BufferedInputStream or ByteArrayInputStream as those&lt;br /&gt;* are been automatically buffered.&lt;br /&gt;* &lt;b&gt;@param&lt;/b&gt; file The file where the given byte inputstream have to be written to.&lt;br /&gt;* &lt;b&gt;@param&lt;/b&gt; input The byte inputstream which have to be written to the given file.&lt;br /&gt;* &lt;b&gt;@throws&lt;/b&gt; IOException If writing file fails.&lt;br /&gt;*/&lt;br /&gt;public static void write(File file, InputStream input) throws IOException {&lt;br /&gt;   write(file, input, false);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="comment-footer"&gt;&lt;b&gt;Struts Config:&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="xml"&gt;&amp;lt;form-beans &amp;gt;&lt;br /&gt;  &amp;lt;form-bean name="UploadFileForm" type="prlamnguyen.struts.form.UploadFileForm" /&amp;gt;&lt;br /&gt;&amp;lt;/form-beans&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;action-mappings &amp;gt;&lt;br /&gt;&amp;lt;action&lt;br /&gt;attribute="uploadForm"&lt;br /&gt;    input="/upload_file.jsp"&lt;br /&gt;    name="uploadFileForm"&lt;br /&gt;    path="/uploadFile"&lt;br /&gt;    scope="request"&lt;br /&gt;    type="prlamnguyen.struts.action.UploadFileAction"&amp;gt;&lt;br /&gt;    &amp;lt;forward name="failed" path="/upload_file.jsp" /&amp;gt;&lt;br /&gt;    &amp;lt;forward name="success" path="/upload_successful.jsp" /&amp;gt;&lt;br /&gt;&amp;lt;/action&amp;gt;&lt;br /&gt;&amp;lt;/action-mappings&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Done, finish is create new JSP page and create Struts Form JSP, to upload your file, form with property:  &lt;span style="font-weight: bold;"&gt;file&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, use any edit program, create new jsp file, here i create &lt;span style="font-weight: bold;"&gt;upload_file.jsp&lt;/span&gt; (for input and forward failed)  :&lt;br /&gt;&lt;br /&gt;&lt;pre class="html" name="code"&gt;&amp;lt;html:form action="/uploadFile" enctype="multipart/form-data"&amp;gt;&lt;br /&gt;&amp;lt;table width="100%" border="0" cellspacing="0" cellpadding="0"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;td class="spectd"&amp;gt;Chose file to upload: &amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;td&amp;gt;&amp;lt;html:file property="file"/&amp;gt; &amp;lt;html:errors property="file"/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&amp;lt;div align="center"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;html:submit/&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;html:reset/&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/html:form&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Note: you must have &lt;span class="codeoutputerror"&gt;enctype="multipart/form-data"&lt;/span&gt; to  send request upload file to server.&lt;br /&gt;&lt;br /&gt;You should create successful page to print out when upload successful. In struts config, i created config-forward &lt;span class="codevalue"&gt;"success"&lt;/span&gt; with &lt;b&gt;upload_successful.jsp&lt;/b&gt; jsp page.&lt;br /&gt;&lt;br /&gt;If you done everything above, all classes were created, build all and deploy into your server and testing from url: &lt;a href="http://localhost:8080/UploadFile/upload_file.jsp"&gt;http://localhost:8080/UploadFile/upload_file.jsp&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;All wrong please email &lt;a href="mailto:prlam.nguyen@gmail.com"&gt;prlam.nguyen@gmail.com&lt;/a&gt; or comment here.&lt;br /&gt;Regard!  &lt;br /&gt;&lt;br /&gt;&lt;p class='article-copyright'&gt;© 2008, Lam Duy Nguyen&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6525846562674072021-1086690431477281271?l=cafemen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cafemen.blogspot.com/feeds/1086690431477281271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cafemen.blogspot.com/2008/06/struts-upload-file-using-struts-and.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6525846562674072021/posts/default/1086690431477281271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6525846562674072021/posts/default/1086690431477281271'/><link rel='alternate' type='text/html' href='http://cafemen.blogspot.com/2008/06/struts-upload-file-using-struts-and.html' title='Struts: Upload file using Struts and Generates unique ID for file name'/><author><name>Nguyen, Lam D</name><uri>http://www.blogger.com/profile/12108041437914557759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='25' src='http://3.bp.blogspot.com/_eum50fCHUAE/SLC4GzRRyiI/AAAAAAAAALw/wCMX0KSOzCk/S220/prlamnguyen_2x1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6525846562674072021.post-8759325379945772110</id><published>2008-06-27T22:44:00.000-05:00</published><updated>2008-09-04T14:47:50.109-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Encoding'/><category scheme='http://www.blogger.com/atom/ns#' term='Charset'/><title type='text'>Converting Between Strings (Unicode) and Other Character Set Encodings</title><content type='html'>&lt;p&gt;Many network protocols and files store their characters with a byte-oriented character set such as &lt;span class="code"&gt;ISO-8859-1&lt;/span&gt; (ISO-Latin-1).  However, Java's native character encoding is Unicode. This example  demonstrates how to convert &lt;span class="code"&gt;ISO-8859-1&lt;/span&gt; encoded bytes in a &lt;span class="code"&gt;ByteBuffer&lt;/span&gt; to a string in a &lt;span class="code"&gt;CharBuffer&lt;/span&gt; and visa versa.&lt;/p&gt;      &lt;pre name="code" class="java"&gt;// Create the encoder and decoder for ISO-8859-1  &lt;br /&gt;Charset charset = Charset.forName(&amp;quot;ISO-8859-1&amp;quot;);&lt;br /&gt;CharsetDecoder decoder = charset.newDecoder();&lt;br /&gt;CharsetEncoder encoder = charset.newEncoder();&lt;br /&gt;try {  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Convert a string to ISO-LATIN-1 bytes in a ByteBuffer  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// The new ByteBuffer is ready to be read.  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ByteBuffer bbuf = encoder.encode(CharBuffer.wrap(&amp;quot;a string&amp;quot;));  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Convert ISO-LATIN-1 bytes in a ByteBuffer to a character ByteBuffer and then to a string.  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// The new ByteBuffer is ready to be read.  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CharBuffer cbuf = decoder.decode(bbuf);  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String s = cbuf.toString();  &lt;br /&gt;} catch (CharacterCodingException e) {  &lt;br /&gt;}&lt;/pre&gt;      &lt;p&gt;In the example above, the encoding and decoding methods created new &lt;span class="code"&gt;ByteBuffers&lt;/span&gt; into which to encode or decoding the data.  Moreover, the newly allocated ByteBuffers are non-direct.  The encoder and decoder provide methods that use a supplied ByteBuffer rather than create one. Here's an example that uses these methods:&lt;/p&gt;      &lt;div style="text-align: justify;"&gt;&lt;/div&gt;      &lt;pre class="java" name="code"&gt;// Create a direct ByteBuffer.    &lt;br /&gt;// This buffer will be used to send and recieve data from channels.  &lt;br /&gt;ByteBuffer bbuf = ByteBuffer.allocateDirect(1024);  &lt;br /&gt;// Create a non-direct character ByteBuffer  &lt;br /&gt;CharBuffer cbuf = CharBuffer.allocate(1024);  &lt;br /&gt;// Convert characters in cbuf to bbuf  &lt;br /&gt;encoder.encode(cbuf, bbuf, false);  &lt;br /&gt;// flip bbuf before reading from it  &lt;br /&gt;bbuf.flip();  &lt;br /&gt;// Convert bytes in bbuf to cbuf  &lt;br /&gt;decoder.decode(bbuf, cbuf, false);  &lt;br /&gt;// flip cbuf before reading from it  &lt;br /&gt;cbuf.flip();&lt;/pre&gt;      &lt;p&gt;Hope you think it's helpful :D - this post i found in &lt;a href="http://www.exampledepot.com/"&gt;www.exampledepot.com&lt;/a&gt;&lt;span style="font-size:85%; "&gt;&lt;br /&gt;&lt;br /&gt;      &lt;/span&gt;&lt;/p&gt;      &lt;div style="text-align: justify;"&gt;&lt;/div&gt;      &lt;p&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6525846562674072021-8759325379945772110?l=cafemen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cafemen.blogspot.com/feeds/8759325379945772110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cafemen.blogspot.com/2008/06/converting-between-strings-unicode-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6525846562674072021/posts/default/8759325379945772110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6525846562674072021/posts/default/8759325379945772110'/><link rel='alternate' type='text/html' href='http://cafemen.blogspot.com/2008/06/converting-between-strings-unicode-and.html' title='Converting Between Strings (Unicode) and Other Character Set Encodings'/><author><name>Nguyen, Lam D</name><uri>http://www.blogger.com/profile/12108041437914557759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='25' src='http://3.bp.blogspot.com/_eum50fCHUAE/SLC4GzRRyiI/AAAAAAAAALw/wCMX0KSOzCk/S220/prlamnguyen_2x1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6525846562674072021.post-6019264790820366470</id><published>2008-06-27T09:56:00.000-05:00</published><updated>2008-09-04T14:47:50.098-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ebooks'/><category scheme='http://www.blogger.com/atom/ns#' term='Graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='Design'/><title type='text'>36 Graphics &amp; Design Ebooks</title><content type='html'>&lt;span style="font-size:100%;"&gt;I found it in internet, really useful, hope you like it, ebooks are such as: Maya, Photoshop, Macromedia, Bryce, Digital Photography, &amp;amp; more... Copy these link below and download with flashget, IDM or any Download Manager Program you have&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="html"&gt;f*p://195.135.232.80/Books/design/8.books.Maya.[by.KiN_www.netz.ru].rar&lt;br /&gt;f*p://195.135.232.80/Books/design/A.Short.Course.in.Digital.Photography.[by.KiN_www.netz.ru].rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Adobe.Creative.Suite.Keyboard.Shortcuts.[by.KiN_www.netz.ru]_3,1.MB.rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Adobe.Photoshop.CS.in.10.Simple.Steps.or.Less.(2004).[by.KiN_www.netz.ru]_7,84 MB.rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Adobe.Photoshop.Tutorial.7.Day.Course.html.a.[28.84.MB_www.netz.ru].rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Advanced.3D.Photorealism.Techniques[9,76.MB_RUS_www.netz.ru].rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Bill.Flemming.Advanced.3D.Photorealism.Techniques.[RUS].[by.KiN_www.netz.ru]_9,75 MB.rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Bryce.5.Manual.[by.KiN_www.netz.ru_4.01MB].rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Corel.103.tutorials.RUS.[by.KiN_www.netz.ru].rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Designing Secure Web-Based Applications for Windows 2000.zip&lt;br /&gt;f*p://195.135.232.80/Books/design/DHTML.Weekend.Crash.Course[by.KiN_www.netz.ru].rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Digital.Photography.Hacks.[by.KiN_www.netz.ru]_11,76.MB.rar&lt;br /&gt;f*p://195.135.232.80/Books/design/How.To.Do.Everything.With.Illustrator.[by.KiN_www.netz.ru]_30,58.MB.rar&lt;br /&gt;f*p://195.135.232.80/Books/design/How.To.Do.Everything.With.Photoshop.7.[by.KiN_www.netz.ru]_9,8 MB.rar&lt;br /&gt;f*p://195.135.232.80/Books/design/How.To.Draw.Anime.Photoshop.Coloring.Tips.[by.KiN_www.netz.ru]_773 kB.rar&lt;br /&gt;f*p://195.135.232.80/Books/design/How.To.Draw.Manga.Photoshop.Techniques.[by.KiN_www.netz.ru]_343 kB.rar&lt;br /&gt;f*p://195.135.232.80/Books/design/How.To.Use.Adobe.Photoshop.7.[by.KiN_www.netz.ru]_14,66 MB.rar&lt;br /&gt;f*p://195.135.232.80/Books/design/HTML.4.01.Weekend.Crash.Course[by.KiN_www.netz.ru].rar&lt;br /&gt;f*p://195.135.232.80/Books/design/HTML.Complete.Course.[by.KiN_www.netz.ru]_26,79.MB.rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Learn.How.To.Draw.[by.KiN_www.netz.ru]_1,61.MB.rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Learn.HTML4.In.a.Weekend.[by.KiN_www.netz.ru]_11,02.MB.rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Learning.Macromedia.FlashMX.2004[658.kB_www.netz.ru].rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Macromedia.Dreamweaver.4.Bible[8,86.MB_www.netz.ru].rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Macromedia.Dreamweaver.MX.2004.Web.Application.Recipes[6,5.MB_www.netz.ru].rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Macromedia.Flash.MX.2004.ActionScript.Reference.Guide.rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Macromedia.Flash.MX.2004.Using.Components.rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Macromedia.Flashmx.Actionscript.Reference.Guide.2004[2,66.MB_www.netz.ru].rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Macromedia.Flashmx.Using.Components.2004[979.kB_www.netz.ru].rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Macromedia.Press.Macromedia.Dreamweaver.MX.Dynamic.Applications.[10.46.MB_www.netz.ru].rar&lt;br /&gt;f*p://195.135.232.80/Books/design/New.Riders.Photoshop.7.Power.Shortcuts.[by.KiN_www.netz.ru]_3,5 MB.rar&lt;br /&gt;f*p://195.135.232.80/Books/design/NewRiders.MacromediaDreamweaverMx2004WebApplicationRecipes(6,5MB_www.netz.ru).rar&lt;br /&gt;f*p://195.135.232.80/Books/design/PhotoShop.&amp;amp;.Illustrator.Tutorial.[14.37.MB_www.netz.ru].rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Photoshop.6.Bible.[13.95.MB_www.netz.ru].rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Photoshop.75.tutorial.RUS.[by.KiN_www.netz.ru].rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Photoshop.CS.Tips.and.Tricks.[by.KiN_www.netz.ru].rar&lt;br /&gt;f*p://195.135.232.80/Books/design/Photoshop.Rus.4-18[6.5Mb,_www.netz.ru].rar&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6525846562674072021-6019264790820366470?l=cafemen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cafemen.blogspot.com/feeds/6019264790820366470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cafemen.blogspot.com/2008/06/36-graphics-design-ebooks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6525846562674072021/posts/default/6019264790820366470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6525846562674072021/posts/default/6019264790820366470'/><link rel='alternate' type='text/html' href='http://cafemen.blogspot.com/2008/06/36-graphics-design-ebooks.html' title='36 Graphics &amp;amp; Design Ebooks'/><author><name>Nguyen, Lam D</name><uri>http://www.blogger.com/profile/12108041437914557759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='25' src='http://3.bp.blogspot.com/_eum50fCHUAE/SLC4GzRRyiI/AAAAAAAAALw/wCMX0KSOzCk/S220/prlamnguyen_2x1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6525846562674072021.post-4647633107141300324</id><published>2007-02-02T04:13:00.000-06:00</published><updated>2008-09-04T14:47:50.198-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='Validation'/><category scheme='http://www.blogger.com/atom/ns#' term='Struts'/><title type='text'>Struts: Validate form with Struts Validation</title><content type='html'>When using Struts, you can easily validate datas before excute. So many way to validate the form with Struts, you can use JavaScripts, XML validator...many, many way to validate them...This article is not a new way for this, but it's simple to use if you're not sure about use javascript or other way.&lt;br /&gt;Before use validating, you must sure that you can create the Struts form. If not, read following article, it's a tutorial how to Create Basic Struts Form.&lt;br /&gt;First, you have to understand that Struts Validation will only work if your form-bean extends &lt;span class="code"&gt;org.apache.struts.validator.ValidatorActionForm&lt;/span&gt;. So, your form which be validated, will looks like:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="codekeyword-bold"&gt;public class&lt;/span&gt; ExampleForm &lt;span class="codekeyword-bold"&gt;extends&lt;/span&gt; ValidatorActionForm {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span id='fullpost'&gt;Following lines belows are code of form-bean in this aticle:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="codekeyword-bold"&gt;package&lt;/span&gt;&lt;b&gt; &lt;/b&gt;prlamnguyen.struts.form;&lt;br /&gt;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;import &lt;/span&gt;javax.servlet.http.HttpServletRequest;      &lt;br /&gt;&lt;span class="codekeyword-bold"&gt;import &lt;/span&gt;org.apache.struts.action.*;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;import&lt;/span&gt; org.apache.struts.validator.ValidatorActionForm;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="codecomment2"&gt;/**&lt;br /&gt;* &lt;b&gt;@author&lt;/b&gt; Nguyen, Lam Duy&lt;br /&gt;* &lt;b&gt;@link&lt;/b&gt; http://prlamnguyen.blogspot.com/2007/02/java-tutorial-validate-form-with-struts.html&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Form bean for the Struts Validation Example.&lt;br /&gt;*&lt;br /&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;public class&lt;/span&gt; ExampleForm &lt;span class="codekeyword-bold"&gt;extends&lt;/span&gt; ValidatorActionForm&lt;br /&gt;{&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&lt;/span&gt; String name=&lt;span class="codekeyword-bold"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&lt;/span&gt; String emailAddress=&lt;span class="codekeyword-bold"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void&lt;/span&gt; setName(String name){&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this&lt;/span&gt;.&lt;span class="codeproperty"&gt;name&lt;/span&gt;=name;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&lt;/span&gt; String getName(){&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return this&lt;/span&gt;.&lt;span class="codeproperty"&gt;name&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void&lt;/span&gt; setEmailAddress(String emailAddress){&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this&lt;/span&gt;.&lt;span class="codeproperty"&gt;emailAddress&lt;/span&gt;=emailAddress;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&lt;/span&gt; String getEmailAddress(){&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&lt;/span&gt; &lt;span class="codekeyword-bold"&gt;this&lt;/span&gt;.&lt;span class="codeproperty"&gt;emailAddress&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="codecomment2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;* Reset all properties to their default values.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;* &lt;b&gt;@param&lt;/b&gt; mapping The mapping used to select this instance&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;* &lt;b&gt;@param&lt;/b&gt; request The servlet request we are processing&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;/span&gt;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void&lt;/span&gt; reset(ActionMapping mapping, HttpServletRequest request) {&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this&lt;/span&gt;.&lt;span class="codeproperty"&gt;name&lt;/span&gt;=&lt;span class="codekeyword-bold"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this&lt;/span&gt;.&lt;span class="codeproperty"&gt;emailAddress&lt;/span&gt;=&lt;span class="codekeyword-bold"&gt;null&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;span class="codecomment2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;* Validate form input before excuted.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;* &lt;b&gt;@param&lt;/b&gt; mapping The mapping used to select this instance&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;* &lt;b&gt;@param&lt;/b&gt; request The servlet request we are processing&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;* &lt;b&gt;@return&lt;/b&gt; errors&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;/span&gt;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&lt;/span&gt; ActionErrors validate( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ActionMapping mapping, HttpServletRequest request ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ActionErrors errors = new ActionErrors();&lt;br /&gt;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&lt;/span&gt;( getName() == &lt;span class="codekeyword-bold"&gt;null&lt;/span&gt; || getName().length() &amp;lt; 1 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;errors.add(&lt;span class="codevalue"&gt;"name"&lt;/span&gt;,&lt;span class="codekeyword-bold"&gt;new&lt;/span&gt; ActionMessage(&lt;span class="codevalue"&gt;"error.name.required"&lt;/span&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&lt;/span&gt;( getEmailAddress() == null || getEmailAddress().length() &amp;lt; 1 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;errors.add(&lt;span class="codevalue"&gt;"emailaddress"&lt;/span&gt;,&lt;span class="codekeyword-bold"&gt;new&lt;/span&gt; ActionMessage(&lt;span class="codevalue"&gt;"error.emailAddress.required"&lt;/span&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&lt;/span&gt; errors;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The above class populates the Example Form data  and  validates it. The validate() method is used to validate the inputs. If  any or all of the fields on the form are blank, error messages  are added to the ActionMapping object. In Struts 1, ActionError seem to be deprecated and will be removed in Struts 2, so, i'm now using ActionMessage in this article. Ok, for the next, you must create a new Action class for Struts, because of form-bean's name is &lt;span class="code"&gt;ExampleForm&lt;/span&gt;, Action class must be named as &lt;span class="code"&gt;ExampleAction&lt;/span&gt; and extends &lt;span class="code"&gt;org.apache.struts.action.Action&lt;/span&gt;. Form-bean above is Model of web struts application and the action class is Controller. I'll not guide to create an Action class, the previous post, i had created one, see &lt;a href="http://prlamnguyen.blogspot.com/2007/02/java-tutorial-basic-web-struts.html"&gt;here&lt;/a&gt;, config Struts is so easy and it was posted in that post.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="profile-data"&gt;Application Resources&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;An importance when using Struts to validate form is display error messages. Ignore everything about Controller and Struts Config, i'll explaint how to display error messages. First, you have to create &lt;span class="code"&gt;ApplicationResources&lt;/span&gt; file in Struts Package, in my post, i packaged my model as &lt;span class="code"&gt;"prlamnguyen.struts.form"&lt;/span&gt;, so &lt;span class="code"&gt;ApplicationResources&lt;/span&gt; will be in &lt;span class="code"&gt;"prlamnguyen.struts"&lt;/span&gt; with name &lt;span class="code"&gt;ApplicationResources.properties&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="code"&gt;ApplicationResources.properties  &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;pre&gt;&lt;span class="codecomment1"&gt;# Resources for parameter 'prlamnguyen.struts.ApplicationResources'&lt;br /&gt;&lt;br /&gt;# Project Example Struts Validation&lt;/span&gt;&lt;br /&gt;&lt;span class="codecomment1"&gt;# This will appear before each individual error.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;errors.prefix=&lt;span class="codevalue"&gt;&amp;lt;span class="errors"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="codecomment1"&gt;# This will appear after each individual error.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;errors.suffix=&lt;span class="codevalue"&gt;&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;/span&gt;&lt;br /&gt;errors.name.required=&lt;span class="codevalue"&gt;Name is required.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;errors.emailAddress.required=&lt;span class="codevalue"&gt;Email Address is required.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Now, create a jsp file to input data. Note, when displaying error messages in jsp page, you can display individual or group error messages. If individual, add property value for each &lt;span class="codetag"&gt;&amp;lt;html:errors /&amp;gt;&lt;/span&gt; else if group errors, only thing to do is adding &lt;span class="codetag"&gt;&amp;lt;html:errors /&amp;gt;&lt;/span&gt; to anywhere you want to display error messages.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="code"&gt;Individual&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;pre&gt;&lt;span class="codetagscript"&gt;&amp;lt;%@&lt;/span&gt; &lt;span class="codetag"&gt;page&lt;/span&gt; &lt;span class="codekeyword"&gt;language=&lt;/span&gt;&lt;span class="codevalue"&gt;"java"&lt;/span&gt; &lt;span class="codekeyword"&gt;pageEncoding=&lt;/span&gt;&lt;span class="codevalue"&gt;"ISO-8859-1"&lt;/span&gt;&lt;span class="codetagscript"&gt;%&amp;gt;&lt;br /&gt;&amp;lt;%@&lt;/span&gt; &lt;span class="codetag"&gt;taglib&lt;/span&gt; &lt;span class="codekeyword"&gt;uri=&lt;/span&gt;&lt;span class="codevalue"&gt;"http://jakarta.apache.org/struts/tags-bean"&lt;/span&gt; &lt;span class="codekeyword"&gt;prefix=&lt;/span&gt;&lt;span class="codevalue"&gt;"bean"&lt;/span&gt;&lt;span class="codetagscript"&gt;%&amp;gt;&lt;br /&gt;&amp;lt;%@&lt;/span&gt; &lt;span class="codetag"&gt;taglib&lt;/span&gt; &lt;span class="codekeyword"&gt;uri=&lt;/span&gt;&lt;span class="codevalue"&gt;"http://jakarta.apache.org/struts/tags-html"&lt;/span&gt; &lt;span class="codekeyword"&gt;prefix=&lt;/span&gt;&lt;span class="codevalue"&gt;"html"&lt;/span&gt;&lt;span class="codetagscript"&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;span class="codetag"&gt;&amp;lt;html&amp;gt; &lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;&lt;/span&gt;JSP for ExampleForm form&lt;span class="codetag"&gt;&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;nbsp;&amp;nbsp; &amp;lt;html:form&lt;/span&gt; &lt;span class="codekeyword"&gt;action=&lt;/span&gt;&lt;span class="codevalue"&gt;"/example"&lt;/span&gt;&lt;span class="codetag"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name : &lt;span class="codetag"&gt;&amp;lt;html:text&lt;/span&gt; &lt;span class="codekeyword"&gt;property=&lt;/span&gt;&lt;span class="codevalue"&gt;"name"&lt;/span&gt;&lt;span class="codetag"&gt;/&amp;gt;&amp;lt;html:errors&lt;/span&gt; &lt;span class="codekeyword"&gt;property=&lt;/span&gt;&lt;span class="codevalue"&gt;"name"&lt;/span&gt;&lt;span class="codetag"&gt;/&amp;gt;&amp;lt;br/&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Email Address : &lt;span class="codetag"&gt;&amp;lt;html:text&lt;/span&gt; &lt;span class="codekeyword"&gt;property=&lt;/span&gt;&lt;span class="codevalue"&gt;"emailAddress"&lt;/span&gt;&lt;span class="codetag"&gt;/&amp;gt;&amp;lt;html:errors&lt;/span&gt; &lt;span class="codekeyword"&gt;property=&lt;/span&gt;&lt;span class="codevalue"&gt;"emailAddress"&lt;/span&gt;&lt;span class="codetag"&gt;/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;html:submit/&amp;gt;&amp;lt;html:cancel/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/html:form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="codetag"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li class="code"&gt;Group&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;pre&gt;&lt;span class="codetagscript"&gt;&amp;lt;%@&lt;/span&gt; &lt;span class="codetag"&gt;page&lt;/span&gt; &lt;span class="codekeyword"&gt;language=&lt;/span&gt;&lt;span class="codevalue"&gt;"java"&lt;/span&gt; &lt;span class="codekeyword"&gt;pageEncoding=&lt;/span&gt;&lt;span class="codevalue"&gt;"ISO-8859-1"&lt;/span&gt;&lt;span class="codetagscript"&gt;%&amp;gt;&lt;br /&gt;&amp;lt;%@&lt;/span&gt; &lt;span class="codetag"&gt;taglib&lt;/span&gt; &lt;span class="codekeyword"&gt;uri=&lt;/span&gt;&lt;span class="codevalue"&gt;"http://jakarta.apache.org/struts/tags-bean"&lt;/span&gt; &lt;span class="codekeyword"&gt;prefix=&lt;/span&gt;&lt;span class="codevalue"&gt;"bean"&lt;/span&gt;&lt;span class="codetagscript"&gt;%&amp;gt;&lt;br /&gt;&amp;lt;%@&lt;/span&gt; &lt;span class="codetag"&gt;taglib&lt;/span&gt; &lt;span class="codekeyword"&gt;uri=&lt;/span&gt;&lt;span class="codevalue"&gt;"http://jakarta.apache.org/struts/tags-html"&lt;/span&gt; &lt;span class="codekeyword"&gt;prefix=&lt;/span&gt;&lt;span class="codevalue"&gt;"html"&lt;/span&gt;&lt;span class="codetagscript"&gt;%&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="codetag"&gt;&amp;lt;html&amp;gt; &lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;&lt;/span&gt;JSP for ExampleForm form&lt;span class="codetag"&gt;&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;span class="codetag"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;html:errors&lt;span class="codevalue"&gt; &lt;/span&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="codetag"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;html:form&lt;/span&gt; &lt;span class="codekeyword"&gt;action=&lt;/span&gt;&lt;span class="codevalue"&gt;"/example"&lt;/span&gt;&lt;span class="codetag"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name : &lt;span class="codetag"&gt;&amp;lt;html:text&lt;/span&gt; &lt;span class="codekeyword"&gt;property=&lt;/span&gt;&lt;span class="codevalue"&gt;"name"&lt;/span&gt;&lt;span class="codetag"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="codetag"&gt;&amp;lt;br/&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Email Address : &lt;span class="codetag"&gt;&amp;lt;html:text&lt;/span&gt; &lt;span class="codekeyword"&gt;property=&lt;/span&gt;&lt;span class="codevalue"&gt;"emailAddress"&lt;/span&gt;&lt;span class="codetag"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="codetag"&gt;&amp;lt;br/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;html:submit/&amp;gt;&amp;lt;html:cancel/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/html:form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="codetag"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/pre&gt;Deploy your project and test with example URL: &lt;a href="http://localhost:8080/WebTutorial/form/example.jsp"&gt;http://localhost:8080/WebTutorial/form/example.jsp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Screen when do nothing is:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://bp2.blogger.com/_eum50fCHUAE/SG4Sioj4ZiI/AAAAAAAAAAo/opYl9zdk0yk/s1600-h/struts1.gif" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://bp2.blogger.com/_eum50fCHUAE/SG4Sioj4ZiI/AAAAAAAAAAo/M78coTqH1Kc/s400-R/struts1.gif" style="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Screen when validate() method was excuted&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://bp0.blogger.com/_eum50fCHUAE/SG4SoJC0eXI/AAAAAAAAAAw/YYzhDdbjIvs/s1600-h/struts2.gif" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://bp0.blogger.com/_eum50fCHUAE/SG4SoJC0eXI/AAAAAAAAAAw/Gb68Mz_6-7U/s400-R/struts2.gif" style="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;and Group Error Messages&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://bp0.blogger.com/_eum50fCHUAE/SG4SrSTX99I/AAAAAAAAAA4/zvA5AGo1GZ8/s1600-h/struts3.gif" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img height="152" src="http://bp0.blogger.com/_eum50fCHUAE/SG4SrSTX99I/AAAAAAAAAA4/RG7_rYSNoFU/s400-R/struts3.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Validation in Struts is so easy, right ^^ ?&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/6525846562674072021-4647633107141300324?l=cafemen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cafemen.blogspot.com/feeds/4647633107141300324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cafemen.blogspot.com/2007/02/struts-validate-form-with-struts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6525846562674072021/posts/default/4647633107141300324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6525846562674072021/posts/default/4647633107141300324'/><link rel='alternate' type='text/html' href='http://cafemen.blogspot.com/2007/02/struts-validate-form-with-struts.html' title='Struts: Validate form with Struts Validation'/><author><name>Nguyen, Lam D</name><uri>http://www.blogger.com/profile/12108041437914557759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='25' src='http://3.bp.blogspot.com/_eum50fCHUAE/SLC4GzRRyiI/AAAAAAAAALw/wCMX0KSOzCk/S220/prlamnguyen_2x1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_eum50fCHUAE/SG4Sioj4ZiI/AAAAAAAAAAo/M78coTqH1Kc/s72-Rc/struts1.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6525846562674072021.post-7617932136930872427</id><published>2007-01-31T22:25:00.000-06:00</published><updated>2008-09-04T14:47:50.185-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='Struts'/><title type='text'>Struts: The basic Web Struts Application</title><content type='html'>Before read this article, be sure you know &lt;a href="http://prlamnguyen.blogspot.com/2008/06/what-is-struts-framework.html"&gt;What is the Strusts Framework?&lt;/a&gt;&lt;br /&gt;So, this article will explaint &lt;span class="codeoutputerror"&gt;how to build an simple Web Struts Application?&lt;/span&gt;. It have many program support easily-build-int&lt;br /&gt;Struts such as: MyEclipse, NetBean ... But, the basic guide for building Struts is very helpful for new to Struts and Java programming. This example will help you  understand Struts in detail. I'll create new user interface to accept Name and Email address from user-input. In this case, form input was create with a basic JSP template called &lt;span class="code"&gt;input.jsp&lt;/span&gt; and the success page will be &lt;span class="code"&gt;success.jsp&lt;/span&gt;. Action class is just forwarding it to the  &lt;span class="code"&gt;sucess.jsp&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span id='fullpost'&gt;&lt;span class="profile-data"&gt;Action Form for struts (MODEL).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So, what's ActionForm? It's JavaBean that extends &lt;span class="code"&gt;org.apache.struts.action.ActionForm. &lt;/span&gt;This bean will be maintains the session state for web application, data input from form at client-side will be automatically added as the object in server-side. In this case, i'll create new ActionForm name as &lt;span class="code"&gt;GuestForm.java&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="code"&gt;GuestForm.java&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;span class="codekeyword-bold"&gt;package&lt;/span&gt;&lt;b&gt; &lt;/b&gt;prlamnguyen.struts.form;&lt;br /&gt;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;import&lt;/span&gt;&lt;b&gt; &lt;/b&gt;javax.servlet.http.HttpServletRequest;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;import&lt;/span&gt;&lt;b&gt; &lt;/b&gt;org.apache.struts.action.*;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="codecomment2"&gt;/**&lt;br /&gt;* &lt;b&gt;@author&lt;/b&gt; Nguyen, Lam Duy&lt;br /&gt;* &lt;b&gt;@link&lt;/b&gt; http://prlamnguyen.blogspot.com/2007/02/java-tutorial-basic-web-struts.html&lt;br /&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="codecomment2"&gt;/**&lt;br /&gt; * Form bean for the Guest entry.&lt;br /&gt; *&lt;br /&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;public class&lt;/span&gt;&lt;b&gt; &lt;/b&gt;GuestForm &lt;span class="codekeyword-bold"&gt;extends&lt;/span&gt;&lt;b&gt; &lt;/b&gt;ActionForm&lt;br /&gt;{&lt;br /&gt;  &lt;span class="codekeyword-bold"&gt;private&lt;/span&gt; String name=&lt;span class="codekeyword-bold"&gt;null&lt;/span&gt;;&lt;br /&gt;  &lt;span class="codekeyword-bold"&gt;private&lt;/span&gt; String emailAddress=&lt;span class="codekeyword-bold"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;  &lt;span class="codekeyword-bold"&gt;public void&lt;/span&gt; setName(String name){&lt;br /&gt;    &lt;span class="codekeyword-bold"&gt;this&lt;/span&gt;.&lt;span class="codeproperty"&gt;name&lt;/span&gt;=name;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  &lt;span class="codekeyword-bold"&gt;public&lt;/span&gt; String getName(){&lt;br /&gt;    &lt;span class="codekeyword-bold"&gt;return this&lt;/span&gt;.&lt;span class="codeproperty"&gt;name&lt;/span&gt;;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  &lt;span class="codekeyword-bold"&gt;public void&lt;/span&gt; setEmailAddress(String emailAddress){&lt;br /&gt;    &lt;span class="codekeyword-bold"&gt;this&lt;/span&gt;.&lt;span class="codeproperty"&gt;emailAddress&lt;/span&gt;=emailAddress;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  &lt;span class="codekeyword-bold"&gt;public&lt;/span&gt; String getEmailAddress(){&lt;br /&gt;    &lt;span class="codekeyword-bold"&gt;return this&lt;/span&gt;.&lt;span class="codeproperty"&gt;emailAddress&lt;/span&gt;;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class="codecomment2"&gt;/**&lt;br /&gt;   * Reset method will be used for reseting all data to default is null.&lt;br /&gt;   *&lt;br /&gt;   * &lt;b&gt;@param&lt;/b&gt; mapping The mapping used to select this instance&lt;br /&gt;   * &lt;b&gt;@param&lt;/b&gt; request The servlet request we are processing&lt;br /&gt;   */&lt;/span&gt;&lt;br /&gt;  &lt;span class="codekeyword-bold"&gt;public void&lt;/span&gt; reset(ActionMapping mapping, HttpServletRequest request) {&lt;br /&gt;     &lt;span class="codekeyword-bold"&gt;this&lt;/span&gt;.&lt;span class="codeproperty"&gt;name&lt;/span&gt;=&lt;span class="codekeyword-bold"&gt;null&lt;/span&gt;;&lt;br /&gt;     &lt;span class="codekeyword-bold"&gt;this&lt;/span&gt;.&lt;span class="codeproperty"&gt;emailAddress&lt;/span&gt;=&lt;span class="codekeyword-bold"&gt;null&lt;/span&gt;;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  &lt;span class="codecomment2"&gt;/**&lt;br /&gt;   * Validate method to vailde the data inputed from form at client-side. It's be&lt;br /&gt;   * excute at Server-side. Set return to null if you not want to validate the&lt;br /&gt;   * form input&lt;br /&gt;   *&lt;br /&gt;   * &lt;b&gt;@param&lt;/b&gt; mapping The mapping used to select this instance&lt;br /&gt;   * &lt;b&gt;@param&lt;/b&gt; request The servlet request we are processing&lt;br /&gt;   * @return errors&lt;br /&gt;   */&lt;/span&gt;&lt;br /&gt;  &lt;span class="codekeyword-bold"&gt;public&lt;/span&gt; ActionErrors validate(&lt;br /&gt;      ActionMapping mapping, HttpServletRequest request ) {&lt;br /&gt;      &lt;span class="codecomment1"&gt;//In this case, i'll not validate form, i want this article simply&lt;br /&gt;       //The validate form for struts will be posted later.&lt;/span&gt;&lt;br /&gt;      &lt;span class="codekeyword-bold"&gt;return null&lt;/span&gt;;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="profile-data"&gt;Action Class for Struts (Controller)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next step, create Action class, Action class is a Controller which receives the request, looks up the mapping for this request, and forwards it to an action. I'll create new class file name &lt;span class="code"&gt;GuestAction.java&lt;/span&gt; which simply forward the request the  &lt;span class="code"&gt;success.jsp&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="code"&gt;GuestAction.java&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;pre&gt;&lt;span class="codekeyword-bold"&gt;package&lt;/span&gt;&lt;b&gt; &lt;/b&gt;prlamnguyen.struts.action;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;import&lt;/span&gt; javax.servlet.http.HttpServletRequest;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;import&lt;/span&gt; javax.servlet.http.HttpServletResponse;&lt;br /&gt;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;import&lt;/span&gt; org.apache.struts.action.Action;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;import&lt;/span&gt; org.apache.struts.action.ActionForm;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;import&lt;/span&gt; org.apache.struts.action.ActionForward;&lt;br /&gt;&lt;span class="codekeyword-bold"&gt;import&lt;/span&gt; org.apache.struts.action.ActionMapping;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="codecomment2"&gt;/**&lt;br /&gt;* &lt;b&gt;@author&lt;/b&gt; Nguyen, Lam Duy&lt;br /&gt;* &lt;b&gt;@link&lt;/b&gt; http://prlamnguyen.blogspot.com/2007/02/java-tutorial-basic-web-struts.html&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="codekeyword-bold"&gt;public class&lt;/span&gt; AddressAction &lt;span class="codekeyword-bold"&gt;extends&lt;/span&gt; Action&lt;br /&gt;{&lt;br /&gt;&lt;span class="codecomment2"&gt; &amp;nbsp;/**&lt;br /&gt; &amp;nbsp;* Method execute&lt;br /&gt; &amp;nbsp;* &lt;b&gt;@param&lt;/b&gt; mapping&lt;br /&gt; &amp;nbsp;* &lt;b&gt;@param&lt;/b&gt; form&lt;br /&gt; &amp;nbsp;* &lt;b&gt;@param&lt;/b&gt; request&lt;br /&gt; &amp;nbsp;* &lt;b&gt;@param&lt;/b&gt; response&lt;br /&gt; &amp;nbsp;* &lt;b&gt;@return&lt;/b&gt; ActionForward&lt;br /&gt; &amp;nbsp;* &lt;b&gt;@throws&lt;/b&gt; Exception&lt;br /&gt; &amp;nbsp;*/&lt;/span&gt;&lt;br /&gt;  &lt;span class="codekeyword-bold"&gt;public&lt;/span&gt; ActionForward execute(ActionMapping mapping, ActionForm form,&lt;br /&gt;                    HttpServletRequest request, HttpServletResponse response) &lt;span class="codekeyword-bold"&gt;throws&lt;/span&gt; Exception{&lt;br /&gt;       ActionForward forward = new ActionForward();&lt;br /&gt;       forward = mapping.findForward(&lt;span class="codevalue"&gt;"success"&lt;/span&gt;);&lt;br /&gt;      &lt;span class="codekeyword-bold"&gt;return&lt;/span&gt; forward;&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;Now, create config file for Struts, default name for struts config file is struts-config.xml. Add the following lines in the struts-config.xml file:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="code"&gt;struts-config.xml&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;pre&gt;&lt;span class="codetag"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span class="codekeyword"&gt;version=&lt;/span&gt;&lt;span class="codevalue"&gt;"1.0"&lt;/span&gt; &lt;span class="codekeyword"&gt;encoding=&lt;/span&gt;&lt;span class="codevalue"&gt;"UTF-8"&lt;/span&gt;&lt;span class="codetag"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="codetag"&gt;&amp;lt;!DOCTYPE&lt;/span&gt; &lt;span class="codeproperty"&gt;struts-config&lt;/span&gt; PUBLIC &lt;span class="codeproperty"&gt;"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"&lt;/span&gt;&lt;br /&gt;                                             &lt;span class="codecomment1"&gt;"http://struts.apache.org/dtds/struts-config_1_2.dtd"&lt;/span&gt;&lt;span class="codetag"&gt;&amp;gt;&lt;br /&gt;&amp;lt;struts-config&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; ...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="codecomment2"&gt;&amp;nbsp;&amp;lt;!--&lt;br /&gt;Define form-bean class.&lt;br /&gt;--&amp;gt;&lt;/span&gt;&lt;span class="codetag"&gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;form-beans &amp;gt;&lt;br /&gt; &amp;lt;form-bean&lt;/span&gt; &lt;span class="codekeyword"&gt;name=&lt;/span&gt;&lt;span class="codevalue"&gt;"guestForm"&lt;/span&gt; &lt;span class="codekeyword"&gt;type=&lt;/span&gt;&lt;span class="codevalue"&gt;"prlamnguyen.struts.form.GuestForm"&lt;/span&gt; &lt;span class="codetag"&gt;/&amp;gt;&lt;br /&gt;&amp;lt;/form-beans&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; ...&lt;br /&gt;&lt;br /&gt; &amp;lt;action-mappings &amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="codecomment2"&gt;&amp;nbsp;&amp;lt;!--&lt;br /&gt;These line below for handling the action "/guestInput.do".&lt;br /&gt;--&amp;gt;&lt;/span&gt;&lt;span class="codetag"&gt;&lt;br /&gt;  &amp;lt;action&lt;/span&gt;&lt;br /&gt;     &lt;span class="codekeyword"&gt;attribute=&lt;/span&gt;&lt;span class="codevalue"&gt;"guestForm"&lt;/span&gt;&lt;br /&gt;     &lt;span class="codekeyword"&gt;input=&lt;/span&gt;&lt;span class="codevalue"&gt;"/input.jsp"&lt;/span&gt;&lt;br /&gt;     &lt;span class="codekeyword"&gt;name=&lt;/span&gt;&lt;span class="codevalue"&gt;"guestForm"&lt;/span&gt;&lt;br /&gt;     &lt;span class="codekeyword"&gt;path=&lt;/span&gt;&lt;span class="codevalue"&gt;"/guestInput"&lt;/span&gt;&lt;br /&gt;     &lt;span class="codekeyword"&gt;scope=&lt;/span&gt;&lt;span class="codevalue"&gt;"request"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="codekeyword"&gt;validate=&lt;/span&gt;&lt;span class="codevalue"&gt;"false"&lt;/span&gt;&lt;br /&gt;     &lt;span class="codekeyword"&gt;type=&lt;/span&gt;&lt;span class="codevalue"&gt;"prlamnguyen.struts.action.GuestAction"&lt;/span&gt;&lt;span class="codetag"&gt;&amp;gt;&lt;/span&gt;&lt;span class="codetag"&gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;forward&lt;/span&gt; &lt;span class="codekeyword"&gt;name=&lt;/span&gt;&lt;span class="codevalue"&gt;"success"&lt;/span&gt; &lt;span class="codekeyword"&gt;path=&lt;/span&gt;&lt;span class="codevalue"&gt;"/success.jsp"&lt;/span&gt; &lt;span class="codetag"&gt;/&amp;gt;&lt;br /&gt; &amp;lt;/action&amp;gt;&lt;br /&gt;&amp;lt;/action-mappings&amp;gt;&lt;br /&gt;&lt;br /&gt; ...&lt;br /&gt;&lt;br /&gt; &amp;lt;/struts-config&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The action &lt;span class="code"&gt;*.do&lt;/span&gt; have to define in &lt;span class="code"&gt;web.xml&lt;/span&gt;. Add following code into &lt;span class="code"&gt;web.xml&lt;/span&gt; file. This step can be ignored when you use MyEclipse or NetBean ... to add Struts. In this case, i'll do it for you.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="code"&gt;web.xml&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;pre&gt;&lt;span class="codetag"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span class="codekeyword"&gt;version=&lt;/span&gt;&lt;span class="codevalue"&gt;"1.0"&lt;/span&gt; &lt;span class="codekeyword"&gt;encoding=&lt;/span&gt;&lt;span class="codevalue"&gt;"UTF-8"&lt;/span&gt;&lt;span class="codetag"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span class="codetag"&gt;&amp;lt;web-app &lt;/span&gt;&lt;span class="codekeyword"&gt;xmlns=&lt;/span&gt;&lt;span class="codevalue"&gt;"http://java.sun.com/xml/ns/j2ee"&lt;/span&gt;&lt;span class="codetag"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="codekeyword"&gt;xmlns:xsi=&lt;/span&gt;&lt;span class="codevalue"&gt;"http://www.w3.org/2001/XMLSchema-instance"&lt;/span&gt;&lt;span class="codetag"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="codekeyword"&gt;version=&lt;/span&gt;&lt;span class="codevalue"&gt;"2.4" &lt;/span&gt;&lt;span class="codekeyword"&gt;xsi:schemaLocation=&lt;/span&gt;&lt;span class="codevalue"&gt;"http://java.sun.com/xml/ns/j2ee   &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&lt;/span&gt;&lt;span class="codetag"&gt;&amp;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;/span&gt;&lt;span class="codecomment2"&gt;&amp;nbsp;&amp;lt;!--&lt;br /&gt;Add these line for using struts in web application, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;default code can be generated by other program such as: MyEclipse, NetBean....&lt;br /&gt;--&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="codetag"&gt;&amp;lt;servlet&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;&lt;/span&gt;action&lt;span class="codetag"&gt;&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;servlet-class&amp;gt;&lt;/span&gt;org.apache.struts.action.ActionServlet&lt;span class="codetag"&gt;&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&amp;lt;init-param&amp;gt;&lt;br /&gt;&amp;lt;param-name&amp;gt;&lt;/span&gt;config&lt;span class="codetag"&gt;&amp;lt;/param-name&amp;gt;&lt;br /&gt;&amp;lt;param-value&amp;gt;&lt;/span&gt;/WEB-INF/struts-config.xml&lt;span class="codetag"&gt;&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;lt;/init-param&amp;gt;&lt;br /&gt;&amp;lt;init-param&amp;gt;&lt;br /&gt;&amp;lt;param-name&amp;gt;&lt;/span&gt;debug&lt;span class="codetag"&gt;&amp;lt;/param-name&amp;gt;&lt;br /&gt;&amp;lt;param-value&amp;gt;&lt;/span&gt;3&lt;span class="codetag"&gt;&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;lt;/init-param&amp;gt;&lt;br /&gt;&amp;lt;init-param&amp;gt;&lt;br /&gt;&amp;lt;param-name&amp;gt;&lt;/span&gt;detail&lt;span class="codetag"&gt;&amp;lt;/param-name&amp;gt;&lt;br /&gt;&amp;lt;param-value&amp;gt;&lt;/span&gt;3&lt;span class="codetag"&gt;&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;lt;/init-param&amp;gt;&lt;br /&gt;&amp;lt;load-on-startup&amp;gt;&lt;/span&gt;0&lt;span class="codetag"&gt;&amp;lt;/load-on-startup&amp;gt;&lt;br /&gt;&amp;lt;/servlet&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; ...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;&lt;/span&gt;action&lt;span class="codetag"&gt;&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;url-pattern&amp;gt;&lt;/span&gt;*.do&lt;span class="codetag"&gt;&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; ...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;/web-app&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;span class="profile-data"&gt;JSP for input and Display (VIEW).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Last, create the new jsp page for form input which is our form for entering  the details and jsp page for success message, in Struts Config, input-form file was defined as &lt;span class="code"&gt;input.jsp&lt;/span&gt; and success page is &lt;span class="code"&gt;success.jsp&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li class="code"&gt;input.jsp&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;pre&gt;&lt;span class="codetag"&gt;&amp;lt;html:form action=&lt;/span&gt;&lt;span class="codevalue"&gt;"/guestInput"&lt;/span&gt;&lt;span class="codetag"&gt;&amp;gt;&lt;br /&gt;&amp;lt;table width=&lt;/span&gt;&lt;span class="codevalue"&gt;"100%"&lt;/span&gt; &lt;span class="codetag"&gt;border=&lt;/span&gt;&lt;span class="codevalue"&gt;"0"&lt;/span&gt; &lt;span class="codetag"&gt;cellspacing=&lt;/span&gt;&lt;span class="codevalue"&gt;"0"&lt;/span&gt; &lt;span class="codetag"&gt;cellpadding=&lt;/span&gt;&lt;span class="codevalue"&gt;"0"&lt;/span&gt;&lt;span class="codetag"&gt;&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;&lt;/span&gt;Name:&lt;span class="codetag"&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;&amp;lt;html:text property=&lt;/span&gt;&lt;span class="codeoutputerror"&gt;"name"&lt;/span&gt;&lt;span class="codetag"&gt;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;&lt;/span&gt;Email Address:&lt;span class="codetag"&gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;td&amp;gt;&amp;lt;html:text property=&lt;/span&gt;&lt;span class="codeoutputerror"&gt;"emailAddress"&lt;/span&gt;&lt;span class="codetag"&gt;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&amp;lt;div align=&lt;/span&gt;&lt;span class="codevalue"&gt;"center"&lt;/span&gt;&lt;span class="codetag"&gt;&amp;gt; &lt;br /&gt;&amp;lt;html:submit/&amp;gt;&lt;/span&gt;&amp;amp;nbsp;&amp;amp;nbsp;&lt;span class="codetag"&gt;&amp;lt;html:reset/&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/html:form&amp;gt;  &lt;/span&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li class="code"&gt;success.jsp&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;pre&gt;&amp;nbsp;&amp;nbsp;&lt;span class="codetagscript"&gt;&amp;lt;%@&lt;/span&gt;&lt;span class="codetag"&gt; page &lt;/span&gt;&lt;span class="codekeyword"&gt;language=&lt;/span&gt;&lt;span class="codevalue"&gt;"java"&lt;/span&gt;&lt;span class="codekeyword"&gt; contentType=&lt;/span&gt;&lt;span class="codevalue"&gt;"text/html; charset=ISO-8859-1"&lt;/span&gt;&lt;span class="codetag"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="codekeyword"&gt;pageEncoding=&lt;/span&gt;&lt;span class="codevalue"&gt;"ISO-8859-1"&lt;/span&gt;&lt;span class="codetagscript"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="codetag"&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;span class="codetag"&gt;&lt;br /&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Success&lt;span class="codetag"&gt;&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="codeoutputerror"&gt;Input successful !&lt;/span&gt;&lt;span class="codetag"&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/html&amp;gt; &amp;nbsp;&lt;/span&gt;&lt;/pre&gt;Correct me if I'm wrong.&lt;br /&gt;&lt;br /&gt;Regard!&lt;br /&gt;&lt;br /&gt;&lt;p class='article-copyright'&gt;© Nguyen, Duy Lam 2008&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6525846562674072021-7617932136930872427?l=cafemen.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cafemen.blogspot.com/feeds/7617932136930872427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cafemen.blogspot.com/2007/01/struts-basic-web-struts-application.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6525846562674072021/posts/default/7617932136930872427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6525846562674072021/posts/default/7617932136930872427'/><link rel='alternate' type='text/html' href='http://cafemen.blogspot.com/2007/01/struts-basic-web-struts-application.html' title='Struts: The basic Web Struts Application'/><author><name>Nguyen, Lam D</name><uri>http://www.blogger.com/profile/12108041437914557759</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='25' src='http://3.bp.blogspot.com/_eum50fCHUAE/SLC4GzRRyiI/AAAAAAAAALw/wCMX0KSOzCk/S220/prlamnguyen_2x1.jpg'/></author><thr:total>0</thr:total></entry></feed>
