tag:blogger.com,1999:blog-80613730889725234242024-02-07T00:00:11.570-08:00My Java Notesdagspothttp://www.blogger.com/profile/13112520399578282503noreply@blogger.comBlogger14125tag:blogger.com,1999:blog-8061373088972523424.post-10676391381373737172013-12-17T23:42:00.003-08:002013-12-18T11:13:18.850-08:00How to create or invoke a java servlet in Eclipse IDE using servlet 3.0 specification in a dynamic Java Web Project<a href="http://www.blogger.com/blogger.g?blogID=8061373088972523424" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a><span style="background-color: orange;"></span><br />
I am creating a post for java users who are getting introduced to Java servlets and would like to use an Eclipse IDE environment to write a servlet. This small tutorial hopes to provide step by step instructions, so that users can avoid the <span style="background-color: yellow;">pain points</span> they usually experience while attempting to invoke a servlet from a html/Java server page landing page.<br />
<br />
This simple example provided below is developed in Eclipse IDE and the example i am referencing is from O'reilly Heads first Servlets and JSP book. - Chapter 3.<br />
<br />
<a href="http://www.blogger.com/blogger.g?blogID=8061373088972523424" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="http://www.blogger.com/blogger.g?blogID=8061373088972523424" imageanchor="1" style="clear: right; display: inline ! important; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="http://www.blogger.com/blogger.g?blogID=8061373088972523424" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="http://www.blogger.com/blogger.g?blogID=8061373088972523424" imageanchor="1" style="clear: right; display: inline ! important; float: right; margin-bottom: 1em; margin-left: 1em;"></a>For this sample, I have used<br />
<ul>
<li> Eclipse Java EE IDE for Web Developers Version: Juno Service release one. Eclipse is installed under c:\eclipse.</li>
<li>In addition, I have installed Apache Web server with tomcat container 7.0.25 release. Apache/Tomcat is installed under c:\tomcat directory.</li>
</ul>
<br />
1. First of, in order to incorporate Tomcat server instance as a web server/ servlet container into your Eclipse IDE for testing your java applications, here is a good tutorial link.<br />
<a href="http://www.eclipse.org/webtools/jst/components/ws/M4/tutorials/InstallTomcat.html">http://www.eclipse.org/webtools/jst/components/ws/M4/tutorials/InstallTomcat.html</a><br />
<br />
2. Next, we will create a dynamic Java Web Project to build our sample application.<br />
In order to create this web project in Eclipse IDE, we have to first enable/activate the Java EE perspective.To activate the perspective in Eclipse IDE, go to Window--&gt;Open Perspective--&gt;Other and choose Java EE (default) perspective.<br />
<br />
3. Next, we will create a new Java Web project in Eclipse IDE. Choose "File" menu--&gt;New--&gt;Dynamic Web Project. Give your project a name - "MyServlet" is the project name in this example. Select dynamic web module = 3.0 and Apache Tomcat 7.0 as the target run time environment.<br />
<br />
4. Click Next and select default values. Make sure build\classes is the default value for "Default output folder".<br />
5. Click Next and select the generate web.xml deployment descriptor check box. this deployment descriptor will get created in the projects' WEB-INF folder.<br />
6.Click Finish to complete creation of the dynamic java web project.<br />
7. Before we add our servlet code and insert the servlet mappings, h<span style="color: red;"><u>ere is an important difference to note between Servlet specification 2.5 to servlet specification 3.0.</u></span><br />
<br />
<ul>
<li><span style="background-color: yellow;">The servlet mappings and servlets xml tags must be used when using servlet 2.5 specification in the web.xml deployment descriptor to provide the association of servlet-url to servlet name and servlet-name to servlet class. </span></li>
</ul>
<span style="background-color: yellow;"><span style="background-color: white;"></span></span><br />
<ul>
<li><span style="background-color: yellow;">With servlet 3.0 specification, you can instead use annotations to perform the servlet to url-mapping inside of a servlet java file. </span></li>
</ul>
<br />
<span style="background-color: yellow;">You can check which specification your dynamic web application is using by taking a look at point #3 step above. In this example, we created the dynamic java web application project with dynamic web module version 3.0</span>.<br />
<br />
An annotation is written in the following format and written in the servlet's .java file.<br />
<span style="background-color: yellow;">@WebServlet("/Beer.do")</span><br />
<span style="background-color: yellow;">public class Hello extends HttpServlet {}</span><br />
<br />
Therefore if you are using Servlets3.0 then the servlets will be configured by @WebServlet annotation.<br />
Therefore, there is no need for web.xml configuration to add servlet and servlet-mapping tags.<br />
<br />
<span style="background-color: red;">8. Using the Eclipse IDE, in the Java EE perspective, you will first create a servlet. You can right click on either servlets or servlet mapping under Deployment Descriptor of your project and create a new servlet. The wizard will automatically create you servlet and servlet-mapping when we create the servlet. We have used the package - com.example.web under which will create the servlet.</span><br />
<a href="http://www.blogger.com/blogger.g?blogID=8061373088972523424" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><span style="background-color: red;"><img alt="" src="data:image/png;base64,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" /> </span><br />
<span style="background-color: red;"> </span><img alt="" src="data:image/png;base64,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bfj+F/b8YF/j/Z/cuu+g7e921n/z9bNfe+XE13M//8bum+nbr++60EICAAAgkWbu3mvtd/z4zxe/vrPp2/uaF5f3PXGs/bsftgRywCNrz28rbpR28LX9rnONA+caB/R+KPC1PZf/4fefiot/b1/z36679LVXTnzz9bN/80Ht13c2PbWptKHTTgIAACBh7t6755256525K34j4Os7m777YcvzFQPf/bBFLPcdtD2ec/hc40DYHwJSXAD4/sYrYvf/rc3XvvbKCfECwNd3Nvm+BTA8TQIAACBhZmbuigmgtd/x1KbSv9/b9I3dN+87aHu4sO3b+5q/va/573bW/+MrB4x3/80jU0/+qegffv/pdz9s+bak+//aH0q/vrPp7/c2zd9e4bsAQAIAACAhZu76LgCI5WBF679tvXL/J7fEU/9v72v+xu6b39945el1J5tHpox0/6drev7xlQP3/efHf7urUdH9/7fttfd/cuvftl45WNHq6/5JAAAAxN/M3eAFgED53UeV/3t/zcOFbeIF/G/svvnNrV/+w+8//cdXDry25/Lhyg7NKFDV7dx1oeWZ9cX3v7DneytPfXtf89d3Nn0993Ox+//m62f/xwc1Dxe2/WhX1e8+quwdcScyAdjyMgSZjDxbdA9sbJVkRXOPbXkZQlZJkuxMnJl87SGUZAlCjFYdR4pX4f/gZJVE+AINzixdf6LMjTcOCOvuvXszM3cVCcDtuds9NLV428UnD9Y9caz9wY9b/m5n/ff2NYtn899beeq+//z4/hf23P/CnmfWFweKOOa+//z4eytPiQ/6/c0HtV/7Q+nXXjnxrVdPfmfVuQfya5841v7kwbqXP7re1juVBAkgos94kvVyhnbH8D7PwQQQr9ceBcl4+HTY8jJiuq+xXr+eFHoLgOgRLwDMyLv/KffMlHumpde5eNtF8Uv/Txxr/+Ffqh7Ir73voE28r//fttd+a/O1v1136Turzn1n1bn/vvritzZf+5sPar+x++Y3dt/8mw9qv577+TdfP/utV09+77XiB1aXPX6g8Wenbs8/ULd428XP28Z6R9wkAFNIAGGQAGIh1gcrUW9GCr0FQJQEuv8ZSfc/7fYlgCn3TEOnffG2i4s/rl12vvtnp27/8wfXH1hd9sO/VP1gX6P4h33Fb/kHyt/vbfofH9R8f+OV76w6973Xir/3WvH9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" /><br />
<span style="background-color: red;">In this example, we have added Servlet mapping - Servlet name=Beer to Servlet url pattern /Beer.do and Servlet name=Beer to servlet class com.example.web.BeerSelect (points to compiled BeerSelect.class file of source file BeerSelect.java). I will explain adding the servlet file later below.</span><br />
<span style="background-color: white;"><img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAe4AAAF2CAIAAAAnQOwvAAAgAElEQVR4nO29e3gVVZ7vveav9795nPf0OPZ7nj6nx5lWu2fO6Tme6WmnZhodEa8tqIiKiOFaiBAiSCN3QgKBJEAqgOEWbrYEEFBCQqEIBAwq2iAJBkF2SABvBBIIl0AggfX+UXvXXmvVWrUryd7Zu/b+fp7fw7NTtdaqtS/12YtfrV2LUOBDzF0Hz166iUAgEFaQeEsJdBJz18EzjdcRCATiTON1qNyvmLsO1p69ikAgELVnr0LlPsbcdfCb7y8hEIikjN2z7tw9606PhaFyH2PuOlhVfwGBQCRf7J515+1bF3fPutNjeajcx0DlCESixbrSSvfw0ojl8Y6pfHvRE2zE206gA0DlCESixbrSyqNXqCq8qHz3rDtvt5681XrydmudlWMRQlqL3LjZbkfNtpGwuY8wdx08XH8BgUDEMaQqzy/a5B4uHm+/VHnrUuWtS5XtoX/ZB+2XKt/LuEOi8tbW9us32q/faG+90X5i99SabSNL334q3o4CnjB3HTxcd0GI/fP7WOHchUAgYh22yl3G5vlFm1xaeC/jjvZzG614L+MOZ0hrkZbrbZt3HS0xq1uut506UGDZfHPh0xE9UjGeMDxefKrDJqoYTwgZX9EJh6k5Vfw4IV3tmNW3TtbsLCNDRNxo41T5/vl9KP3cio4KfcVwQkjP6ZXcxu1zepLhZZ34QK8YTggZvSLe5xUC0c3BqrzxpjzcVX647sJ7GXe0/bCk7YclKnE7g1y+dvNyS9vla22XW9qCD661fb1jXET1sLI7Vfx4p6XZGdSiPVX8eFS+HeKi8ogPBJwq/zD7SXppgx0fZj95uO7CvrNUCOlHYcVwQgghPQq3Mxs7rfKuRslooScIhC+CVfmFNnlEVPnhkM0Fle+edefOJfdIy5OLV25u3nW0ZEf1qg8OVn/7087x/2RFRPXwsjtV/Hg3ui+pVU5Dg3HpLhZz18GvTjaxseFPPenXk+zYML7nVyeb7uiXJ4RQy4rlw4k2x3iVEG1Olb1x+5z/IsNLpeVjG+tGkx7G9u4/LgLRwXBR+aU2eXhRuWVzp8pVNieNl25acf3GrWXP/n+2JtjHUhQqt1xqZV+CTuWSHoxnBV0yxTiLstXHV/CJHYe1pSo/Vfw4UzT8l9WBcPvMYdV9Yw/q/mS5/7QIxaRIla3yOJWpvPj1HkJ4/0QuH060OVVfrRtNyOjloY2cyj8xNPtFCHl2+XDCun77nP+ydgVbYxq3Ky730qZNqOT2Of/l3PjVyarpPcir60pfJYTtNgIRr2BV/lePTnaGpfLONW5PNt89605hFzl78cbmXUdrzzTtePPXtGkxbVpMT837Yedbxzdk7HjzNzve/PWOsb/e8eZvnB5xqnx8RfDB44+Pt/eoNEqdKRr7j4rxvBlDFU4VF1dIjs2iGJWHm2cPZMk19Jdr3+RPQfZkJc9CLOaCM1fuUtipcitU4273sOXL2plV+fY5o6d/YhWumt4jVIYbPlti5VoLNmiXWTeaF7SsTbFZy+O2qdmSVdN7EK2H3QgCEedgVX7tlvKyp5empDMRb107aoVgc/JD043vG2+0tN7alvFr+4qZM8ozfi14hJUdcwFTyLQ4pMu4ltknGQSHxs0yM7urXHrVM9gkV1Nsnem7um/sU3B/svzXm7d0TVRU/rOR4Q+KPaEl4ucmLN9PDI38lyVHZYIlrNrSV0OFv/rE0ELCZVTOFAjtitSmoHKxBeZAVdN7cMN/BCK+war8xi15eFH57ll3tjeWtjWWtquDtTk5c77VGpVvGX0fbf2Y3vyYtn5Mb+4M/buT3txJb+78YPR9gke4RMfj3MA0rEeJisO+4x45GF+hNHnncuXBg6gzPOq+qZ6C88nKnoXnBH7XEyxW2Cp3Tmhx+eiw42g7TyKonMtyMPkQqyJbmP9i4FIfXtoUtS4mT2y5h/8fgEAkQlg/6bRUfpPKw+OovGTUHc6wZra0/bCkZNQdbGFy6tyNUw2tV661bxxxL730Hr0Ymv8QfPAevbiBXtywccS9TjPKdNpplSuUHT2VWwN2tl4MVC49tieVd+6yp/RXBj8buelnIzfd0S/POaGlqj48oUWoVTycaHOrQ3+WpRGiza3eMbcnGV5mbyE9CndYBdaPdjyuntGDpK13tLZ+NCGji5kDdaTNC9IWqurL0kjPGfsvVPEHRSC6P6QWtlTeTuXR6Vy5rXLB41+dbCJTJw2aOmnQJ+9P+vPQX9EfiphYwv7756G/EjziSeXO1II0waLKQKi2d0Ll1g6+QdG9zN9ufeMTLG5PNlKnWDo3GbH61EWXcE5oqT510Z7HIhReqRMt90h4y4Z0QtIzc3sSvaz61MXqTxdqJH1laO+HuT3Jgws/DP5ZlkZ6Zm7gCoRb+3ShRnpmfsodKHKbG9LDjx0tMBWPZD5I0ja4vQgIRExD6vdO/9rTPSyVl4yS/drT9sLqtH+kJ2bT2hxaO5vW5tATOfREDq2dbT1YnfaPgkc8qVz8HZB4XVCWbaeUnioOXSPktrOXPRVu7MRlT+ZKp7e+hRuI9GTHh78NvKi8Ez8ROnK62SWcE1pcCq/UiZb7tbCFEEL08iOnm48EfdocekzIgws/ZOs+2JOtzrT2deaDTOGN6Z7a3JhOSPpKrif2n19nPsg1Pmij24uAQMQ0uvNrw8qxSHeFVb7slX+gX0+mX08K/lszmR3QLXvlHwSPeFQ55S9FuuQ32FSzYjs/qYRIfO74tWdo/iI/Frf+qhhPHi+uCNfwNFFSOm+He1kcJaM12V0koso7FE6VB/Vqafd084e5PYNP7MGFH25MZ1V+ZGM6saUsae3rzAdDL4pe/mFuTw9thqo4SxKxZagcgeBucrv4xb9XRfQ9FI+f4SRaB7pIdFXebSH5zkAgEF2L+N2vvHt/HyoFKo9D8JkTBAIRlYiHykM5iFjkHDraEai8GyKYcw8CjyMQ0Q+sIuRj/KJyBAIR60gElZNoR6oAlSMQCCviLr6oezyFtA6VIxAIK+Iuu1irPLpCT6wvDKgcgUBYkSIqj4p2E27sb+46iEAgEOaugymo8k64uNtG/QAA0BnirqG4S7wbvgkAACC2xF1DcbcwVA4A8D1x11DcLQyVAwB8T9w1FHcLQ+UAAN8THQ0drqpcXD4/o6xscfn8w1WVqmL3DSmSdSAJAgAA4kkUNHS4qjKjrCxwcE3rTwcyysq07V+rbA6VAwBALIiChjZ8fJxerT925O1PT+Zsr1ne/+33Xpy4oXrLJGdJqBwAAGJBFDSUUVa2+dtv/rx35bvmE6tWPjJq2ur+YzZQSqs2TxRKqlRu6oQQYgQkltQJIXoEk5rsjfciFfYSpk40AyoHAPiG6Kj84X2n+6/bPm1Ezz+NeeO5MR+MnTL/u33Tvt029u2ZcymlfaZvtEq6q9xpz4BBNC2CnQ2+gGmQQPeo3CREs48FAADxxKuG6urqSktLpbsOV1W+suqLngU1Q8ZufmHIn18Ykn24qpJe+iQYjMFdVK5phBBiOjQdQeUBoimG81A5ACB18KohTdPuuece1d7DVZXzp60fOmz51HFG8Jrn+bJgULrpk2P3DSm6b0jR6p3Vsg4E1WloRDdFV5pGUOWmzjk9YARNqhO+Fj+ot7F1bx0luP6wok1B5c52HCkdAACIJ5E1VFdXp2la//79XVQu4Yd3wxGhA0F12iYVN+rOUXDY+5ZnpcmZcHkzPOS3RvpBsyvaZFWuagejcgBA4hBBQ5bH+/Xr567yF9JW0foiWl+UNnzloGErBw1bNWiY9WBl2rCVg4avTLMeD185aNhKRwfC6tTt4XOAaISYlFG5bC+bZhGErvOJF1vThqYoxrTJqlzVDlQOAEgc3DTEetxd5U++vI6eyLXiuYHvlJ6+pYpnX/mzowNhddoPbIOzKnfuFZPXhBnCO7BVziZkpG2GVa5uByoHACQObhpiPe6u8geff48enUaPTuv1woaN37RuPNq68ZsbG7+x/rWjtVe/DbIOMOoMDY2NUA6Es3bInmJW3XkVlM2E8CHNyAttCiqXtgOVAwASh+ho6He9t9DqP/17ny2rPr286tPLKz+7vOqzy6s+vbzqs8srP7286rPLqz67/O/PbFZ0gEtoGBrR9bAlhQG4Tohh8tkVPoJXQdUzW5xfA842ha8W+QwZqBwAkDBER0P/+4mtv32ydOH2xoXbGxea5xduP7/QbFy4/fxC87y15bdPblV3gJ8xYtpZb0opDRga0U27tKkTTWO2BIgmTEFh8t3sgNrQg9p1qtyaCskm0Nn+qNrhB+wAABBPoqah+x4tcwn3uqZONCPA/BWWt6ByGjA0tizlpgUKyRB2HzfqF5IzpvhbU2EyorQdqylMRgQAJAJ+0xBvfQfyrEvsAwAA4om/NCSOyV2BxAEAqYJvZBTMcrDJls4AjwMAkhD4CAAAfA9UDgAAvgcqBwAA3wOVAwCA74HKAQDA90DlAADge6ByAADwPVA5AAD4nkRU+epjxwoqq0aVf/7Gzi/X7Nwb7+4AAECik1gqX32kftLOgys/Lr3Y8G379Yt7T1cP/eiT1zdWutUxdcdvQAOGRsQf+Ju647eikk2qJk1dbJAtwy/1KTbY0dZUz9LjHQvcO9MJlC8TACBhSCyVt7fdOnOm6uQPVW2Xvmv94WjN1R8GfH3svkVfFhYvVtZxWjBgaJrmvFmLIFC3+7mIbQYMjfD2te/YGDA0rqxpONrsQGtuz9KDyj10BgCQjMRK5fv3729ubu5QlTcX/+WNebtH5+x/aVrFD83HD9YV7TlW/srKJU/M/HTCtLnKag6VW9aTjXMZmbvfmEvYGzA0/jbp4QJebvDlvTU1nlTeobuNAQCSiFipvKSkZP369efOnfNepf5C0/u7j780reLMucPfNVdtOjqqdOvzk7NGvTLzi1eG5ymric4OSU860g0VjpTQ4KRotcRVCZs1YmqkQ62FCth3Rw9wRcK75MZ264ys2XBfCNF1vrLdaeFbhGmHWQJE1mcm14MvGABiSwxVTiltamqqra31WOWlaRW7Ko+9NK3ijSVVp3/6cnn2b2ZPe2L45A0vvrl9yrhZymqCvsLikbo8NCSOpF+2crBJRmnsMZ3pkq62ZrfF7LCsGNojJlK4A8k6o2jWejX0cD/CNcNdZjdzBw4YhqlunN2KRA8AMSa2KqeU5ufn19TURCz/5OhtzS03zSM/rfvs1PI9tb1GvF9dXT105JL+E8v7DZi8cYOhrMmrXPSO03eya6KuzdpNsg/4hkODUmWzXluTjIDtaq6rKbl3RtWs0ApTjHntFF86VFKLrRk5/w8AiBoxV/n58+czMzMbGxtdCk9fdfDY2asXQyov2n2iYMfxt1Yc+MvRH18YPH31ikVuR1KOaaW+k47K2UkfbNYjlIsRhvkqSQUTFVJ9eWtNXN4u3J4jVx4pec52Rtms+EzsRiX/jaBqk6sbx9wXALqHmKs8Ly8v4qj8ydHb2m/duthy86OasyUHTi3dEyjYcfzBgesrDxzZvevdCEcShpIOxBGjZgTUCQpnw6zUrMduFxfV+zy1ps51d1jlbGeUzTq+lIKtcts9qFz9UsLnAHQLMVR5U1NTcXFxxJLV3549ff7qpetttU3Xtlaf/fPnZ5burSv48MTYogP90tdErM6oUDUIlyV6Pcg8YGhE03VWdqZuXR5US9TVmhFbc/0mcPxHIqIfQ4WUzTr/f2HqRDNMQ+im27SfyNNmMLEGgJgTQ5WXlJQ0NDS4F5u57Mu//5esxwbMe37kqhHTdkya98Xk+V8899ryh14u+N2zxj/8IXtmxpeuDTAyUopGMQHc8TsdWdvCsJ6/+miVEWZ9qAzrpTXx9zgBg7kkyexQ9F3dGUWzklSRqRNN04Recv9tcFz2lDdu6vx/P6QvCgAgOsRK5ZWVlRcvXoxY7O//Jeu/3zfp7v8z7Z5/m/Pca8snz/9i8vwvfvW77Lv/z9Rf/K8p/+3eaT/7+8mKqsEcLWcZud5IaMKd01qRpyRKfpapzLO7N+elNbFF9tlZo2XX47h1RtasTLKO11FI5TDtcHMlxa3y+YkAgJiQWL/2BAAA0AmgcgAA8D1QOQAA+B7/qpwoAgAAUg7/uk+l8tgFAB7BRwh0N/79eHW/ymF8IAWfDRB//PvxiruyEyp8jX9fqJR6m0BC49+PV9ztmbCB9yXWr6RP3xqQzPj34xX38xyB6GgAECsS4uPVqXWZ435aIhAdDQBiRfw/Xh1elzlI3E9LBKKjAUCsiPPHa/WxY4fOnPmpekvFPoNfl/ntSFXjfloiEB0NAGJFnD9e87/8sp2ev/JDdenHI72uyxyEUEoChvPu5F0930w9Co10W8TiFXB/cQghZvc+R+ugRkCySyeE6J6qh+4wFp3+dPZFBiBWxPnjNWTTrspTR46d/HLzvhle12UOEhIZf3Jap21XXJOIKjcJ0UhAtisWr0BMO9y5d0T6FRUwiKZFsLPBFzCNKPTK0ydE/goAECti/vGqq6srLS1V7R1bfnhQZfW+n87vrz547NB7X/3F3Pdl7a7PT39x8FCkhuUic569MTlRuzk6ovKuvwIx7XAn3xFN8v1kaJFUHiCaYjjf1f5A5SDBiPnHS9O0e+65R7V3y55dD289WPZ9y5D03Ff0WS8NmfHSoGkvDZ7Rf2hW/+Fz+w03+g/NssPRc7nIqMmd9mwKwj6rrbMxvIs564QTlctg6OEy7HEDRrAFq659o27dDNqEOEbK0l4ZGtHNcHVru3t+oNOvgFVG2MiW1M1wl+yRPvviqF5DaYelL6PYvsK89qtqdYl1pRl6+qp3RCd8LW9vgdUf3fVddmlH/ZYBECti+PGqq6vTNK1///4uKqeULttatr26afConOOUWlFD6WFKv6K0mtKaUHRA5YwR7NNPEJzwf3Z2GMueqNZZajsxXIwfc9mWYbO6wTM8VIw9hKpXlsTDOmDLdGRUHvkVYKVpch02Qy0YIZVrmvgVGP4+U7yGQoeVL6PQvqvKuSfCbnR9R6xDS5Mzqrcg3B/1u8x9QmTtYFQOuplYfbwsj/fr1y+iyimlp0/XDXp99glKCbmDkP/+3s7j1yltofQ6pYTcRchd7+083gGVU6KHjKDzauCcy1ZkJMKeqEJ1q5gp7GI2Cs1yQ0Lm3Fb1ytAY6TDNdljlEV8BtnFpb5nyrAdFlSteQ6HDLi+j0L407IM6X3P26UvfEftPQeie3gL1u6z6hIT/6wCVg+4lJh8v1uNeVE4pHfT67ACl1ym9TSkhd7VSej2o8r+1hN53eKGj55HGpEwOQcgbONOdulPlfJpCVYztg9CsLiQ0rHNb3Ssuh6A2Y2SVe3gFrP8BcN80soulQlrDmWCRvjhch11fRjFt4qpy52suffFdkk7hIbyXtyDiu6xuByoH3UxMPl6sx72qfOSsbym9QSkhf0PIXbcobae0lVJC/tsNSgm5q/8IYXqi60nLSFM6l6PrKrePwp783lUu7VXUVO7hWPYhggX8oHJ7aGyEciDc05e9I87na3/DRX4LIr7LLi8vVA66l0T5eKW9lv0NpdcppZQScpe9nZC/scbpr7w2m6+hFFk4UaCewCAmB/g0OisOVWYg6COT2+JJ5epeRUvlXl4B9qCaoSzprnLVa8h12PVl7JjKrfLMVQTh6TvfEfkr4/EtiPguu7y8UDnoXhLl45U2ctZRSgn5W0LuJOT/LXp3ByF/Q6mVPb+LkLteeW0WX0MmMmuYyc4j5n/SYujcLAv7pNWJfLApVncmjjXxcJFVru6Vm8oVeurkK2CGDyRcs3Ve9nRTueI1FDrs8jIqn7JC5VbL3FVH4fVn35EA0YQpKPx17whvAdOm2wUDWTuKtwyAWJEoH69Bo2Z/41pg4EjFqJzH6Tt2Zpjga3van4uO2UOIF+gc6vGoclWvXLwW7Kp0MmInXgFmiqQgKRtpAsSZYJG+hs4Oq17GDqucEl2YZ6m69BoqrHpxIr8FjJRd3mVpO4q3DIBYkSgfr6FjcgeNyhk4ctYrr816eUT2y3r2gBHZA0ZkD3ht1oAR2QNHzh4yRpIr73RE53dAUf0hjO/CX7+lSowAIFb49+MVfw15mUiXxJGAKk/4dwSAWJGiHy9TJ5oRUOz0ZDFpuiOlIqFU7pN3BIBYgY9Xp4m7FxAJHgB0H/jA+Yu468kvKvRvzwHoDPjY+Ze4qzZp7JYKzxEkOfj8AQCA74HKAQDA90DlAADge/yq8o0zf7Fp1v/4IPeXZfPvNhf+40dF9+xafu+e4vvsAv/beDB+vQMAgG7FtyrP/EV70662k9m3rn97q/nTWzdO37591Vb5/xz5z1A5ACB18KvKN2T+Ys/8522V04oH5w181FK55XE24t1ZAACILX5V+caZv7h1ITwqv92pUXkgfC8oQohuxrbLHYZbItLl16kAgJTHtyrP/MW8gY9aKv90w3NlBfeXFdzfkVy5pXFG36beeZe73geg03XZPQFDSxSbd+XJAgBig49VfsvOlV/69HYrNyqPSMDQoumj2Ks86l3uPFA5AImHb1U+k8mVX+Jy5R4wddd8Cpd4CZcLGBrRTXtn0GdcGiRUmGkhWCxgaExbwb+kddleylXO9i9cwupeaEEIZTGrWdPep5tsSa4Tzmfh8clKOhOuie8BAKKPj1UeHpU3f9axUbmryaXODT9mpWZLyWX8HD5WeLNYwPOoPNSQzuVdmO5pms6oXVrMkir/pSD7ulE8i448WbszbCHTgMoBiDp+VfmGmRFy5W64qdxhVlahmmMQLKkktMCUCz7kC3hTuakrLsyGC7lmYJi2+Gfv+Cv8VaV4Fp6erPq1AgDEAL+qfGPmL9qbPg4lWKI3Kpfssm3FC4kbaYrSFbBrhW6rbUqal/ZFMYGFSwExKhe6Livm+k1i/+XyLDw9WaEzwY5A5wDECN+qvCu5cpfxa3RU7p694Y/tNcHCdVGWnxHsqSrmXeXqb7vIT1Y2DofPAYgZvlU5Oypv7ugMFj4fLu5xS7BEVrnL90T4ummHEyyy/ghHc+6I3FnlX+7fdpGfrCqlkjDzcABILnyr8q7kyikVB600PK+cz0qz6nG1o5B+ZlvQxVy28oqio4sKlbM9UiRYlMW8qVz5LDrwZNlC7MVUDMsBiDo+VvktJlcu3IPFG/yPPYVZGYrNclfaNbhZIlwL3IwX7i+xro1qvB7unmYElAkWVTGvKpc+C49PVvZaSXP+AIDo4GOVu98ZEQAAUge/qhwAAIANVA4AAL4HKgcAAN8DlQMAgO+BygEAwPdA5QAA4HugcgAA8D1QOQAA+J5kUPm2+b//IPdf3s/5py2zf7Nl9m+25PzTB3N/uzX/d/HuFwAAdBPJoPKtuf/i3PhN6TDYHACQIiSDyt+b/c+U0vbb9EY7bWunbbfoLUpP7Hzz+DZ9a/6/xrt3AAAQc5JB5d9/u/cWpTfa6Y12evMWbbtN2yk981l27cfjj28bumHOA84q/J20YnuXJ355BtxOCgAQffyt8u/27/9qzKtfDnzii8d6fDnwia/GvPrd/v3WrnZKb1NKKV2bLRmYd+e9VsX7e8PmAIBo42OVf7d//xeP9Tg1eEBTVub1d5Y3ZWWeGjzgi8d6fLd//01KWymllLZTumL6/c668VI51l4AAMQCv6rc8vj13NmU0mtZmVZQSq/nzrZsfrWdWkJ/e/L/dVZXqNzabGVEdFP8M1SCX8VSVpFDqXLFbdEpm5PRDFO6SqZQh62ArwkAUg+/qrx25Lj6Pi+2TJpEKyoopS2TJlFKaUVFy6RJ9X1erB05rvkmvdxKr7bTgre8J1gChkY0TWfTIcyfwjpy7F9iSRanykPry3EH4lZyENZBZtfgcS4/xK1nZEDlAKQgflV59QO9zqePbRkzriVjXHBTRcXVMW+2jBl3Pn1s9QO9mq7T81do8006d/y/OauLlz2ZcbI6GeJY1Ydf9lM1HnasUC/L7IQLiUdh1l8TdoUOj0XWAEh5/KryA3fed3VQ+qUHn7v0YF9ry6UH+1pxdVD6gTvvO3eNnm2mTdfprHGKGSzKBIviT8kinNyqxiqbcjNYnN8Fwi5HS+EN/FQYJseDpewBSHX8qvLqB3qd7zfo8lMvWwkWSunlp1624ny/QdUP9GpooT9cvH3uGp2e8R/O6t2sctmAnV8n2i7kOAqvcrWu4XMAUhi/qrx25LiTDz1tefxS/6H2g0v9h5586OnakeMab9LvLtCGFjpl9B+c1TujcmcShU+wdEzlqrYdRwkLPPLkF0yPASBF8avKf9y0/atf/Y5Sennwa1YEr39OnvHVrx/4cdP2n67Sn1po4006afTDzuqdUbmY6Wa92TmVs7W5fL3qsqfYAT04kGcvi2JYDkAK4leVU8vm9/2+7qm+59PHtsyZez597Mknn7c8fvTIp2+M6DHu9YfGj+r1VsaTzrqOX3uGk84uKhcqSuelOFEkWJimNCPAFWIOoptC02zC3DmpEUNyAFITH6ucUvrjpu21I8dVP9DrwM9/U/1Ar9qR437ctD3enYoyqm8CAACw8bfKkx/3S50AAEAphcoTEH7OITwOAIgMVA4AAL4HKgcAAN8DlQMAgO+BygEAwPdA5QAA4HugcgAA8D2+V3nGhFn247dmLY9jTwAAIF4kg8qffnmg9fjFYVPZXZtm37tp9r3x6BQAAHQrflV574LdadlrMibMssKy+QOPDKSUrpl41+61r26afe+tywF6ohA2BwAkPX5VuQ07KqeUrpl4Fz1RuHbqLy2PH3rn+bVTf+msJaziwCztIF+wp4vw9yZ37InNLzpj2DQAIMFIBpXbjy2Pr5l416Ixf2t5fFHGndJaEU3NFeiy161vDmcbAUPTNNyXFgDQVXyvchvb49afucP/Onf4X+9dKlkNjsZD5ZqmOcbI1uLOUDkAoKskj8qt/LidGRfMLsv1tNgAACAASURBVCCVs7CecniBNse9rWR3CLfuK84vFcG1bIr3NHduVdwN3eoMd39zz7uYvtmlHKsUhTZznWF34Ca7ACQ2yaNy9jqn5fGN6f9LVdi7yp2luVXXhOXaNF1qvbBwpRYOf0Po7BcDv3gQv+aQt13SZYpMPVyBfcytWMT21TSgcgASnCRRuXidUz0et5DeSNabyoVvAVvFbutqhuo4Bsou6w8xZcWbljOHct/FHoxfpMi+0OuyjijyPgD4hiRROXudc+/SB9w9TrsyKhfmvoS/CjytCWc/4L4BhDXoHDkWR2/DG7ztUqwJ7egysyHYEegcAF/ge5XbM1is65wea3VN5VK/eVveM1gqYGj8hlDT0h7ESuWO5yI+B/gcAJ+QDCpn55V7pPMqV+ZRPK7UHDA0ousyyyp8S53KZf523+VhVK5IsPDPC9c9AUhw/KryiemHVL/29EKHVc4Yjv/pjX2p0qPKxcE3r3LpdUrueqTLpUrnrggqtw4jbcvU2dk6GJYDkOD4VeU2LvdgcaFjKrcz2Py8ET6h7Vnl1NQFrzrnOGpGQEywmOEsOnOYSLvcVc4dMzhdMfy9gqmIAPiGZFC5/ThZ74zo8hOlqN9gAOIGwI/4XuWpQDepXHlFFwCQ6EDlPiB2KpfOrwcA+A6oHAAAfA9UDgAAvgcqBwAA3wOVAwCA74HKAQDA90DlAADge3yv8lT4iRAAALiTDCrvxA/3AQAgmfCrynsX7O7K7bQAACCZ8KvKbYSb3M4rX/rS8hFPF77y0jI9v2yJqpawgIS9po50RSEAAEhwkkHl9uOhaya8ukp/98Ca0iPvr/58Rf8VQ19dNV5aK6Kp3daAAwCABMP3Krcxype9XDzk6Nmq27fbG682UHr723M1/ZYNMsol10KhcgBAMpE8Kn96UdqcD+dSSrdVl2esf6OoYsnaz9dmrH+j39LhzsLe71fOpWKcNxYX15Bglm8I18T3AAAgtiSPyv8164+vl0ymlI5YN/FXE/7j/sxHe8x99uH8vn/Iec5ZuPMLwgkrN/Br1GuaLlnj3jSgcgBATEkelT9uvPrCUp1SuvFw2SPzXliwe0XN2RPPLx3Wd4nuLCy9uas3lQvfAvbCO/wamFhGDQDQjSSPyvO2vf377CeXVa652NJc23iq8Wrj+1Xb/nNOnwXlS52FOz8qF+a+hL8KBHljsXoAQPfhe5ULM1h+n/2Evm7spNKsEevG9pj7zIh3JktrdU3lUj/LxuHwOQCgW0gGlbPzyvPLiv5YOOjRBQP6LBqaX1akqtV5lfN5FAZVSkVZAQAAooVfVT4x/VBXfu3ZYZUzlmZ/SURpwAhe6eRVbursbBcMywEAMcWvKrfp3D1YOqZye/JhSMlswlxj5qyElS2brggAADEiGVRuP8adEQEAqYnvVQ4AAAAqBwAA3wOVAwCA74HKAQDA90DlAADge6ByAADwPVA5AAD4HqgcAAB8TzKo/K8eld8zCwAAUgTfq/yvHp28uqIi3r0AAIB44m+V2x7HwBwAkMr4WOWsxzs6MJfedZy/5SEAAPgGv6rc6fEODcyVC0i418FNDgEACYlfVW7R6YE5VA4ASCb8rXIL1uPzype+tHzE04WvvLRMzy9boqqiSrDwy02E7zfOrejJLioh3pPcumu5vYdzv7q81bxuOo4LAABeSAaV2wxdM+HVVfq7B9aUHnl/9ecr+q8Y+uqq8dKSEVTOLuJmGqEHjtUoJAt+WroO7jB1fmUKRXlN0yWF7OMCAEAkkkflRvmyl4uHHD1bdft2e+PVBkpvf3uupt+yQUa5ZD0KDyqPOGhnR812BX4lz3A7HS0PAAAdIHlU/vSitDkfzqWUbqsuz1j/RlHFkrWfr81Y/0a/pcOdhSMlWIK5EK6IsF6cA1vN/LJwmhHwXF56XAAAiETyqPxfs/74eslkSumIdRN/NeE/7s98tMfcZx/O7/uHnOechSPnyqnDq6LKpb51UbmH8tLjAgBAJJJH5Y8br76wVKeUbjxc9si8FxbsXlFz9sTzS4f1XaI7C3tSOaVcAoTdzedFhPISlXssLz0uAABEInlUnrft7d9nP7mscs3FlubaxlONVxvfr9r2n3P6LChf6iwcQeWmzs5SCT7m6/C/JwoYuizLzn8RRC4vPS4AAEQieVROKR26ZsLvs5/Q142dVJo1Yt3YHnOfGfGO/HdDYu46lAVhLns6pwSGtjIZFyIWU6rcc3lMRQQAdJikUjmlNL+s6I+Fgx5dMKDPoqH5ZUXx7g4AAHQHyaZyAABIQaByAADwPVA5AAD4HqgcAAB8D1QOAAC+ByoHAADfA5UDAIDvgcoBAMD3+F7l5cYfpBHvfgEAQPeRDCq/cbNdiJptI2FzAEDq4HuVby3ocf1GmxAndk89CpsDAFIG36t887yHWlrbhDh1oODE7qk1217bPO8haS3xdlrebkIo3k8LAAASA9+rfH3ew5db2qRx5Vrb+vyHpbWcN6yNfCdC3EIcAJCo+F7l78zt2dzSJo+rbe/M7SmtJdyv3JOlcQtxAECi4nuVr5zdq+nyTVWsnN1LWkuicucKm8xtw5kt4Yqyu4tbLVn5m2A5dTF7j2wdOj6VI7+TeThPhP8uAJDS+F7lR/5inmu+oYolWY9Ka3Eqd656L13D02VViXCxgKERTdMjtWaZmVlgiFsfOnxEw1Q3wm41DagcgFTGxyq/u+cIZ/x44YYdP124UTjjcWld7rInN6IVFvhk/M2pXFVMSNV4KxZu2cuao6HSSPgAAEL4WOX/9vxb9EYTG3f3HPF94w025k97UlqXUaZkyU4BicqVxcS1Oj0Vs8WuMrm6EcynAQBQX6v8+fSCtmsX/u7+gVbcvH7h7p4jTp9rZWPO5D9K63LOZP+QytRCVLm0mFPlHopFVrla1/A5AMDXKh+fu+HKleYrVy5ZKr9ytfnuniPqG1rtqDvbmv3W09K6vB6ZdIfLXBZWv8pibss0Ry4mLR95eg2mSQKQ6vhY5Yve3Xf+4uW/u3/g+eYrf3f/wPPNl+/uOaL2p+tszBjfW1pXHOkyVx5NnZ85ovOzTtgakmJiAttTMUbFXPnQZU95I6YuvyALAEg9fKzyTR/V/N39A79vavm+8er3jS3fNbbc3XPE5599NGV8n8lv9pkyvs+UN5+Z8mYfaV1H0iJgaOHrn2x2WnZxkmlELCaxauRi/KiaKS/dKJkgiSE5ACmOj1X+z73GbPqoZuG7+8bnbuibvuDfnn/r7p4j4t0pAACIAz5WOQAAAAuoHAAAfA9UDgAAvgcqBwAA3wOVAwCA74HKAQDA96Ssykm8AwAAokbKOiXuKofiAQBRw9/uOHq6acWOmvSiimdmlqUXVazYUXP0dJO3qnFXNrwPAIgaPtbBnqrvJhRXTlx7YP77X68sC8zfemTyqi/S5n+8p+o7D7XjbuHkCwBA3PDrGXj0dNOE4srpJYdX7zl5uP5CfcPVw/UXlnx0YnrJ4ZdzP/IwNo+7+JIvAABxw69n4IodNYONinGr/tJ4uXX3kZ+Wfvjt58fPNV5uHbfqL4ONihU7aiI1QLgVHfQouMzUiWZ0qTohxAhIdulR6qHqoCZUDoDP8esZmF5UMWDe7rSCvVdb2748cW7GukOvF+3P21KdVrB3wLzd6UUVrrWtFTQZoxkk0D0qNwnR5MeyrOpsIWAQTYuVyqMaAIC4kbhnYF1dXWlpqWrvMzPL+mRv75O9PW/zV2cvtFBKr1y/uXb38T7Z2z+p+WFf1feU0k2z7900+15J5YChKca/8VW5pknGyIYGlQMAIpC4Z6Cmaffcc49qb3pRxVMztj01Y1vGsn1Pzdg21Ni1+uNvKKWHAg1rJt61e+2rm2bfe+tygJ4olNncul25XEkBI5x3sXVvaEQ3iZWS0XVOrAEjaGdB5c523FM6VnXrQIL6TYMpHyD2bcrZbwWrevigHdnFPkf7JujsV12450JnTPY5xvLTAABwJRFVXldXp2la//79XVS+YkfNM9nbRy3ZRylduqPm+TkfTlj9GaV0zcS76InCtVN/aXn80DvPr536S2d1y2vSbEbYdGZ4jGwNjYN240fWtnxZLaraiTAqN/iK7EY93DL7BWNvF/Iz3ndx29lvnVA32MdBd+vhLxX7NYHKAYgjCadyy+P9+vVzV7k1gyWtYM/aPSfONV+nlLa0tlkeXzPxrkVj/tby+KKMOxUNhIe3rNB1fjRqa9rQFMUCRAtpmtWiqp2IKpc2zqqcC5MXLluG8az7Llbl4efIPC/dOULXxTIJ+EECIKVIrDOQ9bi7ymloXvnggj2jivYfqj1ve9zamzv8r3OH//XepQ8oavMpAl1MF4QTISGVs3kP24CsZMNaVLfjReXOxgWVs6kbVuXCfzJ0ma9ddnHP0da96GuuM9ZAPlQLABA3EusMZD0eUeWU+bXnvqrvrfy4nRkXzO5ANkplMyF8SFPYAX67oHL5DD8PKrftaYRSOqw9dcKnO2KtcsdzEf+LEPrPDZaJBiCOJJbKuwJ7nTOSx6mg0eBVUDb5665yy4YmN2IVXCyfIeNF5dbhmAx12J78GJlNrItZFEbB7ru8jMrlCRb+9cFS0QDEkSRRuXid093jAUNz5CvC1mNcaehBUTpVbs0dZEe7rBZV7bgM2Lmxs8kl8QWVs5l0TuXMtBydiJ1R7YqgciuLIr3saYbLGxrRMSwHIH4kicrZ65x7lz7gOh6n1mREFpNXajgRLdUcIzVhuCqY3dkODeWXVZMR2VE/N/pmZrCEs+SOBIs9lZD7AVSkXe4qD/eZEKKL3yvMEwQAxI3kOQOt65yei0vGxb4Olx8odfGOAp5bAwDEjZQ9A+MvX1+q3OWKLgAgfqTsGRh/+fpF5UI2Sn3vLQBA3EjZMzD+8k26AADEjVQ4A+PuuBQJAEDcSIUzML7qibthE0HlsD8AsSUVTqfE9EjczQuVA5A8pMLplDgeibtt46LyztkfANABUuF0cvFI3PXno4juiw+VAxBNUuF0kkjk6GmyYkdNehF5ZiZJLyIrdpCjp+PuSj9Gh195qByAWJAKp5NokD1VZEIxmbj2wPz3ycoyMn8rmbyKpM0ne6ribka/R4RXHioHIEakwunE6ePoaTKhmEwvIav3nDxcT+obyOF6suQjMr2EvJyLsXk3BwAgOqTC6cTpY8UOMtgg41aRxsutu4+QpR+Sz4+Txstk3Coy2CArdnjWUOhWVtxCELJF5qIeykWFYne4WD1BAEB0SIXTidNHehEZMI+kFZCrrW1fniAz1pHXi0jeFpJWQAbMI+lFXjVk30cw4FhDWbUAtI9VHqsnCACIDqlwOnH6eGYm6ZNN+mSTvM1fnb1AKCVXrpO1u0mfbPJJDdlXRSglm2aTTbNdHcQsASGIVboyQ/KoPMpPEAAQHVLhdOL0kV5EnppBnppBMpbte2oGGWqQ1R8TSsmhAFkzkexeSzbNJrcuE3rCzebiDcQVdwCnfHaCvbm5dLs10tdld60K39NKI6bLUp8dkayuWM8oosqj9wQBANEhFU4nTkwrdpBnssmoJYRSunQHeX4OmbCaUErWTCT0BFk7NejxQ++QtVPVEmT0xJmOvwcsu2Abu0u13dCIpklWkjN1xTo+/BJIVgsdsLm1dkSk8rF8ggCA6JAKpxMnJmsGS1oBWbvnxLlmQilpaQ16fM1EsmhM0OOLMtR249fnFK4KsnlknR+o2ul11XZDk19U1NWrawq7hMU/PQW/+Jxc5bF6ggCA6JAKp5PoJmte+eCCPaOKyKHasMetvbnDSe5wsnepUm2SDIPOacte+tKJbqq3S5edk9k5fETZQhCi3EMbbaSit3wtvZ4ZyycIAIgOqXA6SfRk/9pzX1UwP25nxgWzS8fIcrEy5jUC6gV31AvxyFXuKN8JlbuHNDvfLU8QABAdUuF0UiksuIu9zhnR487ZI1LTmVRc6ViiQo8qd5QPJ1icTXUowRJaZ9m9fCyfIAAgOqTC6eSmcvE6p6vHpbZV5h9C007C1yT1YIZdtV215r3LZU+xKUW2XRq6N+nH6gmmxGcPgG4iFU4nN5Wz1zn3Lo3gcRogmmMCn3BVUBizswtjspKVblepPCjQUPsB9WTEWPzWNFZPMCU+ewB0E6lwOrmpnIauc3qRWjSXrkcE3wIAQBRIhdPJxSMdU08nrigiXAMAEB1S/HSKu8tSPAAA0SHFT6e4uyzFAwAQHVL8dIq7y1I5AABRI8XPqLjrLC5Si/vzhcoBiDI4o7qfBNccPA6A/8BJ1Z3413TwOAAJTRKcV4nslITtWBdJ5NccgFTE76dWdEeLXddN3DsAAEhFfG2NoPg+P0FyN5MhC8mgQjK4kORuJp+fiJHiuy0AAKAD+NoahFJSZJJBhWTMCpK1PhhjVpBBhaQoxmslQ+UAgMTB19YgRSZ5MZ9kbSBZG0jpF+T49+SLb8nyD0nWBvJifgSbs/d7isq6w1G9QwsAAHQAH1vj2Hfk2Rwy5V0y5V2y5TNCKalrIJSS6zeDG5/NIce+k7tSWAPTNDwtWBwFlfOLyUHlAICokLjWqKurKy0tdSmQu5mMWU4mrCUT1pKTZ8nBWjJhLXlvP/nxAjHKyIS1ZPxKUlgmE6V6bQSoHADgRxLXGpqm3XPPPS4Fhi0iAxaQtAKSVkAO1RJKSeVRUrgtuCWtgAwsIMMWyV2pK9axpPztudnbhetmcOE0XXfcLlwjAeman3w7kpSOKTlWIr8pAIDEJBGtUVdXp2la//793VXedw55OpP0ziK9s0j/PHLgeNCDDc2kfx7pnUWemkGey3HztXMQbXvZ9qwZUrmmhWzLj6zt5RRYlava4eqy/zkwoXIAQOdJOGtYHu/Xr19ElQ9bRJ6bG1R5xnIybCEZtpCs30coJcUfBberRuW2SQWhC3cktzUtLLQWLsaspcmqXNWOU+WKJdkAAKADJJY1WI9HVHlhGXkhj/TNIX1zSEsrqThC+uaQVxcQSsnictI3h/TLJUsiTkk05emOcCLE5F3MW5tdmy2scnU7zhE9kad6AACgAySWNViPR1R53VnSaxoZvJAMXkh2VhFKSeNlcu0GuXaDjFpGBi8kvaYpZ7A4h+dGgM+E8CEuShkyMrtdULl8uO287Clf9h4AADqAr61BFpWTp7PJa4vJtHXEPETqG4h5iMzfStIM0i+PLCr34PFQPkQ33Wa2ONYXJjohhsllSMIqd5kho5jBIiRw4v3CAgB8hq+tQSyb984m+mIueme7ejxANMeK9Xa+mx0gG3pQu06VmzrRNHGNeftPVTvCJVC7TSxFDwDoCr62RlB8n58gczeTgQvIc3PJwAUk//3I92DR+US2yTvaxlazU+WWlNmhtzAZUdoODeXHiR5Orcjm0gAAQAfwtTW85k98GAAA0AF8bY24CxcqBwAkBL62RtyFC5UDABICX1sj7sKFygEACYGvrRF34ULfAICEwKcGibt2IXEAQALhU4/EXb5QOQAggfCpR+IuX6gcAJBA+NQjcZcvVA4ASCB86pG4yxcqBwAkED71SHQc+vkJkruZDFlIBhWSwYUkd3PkX/xD5QCABMSnHomCQItMMqiQjFlBstYHY8wKMqiQFEW8xTlUDgBIMHzqkSh4/MV8krWBZG0gpV+Q49+TL74lyz8kWRvIi/luNmdX7JQuKQeVAwC6H596pEvqPPYdeTaHTHmXTHmXbPmMUErqGgil5PrN4MZnc5RrVrDLBlm3NlQt9wyVAwC6DZ96RCLE/ftJc7MndeZuJmOWkwlryYS15ORZcrCWTFhL3ttPfrxAjDIyYS0Zv5IUlnlQuXUnW93TQaFyAEDs8KlHJEIsKSHr15Nz5yKrc9giMmABSSsgaQXkUC2hlFQeJYXbglvSCsjAAuX6zk6VszkWNv3C3spcut26B7pure4Z7xcUAOBrkkrllJKmJlJbG0HlfeeQpzNJ7yzSO4v0zyMHjge3NzST/nmkdxZ5agZ5LseDyvk1PAMGs9gbs0u13dCIpllmBwCALuFTjyhVTinJzyc1NRFG5c/NDao8YzkZtpAMW0jW7yOUkuKPgtvdRuUMbKJc50fi9sJDqu3Mep4AANAlfOoRN5WfP08yM0ljo1LlhWXkhTzSN4f0zSEtraTiCOmbQ15dQCgli8tJ3xzSL5csUVzMFBIshhb60yROdFO9nVtkDgAAuoRPPeKm8ry8CKPyurOk1zQyeCEZvJDsrCKUksbL5NoNcu0GGbWMDF5Iek3zNoOFBiexGAEx2RIO1XaoHAAQPXzqEbnKm5pIcbGbxO1YVE6eziavLSbT1hHzEKlvIOYhMn8rSTNIvzyyqFxZUapyk3W6UEW1HSoHAEQPn3pErvKSEtLQ4Enlls17ZxN9MRe9s9087pZgsSYmMgNwQw9e6lRth8oBANHCpx6RSLaykly86NXjVnx+gszdTAYuIM/NJQMXkPz3I9+DRbjsKUwqt6zt/CGodDtUDgCIFj71SMeUnfABAABdwqceibt8oXIAQALhU4/EXb5QOQAggYBHAADA90DlAADge6ByAADwPVA5AAD4HqgcAAB8D1QOAAC+x68qf+iRf+/1+H8+3++R1/Q+0956uWDO0BWFr8e7UwAAEB/8qvJlxqhlxqj6hlYrbtxst7bEu18AABAH/KryJQvS8/e2LSkYban8+o32JQWjL19fv6RgdLy7BgAA3Y1fVb54/pj8vW35e9sWzx9T39Da0tp++C877HCva+riapqmTohmBFzLOBvha8QH9kZd4nMAAKQMflW5kf9G3t42KwrnvVHf0HrlWlu58QdpiJVFTwcMTfBgwNAirJ2cOCq3uxEwNNgcgNQk4VS+f//+5ubmiMXm5705d29b7t62uXvb5u5tm583rr6htXRBjystN4XYuqCHWDlgaKzyAoZGNI11t1BARgKq3FO/AQDJSMKpvKSkZP369efOnXMvljf3Tzl72nJ2t83Z3TZnT1ve3D/VN7RunvdQ85WbUwp3vpm3PWNO6etZW5qv3Nw87yFHbU551gicG6k7BenIYAgqZ8qEm2E3soN8UyeaYdo7dZMtyv1nQHpoFqXK2WM7c0eh7Sb/vw/54dgK+JoAICFJRJVTSpuammpra12K5eS8NevjG7M+bs3+uHXWx605ORPrG1pLch9uvNJqR9OVm41XWktyH3ZWZxMoQRsyUmS1zlmf2eHIbIQrGKZjI/+XqYe1GLQn+1ekQ7M4Va4Hj65Le8ddFbAc7X44dqtpQOUAJCYJqnJKaX5+fk1NjapY1qzJM3e0zNxx9f/pvWLmjpaZ2ZPrG1pX5zxyrrmVHZWfa25dPfsRSf2wGW0Zsg9Ez4cIu1JhfvYA/BiW+fbgKzj+CtZTHlp1GFMXB/WR2lR9NzGHi3zVAAAQfxJX5efPn8/MzGxsbJQWm541dXr5penll372xtHpZc3Ts6bWN7QuzX70x6ZWIZZlPyprICSxsMFk8uIniLAZEE6PUpOLG1VCVfylPrR4HEUihUvvWLscXua+muSHCzYDnQOQyCSuyvPy8lxG5ZMzp0/d2jj1g8YpWxunftA4OXN6fUNr4YzHz5y7zo7Kz5y7XjjjcWkLljNZuVmPvaQ1aDepPLI/FVdf2RSOW5u8ytWHg88BSGwSUeVNTU3FxcURS741I3PS5rOTtpydtOXshOmZ9Q2t+VOf/PaHFiHypz4prR4wNKLpuiamOnRWjuopIfxo3lHGuZFPsERWubfZKHKV86PvcEuONsMCj3w4TI8BIHFJRJWXlJQ0NDR4KfzmtOwJG7+fsPGHN6dmH/7LjtmT/njsTMs331/95vuW5eUnX5+1/diZltmT/iivzF9wpJSGsgwO2bFXL0NXE5VJ6tBlT7GiJhklu/+lOjSLWuWhzdykeX7qOX/ZU344U+f/0+LoAQAgAUg4lVdWVl68eNF7+TemzB6//vTYKbMopTMn9D565urRM1cnLtpn7V1efjJzQm9FVclPaqRXDtk0skLHbBl+TC/LY3tUuerQQt+k28OH1oyAKf5Hw86FC3qWHC7idEgAQAKQcCrvBGMm54yZPNt6vLz85PDpW+PbHx+RID90AgB0kWRQOegk3q6sAgASH6g8teDnHMLjACQJUDkAAPgeqBwAAHwPVA4AAL4HKgcAAN8DlQMAgO+BygEAwPfEWeWHqyoXl8/PKCtbXD7/cFVlfDsDAAA+JZ4qP1xVmVFWFji4pvWnAxllZdr2r2FzAADoBPFU+YaPj9Or9ceOvP3pyZztNcv7v/3eixM3sAX0HvfHq28AAOAj4qnyjLKyzd9+8+e9K981n1i18pFR01b3H7OBUpr12M+doWwllr8+F9djwK8jAQAJSZxV/vC+0/3XbZ82ouefxrzx3JgPxk6Z/93hj7Ie+/nNazvPfrZ43sBHrQfxVDl/O3PcfAoAkIDESuX79+9vbm52L3O4qvKVVV/0LKgZMnbzC0P+/MKQ7MNVlRfrP8t67OdnP1t8ZFOm3uN+60FiqByLLwAAEpRYqbykpGT9+vXnzp1zL3a4qnL+tPVDhy2fOs6wrnlO6vNQ1mM/nzfwUb3H/VbMG/ho1mM/V+bNWd3KbhCu1LHqbuKKtqlj8QX5rbzDSRn5jculSzLzrVuPuIUh2Ba49Sy8dQAAkNzEUOWU0qamptra2g5VbL9WbydY9B73dyjBwiy0EzA054LKlPelrLCybXFMLl8ClN1qGsziDbx+pQvD8SrXNJ3/JhBXKfLeAQBA0hNblVNK8/PzXVZbLp9xf+upNXZsGfdbl5A3oUqwSFdFVi1q5rbasXSMK1QItStp39E0tzSyWuX8MFu2DrTHDgAAkp+Yq/z8+fOZmZmNjY3SYlvG/VPrccOKLeN+23pqqTTOVs31qHIulcHkWMI5FXmGRJ6NYNp2XgEVsUfFYhJFKXf3BItLCx3pAAAgBYi5yvPyCviVVgAAATtJREFU8lxG5etG/2Pr8bmtx+duGfdb64Ez3DxOhdG3YvHN4GNWkerCfNthKbJ/uF9rZXUaQ5V76wAAIAWIocqbmpqKi4vdi61K+0Vr1cQt437bWpUpjQgeFy9j8sPzsCdNnWiGyRRwKxzGOeJnFi92v6gYKuEsqUqwhA/moXPeOwAASAFiqPKSkpKGhgb3YgXP/XzLuN+2Vk2URkSPc9Zj3WUNS4WF7DVNftXSUZgytbihLTOz3NT5uSR6cJzt/K4QSwoHZhI4cpULLYQue3rvAAAg6YmVyisrKy9evOil5Cr9XpdQ1wtmi8Vrf3biW8iZOH7f41aYrcTpMGBo/DRHIdMunx7oMu/RbkM3VQkW8Vjc/zU8dgAAkNzgJrcAAOB7oHIAAPA9UDkAAPgeqBwAAHwPVA4AAL7n/wezsy9EWknXlwAAAABJRU5ErkJggg==" /> </span><br />
<span style="background-color: white;">Sometimes, you may be surprised to see why Eclipse doesn't update web.xml file automatically when you create servlets and servletmapping in a Eclipse IDE environment, Most likely, it is because you created the dynamic web project using web module version 3.0 (Check point #3 above) . Instead it added annotations to your servlet's java code (see example servlet code below).</span> <br />
<br />
<a href="http://www.blogger.com/blogger.g?blogID=8061373088972523424" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a>9. In case you are comfortable in using servlet and servlet-mapping inside of a web.xml deployment descriptor vs annotations directly inside of that servlet's .java file, you will need to revert/change your dynamic web module from 3.0 to 2.5.<br />
<br />
Note:- You may not be able to directly revert to 2.5 web module from the Project's properties --&gt;Project Facets and change dynamic web module from 3.0 to 2.5 because it will complain about Java 1.5 dependency.<br />
<br />
10. (Optional step - in case you prefer to use servlet specification 2.5).<br />
The workaround is to make the changes inside of "org.eclipse.wst.common.project.facet.core.xml" which is viewable inside of .settings folder of the project. In order to view the .settings folder, change to Navigator view (Window--&gt;Show View--&gt;Navigator) in your Eclipse IDE.<br />
Make sure to change java version from 1.7 to 1.5 and web module from 3.0 to 2.5 and save the settings.<br />
<img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAckAAADhCAIAAAAs1dnJAAAZfElEQVR4nO2dzbLDNq6Evch+3v8tZ38Xuoup8fiIQKMBghIt91eqlEyRQPOvj6TYyesQQgjRzetuAUII8UDkrUII0U/sra8PGvL1hVrKZQrfibyMWSVgvsJcm+CtkBsnZRzSF4FXjZdRmMreDSvKuHPGfKxn1az/F2aTFKLhj/uP/70KzYHyDM6r44022bXaVIKP+0/6w8jNury1ndDv5K03Zme8FZd4hbwG/BEHX3RvJBhyf9Y+Z3R86nmfmydmHCbjKQJTAhSeruKGjJ6ws2EHTydehVQ0/DEbs9Dl0/iHAcewTBNSBqhgYg6UmT0s8aLxGvBHHJNUKFaQmHUw2aNtHf4+IdOByp8Ly0ztlfB6wDYOP3q+ADwF0Lghs9S6jKsxl4BRYpFk3qM0KbVlc8oVZmlpCMSActGL7TVGPX+te/vZ8xoyo1ffOzdL+C0a1sElWNUM93orKCl0HwQsTxwpY35SZrwV1PcsflI/ri97vYDikwW4dLG34hsQ8Kcb3xQ0eitWGHKvt5Kb/+u8tTAp2SWBC7PpZpZBix6RpbglPsu9RdDorWEu3IoMPlNCmkuBe72VvLqnt34Gn5+UZ3irjPUyeubPPL/GW73tBBKVnRTkut5bTb9o99ZCl0Er8pJnhSlvPYVq8Va82BiFqXTzQVqUiBrFxfH6L+H5YW2bz2oJrdEDvlno7QHvKtmQGY1JGCW41byGo9ploCG8dAy984aCH/mlo8EoLAgot/XGNitAzKDhFs9k9Pq7lIjfRAtOPBN5q7gXLTjxWNpfjwjBozUnhBD9yFuFEKIfeasQQvTDfrV+/5dWmyjcQYMQ4nbqvz5aombl74i+jtVf1RRCrKP4Q8NFyFs/Ad15WE+FeB7xPSkoB+8KTj+Y8S6Z0fDvXrxcQCqoD7RhnbjLtUvvCuFo8J0VQtzC/zazfRlu789qpybmR3AJyCADhiK9mJ6BnlSF4s0utI9GqoIQ4i7i2z3GdkcnIkOR3uqV4Obg7i9sWBBPhvLEMxlrdYQQ1xPv86yD4FDA70Aur1X2Ro/RD2SEJWYoUjyTMVtBCHEXxfetZW8N1CRfLH6Ft5IashVkrELsTPF7AthbvY/gkhknFXCMBsANwe0zEG+2bR8NoFAIsQ/xC9DTk6x3yWtopPQvgathwCNjr17911+y4g/oy12jIWMVYn9+dJeusycZnxDikLe2R5O3CiGO3/RW/NQ/GbMroBDiq5EXCCFEP/JWIYToR94qhBD9PMRbf+1F57u//Fff2gWseFs90pXiRsqdAk28BSD2oWdirtnMq1N8EXhrXTNWvd4anl/Juq+R8MFxK95b5cJ30TDcX7eTHwDYMC/rpxxLNXxF2E00pG5amY84oH51ciOzY23u7fdTzOmJxjv//Dg+AeFHKlBIhuV76oU6iVwq493qdHK6FA5IKN5UeOqdF7DcL7NHXsDs8I5tQX1evyfMG5YwoFnT+wgCTgoQk0wNNJ7XcR8e1uY0m3iWwSsxN56njVxwWKEppiyjsMnH1EC8FzCU5AUkW6W6wOSdn+XsYitHmBmHeUnlUKJGfZSzZjeWg9WTXe6gPjghgzMKPR9cIaOsENTE4lO5JvvFNGdGNRRvdrkgeGzCmzgZcLLtpBJRY+F9a1h+o7eOgOChQqYjWRllhV4T72NqFpia5eH1kmYnNxQf2tYKb83GLHurjHUTOm+UsuU3eisIRWZp8daaDEYeL3KFt7KKo7BhyT7e+m6V3RE4Wra5jHUfGgY69Vf6c+mXvXV++433WaZaUkPZW2syGHmmEjM1Fo8/FlrVegE6Ak7CViAjuIqVp7aDKZUUmc1CBhFd9Iz1uIjfmJXfq/C0Ez7LvT02rrkx3RjtcDZbaucAhScNY7UuGYw8s8TMDsRjhXg0av16/SXVwezw4i7X9JtxcPlnLq+8IKOgQbSj4f4VtLWEuBLtt19B3irElWi//QS9T5dCiBDtNCGE6EfeKoQQ/chbhRCin4XeCl7wrXjrV/vGzM6vIF9/vz4FKtwrQwgx0v/91rHksj2Z/TZlrWGBWvxNTI2XsYlgIXZg1XeSb9ldZW9dzS946+mq7FX8OA0/B8qW49/JeHXwGwbv1zU15WEuMx2WXXj/AEwtHMbTXTkuCbvsyRjrhIVC/AhTq79mT17D0+Y/RTM/eueMcsbsCjJMJcxAZZ0XhDXFk20Lhpj1XCF+gfrS5zc2f/Xl3A96zUkLy2owzS7lIDPCeMy8nlODvqzzd6aCEI9kyX0rvpRtON7crfNW3o9IhbgtbpXtAv8R+2xZQKGCEE/l6vetTCt+t+/jrYVc86S89eCGl5cqYxUC0LD6GZPKNjmdex+98y7ZBRmmEtKjs9zorTJWITA9G2Dcn95DrvcI/FlitgVPzaeGpGBGIegaiIkzMvJIsuLNEqbVvDAhfg3tgS9GFibEtmhzfhmnm/0blQghANqc38eK1wtCiF60P4UQoh95qxBC9CNvFUKIfhZ6K/660qJ0hSbbvrh8C9tBYU3DjcMbpt5qeMXzWPL91uOmf52dSnSlwrIxzTTvktGedJP1wA+vXFgUuOd3WYsoe+tq5K23yGjx1vHHI/PCxC+w6hc42Z8nnX4XNNbBbxgKPygKFYJcZjosu/D+Ydz8Y/ZTWC/XpAw8ZeDq8XeUCjLCLmOFn0rMqwdcNrihEICpVeItsnDzhEt23DnmR++cUc5s74IMUwkzULzXhCde3hlTCEPxk5KVgbtcm6NU3tQlIf5D22Zrufq+0cCVPTdJrXjS75jgS03NjDz+k8my1Fv5mjWPI7sMpqxledSiiR9kyX0rvpRtON7crfNWEBBr9hTitrgVkG0azRgQ9y5FOC9ezdXeCsawvDxkrGKe2SUCXKPcit8S+3hrIVcN7K04b6+3ehUu9lZGUiqvjFW00LBKGJPKNhnvxcyP3nmX7IIMUwnp0SRgoEBNpvKMTfOTUpBRWBuMkhEZq+iiZ6GMG+/NWNO8+llitvUCHh/bhrdXUiHoGoiJMzLyQvHm+eEPLyMDy+On8hQNDzIpA3TZi1ZYFSFdccQvoLUiKGQrQqTQhhEu+G5RCAHQhhGIxlcZQvwU2jNCCNGPvFUIIfqRtwohRD8LvRV/z2ZRukKTbV8mvoWB73VdKIclHNKwX0I8gFXf+7vlXzGnEl2psBa/3YM2mQi+X3Jh8b3c87usRZS9dTXyVvMqWY2pLMRudP7+kiwPf6gDfmaDf8nT4q2vD7B+RuFroKAQDxdINyNj7CkIayoHY+j1a6wTFgqxJ1OLtWZPXsPTpj1FMz9654xyxmUKMkwlzECl9JthPY8LZYTxzZPa4KTypi4JsRX1lcq7En/18y4JVPZufFIbj/Q7Jni7qZFks9Q8bvynGQqMVcu81KIJcRdL7lvxpWzD8eZunbeCgFgzvgMlfXz+/g5H6/VWIL48LzJW8Riuft/KtOJ35j7eWsg1TzZvr7e255WxiifRsFgZk8o2OZ17H73zLtkFGaYS0qOzhBaWkhHe6pKjcZTmRcYqHkbPeh338PicOF4ad+P75si0J2+XnhqSghmFoGsgJs7IyCPhh5eR4Y0Gk86M09jf3nET4gK0ZL8YOY4Q26LN+WXgG0khxCZoc34fK14vCCF60f4UQoh+5K1CCNGPvFUIIfpZ6K2bvBC8XUb5a1tk5C4xO/AWBr7KtoOMHbhMW++kvAZSub6IhV8/vH50Lsg444PtMbNtr/yOQS3+JltrExmbAEaj8KfaM9MwF69qE1b9LguUL+LiO5rGhrd462rkrY9h3cME+K0KjokNehNmNS2yjBYZ3h/VdyG4OrYNn2Xw3/DCQIGAn13wwhYShcPo9dqLBgYEKwTzwogPS8IuezLMytnsYyFoghsyeo6/CyY1I8d+3oqnbB+mBOH+XNbbgozTNgOVxzVa05NaK+Y2w+eMKrwnRzGkDFNJuPMZMVheKJ5sO79QsUeEAzXKZsSnls0xTN/YcNGkXNZqfh57Wfg06lmMN4u1CS7LCM9T6ULlqTWB9yoZltcAZqSsedFC9wzFHHnQlxkrCYXhMWQGipGUWjahqhku89by9ryF371v9SrgXcfshBZvHeFz8YlwQKzZU4jb4lbZLvAf8YynNITCTuctA4UzMiX8mp+clLuatMxjI/1PQ8yldrIySAcZr2btqaaQr3yjtxZyzZPy1ndJttWMtmxwMnvWSccSfs1nucBbv85Yj3lvPbbpFfj7jwvxmmOsZ4W3jvc++Jyh4K2MDFPJop38jd7KDxQoJEvw9OGkZcDWy+6FVPxywGvoXFVM4VLMZf1mLD+d41Zmc7PVMaxjLyDOFWo4/OULZINEo3hGhicAX62RFW+WMK265J3SeRpwv+aXzamzXfPCKDFbzadeFK2RTWUJYbLtRhLihFaq2J3X34eAG5UIwaOVKr6AFa8XhFiKFqsQQvQjbxVCiH7krUII0c9Cb7397Rh4STf5/q7QdvM3hm9h4FtEF8phCYc07NcOXKYNjAb4KhUOCL6A5eX6EdZ+ra+RGR9sj5lte+W/6a7Fb98J1/sFvvqzO/wTbzTwxzAa/hhGe+oc9Xx/eD7Iuiy7eetq5K3m1Yft2xrkaFzprTVb/wpme5J64n4Xgqtj29eA14pXiC+BgJ9d8MIWEoXD6PXaiwYGBCsE8wLE8/PlZT/1FIQ1lYMx9PqFZfAlo348IDhjePWUKOzUqe3pBFcjo+GPIBqesm9nqhuFGfpcEKf1h5uTeyMl0kw67gp8zqjCW2gUQ8owlYQblRGD5ZlZCvNl1jdPaoNTAPSLGflxSYcD5ZXwXR4b1mY526RrxlOXvoiFD8VmhXHxzUQ74E1BGDm17mdWUlb8jOZF6zKbpbbTxn+aocBYzXefX6JMakZP1n9TG6cAGXPFjqhF25Mb7lu9CtglmYXb4q3eX/72lQQCYs2eQtwWtyp0oTBfYXzPW4H4mXkBSszzlpHHGZkS3P2ZWfayM9X4XGHN+Uncgc6FyFwCywI3ZxYluXDBJb5yavqz4rOjWhbGk83b663r8oZi+Mg1SyqU8JuoxlJv/RFjPea99YB/rnEhXiKM9azw1vFWBZ8zFLyVkWEqWbTxwqFOyTAHEKyN2uCU8byVH3lQSJbgLuOkWZjJTc04mahQ4Yvo6Ym5Ct+M5adz3MpsbrY6rD0ZtvJWEtBwOKvNhEk0imdkeALw1RpYfFakNxpMOjPOBf0NZTCzXGvoFTZONDOV2VYFDfNB9uFRnRHreNi6F2I12jDCBd9ICiEA2jAC0fjEJ8RPoT0jhBD9yFuFEKIfeasQQvQjbxVCiH428lb9CxMhxGPYy85kr0KIZ7Cdl8lehRAPYEcjk70KIb6dJS72GmAunSKsECaEENewo4XJWIUQ3852LiZjFUI8gL2MTMYqhHgGG3mZjFUI8RhkZ0II0Y+8VQgh+pG3CiFEP/JWIYToR94qhBD9yFuFEKKfhd56+3eqwv8ncFlhoe3m/+Opt7B7f4UcytiBy7T1Tgr+uflXjPx30TOOF8zHjA+2x8y2vfJ/mFqLv8nW2kTGJoDRKPypxpX5kdcckTSMzsV3NI0Nb/HW1chbH0P7fetMLvOqpgkwOzSpJ+53Ibg6tg2fZfDf8IK3goCfXfDCFhKFw+j12osGBgQrBPPCiA9Lwi57MszK2exjIWiCGzJ6jr8LJjUjx37eiqdMnJgaF3K2ToXmLJpbl8+FM/L1zW2GzxlVeE+OYkgZppJw5zNisLxQPNl2fluCXMxAjbIZ8allcwzTNzZcNCmmyFoinGt+Hh/Jwodis4K3CWvRDmLFpNYE3qtkWF6DJ35G86KF7hmKOfKgL5M7HAvDY8gMFCMp67+pdZ5iJlrLAm5R8lRuuG/1KuBdx+yEFm8d4XPxiXBArNlTiNviVtku8B/xjKc0hMJO5y0DhTMyJfyan5yURW3Dmi3z+Dz6H8rwJdJBxqtZe6op5Cvf6K2FXPOkvPVdkm01oy0bnMyeddKxhF/zWS7wVhlrmeYbh7CcX3OM9azw1vHeB58zFLyVkWEqWbSTv9Fb+YEChWQJnj6ctAzYeqkNlY2fCvKzdC7uz4+fjOWnc9zKbG62OoZ17AXEuUINh7N8TZhEo3hGhicAX62RFW+WMK265J3SeRpwv+aXzamzXfPCKMGtWjTMB3kwGh1BoY0kRAptGOHy+vsQcKMSIb4ObRiBaHyEFOKn0J4RQoh+5K1CCNGPvFUIIfpZ6K23v6QD7wonXyMW2m7+4vItzFO4p/JwSMN+7cBl2sBoFL6e9Rogc/0Ia79d2MiMD7bHzLa98l+41+K374Tr/QJf/dkd/ok3GvhjGC2Va6bmd/E1XyF+jLeuRt5qXn3Yvq1BjsaV3lqz9a9gtiepJ+53Ibg6tg0fPfCzTMFbQcDPLnhhC4nCYfR67UUDA4IVgnkB4vn58rKfegrCmsrBGHr9wjL4klE/HhCcMbx6ShR26tT2dIKrkdHKufCUfTtT3SjM0OeCOK0/3JzcGymRZtJxV+BzRhXeQqMYUoapJNyojBgsz8xSmC+zvnlSG5wCoF/MyI9LOhwor4Tv8tiwPMumGFBzUaLJSdyEhQ/FZoVx8c1EO4gJTk0h3lpkWF6DJ35G86J1mc1S89bxn2YoMFbz3eeXKJOa0ZP139TGSTETrWVHtCjZhBvuW70K2CWZhdvird5f/nZvBQGxZk8hbotbFbpQmK8wvuetQPzMvAAl5nnLyOOMTAnufnmWJ4eObx7WnJ/EHehciMwlsCxwc2ZRkgsXXOIrz69aEDA7qmVhPNm8vd66Lm8oho9Mps466VjCbyKe3r9JM9WeYazHvLce8M81LsRLhLGeFd463qrgc4aCtzIyTCUrNh5WG1YIxxk3wV2emRcPz1v5kQeFZAnuMk6ahfG71IzPJAqDfAtL/ui9/jKWn85xK7O52eqw9mTYylvZQMOR2cZMolE8I8MTgK/WwOKzIr3RYNKZcS7obyiDmeVaQ6+wa6JfA2YF3HBSw/EsYz26vFU8noeteyFWow0jXPCNpBACoA0jEI1PfEL8FNozQgjRj7xVCCH6kbcKIUQ/C7319pd04F3h5GvEQtvNX1y+he2gsKbhxuENU281vB6XaQtHo7y5zG+P1WLOs+T7rSuY8cH2mNm2V/4L97IxzTTvktGe9Hq/wFd39tbLAKNRuAU5VfY+hjH7t0BDiEuWy2O8dTXy1ltkyFt5eu9bW7wVB6nR8IsOs9C7P3/5v6J5/cUrH0cB/60reCsI+NkFL2whUTiMXq+9aGBAsMLPk1P2U9jafIUyzCY4oDlKBRlhl7HCw1nYhzW8pAy+ZNSP5wVnDK+eEoWdOrU9nXgVUtHwRxATT1mZqfY4vafY7K23WMlcOCNf31yO+JxRhdfuKIaUYSoJdwgj5hQKnHh5Z5ZmGIqflPltT458eXlgGaawcAGMO4sZmdR2OIYujw1Tiw0r4Ss35pqdxHrLKLFZYZz1mWhHdEeDI6cW3MwUZsXPaJ5cEGOo8Z9MlhkZfI/CmrWdRnYZTNn8LPA7hUnN6Mn6b2r/prjMW9cu43LLMHHKW4/IJZkV0+Kt3p/c9ikEAbFmTyFui1sB2abRjAFx71KE8+LVnJcBuoxHfmZ5ACXmecsCwBmZEtz97GJjusBU5tuGNScnsXMFMJfAfODmzGogVwy4xFeemf4wYHZUy8KYUKbRhHl7vdWrcLG3MpJqeUMxfGQyddZJxxJ+L2e5wFsv2EdtK4As5+eGsZ4V3jreI+BzhoK3MjJMJb0rvne+PktmbJqflIIM0OXaHJXxvJVfAKCQLMFdxknLAEtJLbxs/FSQOMt8iCN6IhjLT+e4ldncbHVYmyFs5S0poOHI7B8m0SiekeEJwFdTvPz9U5uvz0tMUiYXnpSsDNBlL1phVZCkppgZpZmGXiEY4SzkRINWLRrmgxxd3ipEI732JMQtaBGLLcB3i0J8HVrEYhcaH+uEuJ3X8X//Of7930MlTyt5/XO8/jn20aMSlfxCyednHc88Xv/86/XPv26XoUPHTx3y1ucf8lYdOq4/Zr31f+/I7u5JKHIHGffklbfq0HH5cd7t4f7/rOCdLxE6F38Hb71gNMxyeasOHdcff7ZiyliZ+p1C5a1cd8ZL8lYdOq4/Ejeexqb1757Au4LPS6NZj61eAyCgeYnp3VgfaMM6cZdrl94VwtEwRlXeqkPH5cf/dmxQz3c03Pbz6qny50dwCSgkA4YivZiegZ5UheLNLrSPhjvs8lYdOi4/qHs6rwIoN50XJDK9O8wFWuHm4O4vbFgQT4byxPMjb0eTt+rQcfkRb+bsJeAgOBTwO5DLa5W90WP0k13mR4YUn5oUY9jlrTp0XH4Exof3cK+3BkKT8r7CW3tHw00kb9Wh4/Ij7SNhBeyt3kdwyYyTCjhGw50CDcHtMxDvjUzvaHgK5a06dFx/UDdcdsvhSda7ZHoKMClPQ5jOa3Jk7NWr//pLVrw3tr2jYceRt+rQcfnBOunvHPxfl30iB3nlrTp0XH7IW4cRaXVA8PB+XY/krTp0XH68bv8vcW1VMjz1N0T+CHhPv/TfGFSJSq4v0X+HWAgh+pG3CiFEP/JWIYToR94qhBD9yFuFEKIfeasQQvQjbxVCiH7krUII0Y+8VQgh+pG3CiFEP/JWIYToR94qhBD9yFuFEKIfeasQQvQjbxVCiH7krUII0Y+8VQgh+vl/B5M8WCmnzHkAAAAASUVORK5CYII=" /> <br />
The same annotation in orange highlight<br />
<span style="background-color: orange;">@WebServlet("/Beer.do")</span><br />
<span style="background-color: orange;">public class BeerSelect extends HttpServlet {}</span><br />
<br />
is represented in the sample web.xml deployment descriptor below using servlet specification 2.5.<br />
<img alt="" src="data:image/png;base64,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" /><br />
<blockquote class="tr_bq">
<!--<p>
<br />
<br />
<a style="clear: right; margin-bottom: 1em; float: right; margin-left: 1em;" href="" imageanchor="1"></a><web-app data-blogger-escaped-version="3.0" data-blogger-escaped-xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" data-blogger-escaped-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" data-blogger-escaped-xmlns="http://java.sun.com/xml/ns/javaee" data-blogger-escaped-xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID"><br />
<display-name>MyServlet</display-name><br />
<welcome-file-list><br />
<welcome-file>index.html</welcome-file><br />
<welcome-file>index.htm</welcome-file><br />
<welcome-file>index.jsp</welcome-file><br />
<welcome-file>default.html</welcome-file><br />
<welcome-file>default.htm</welcome-file><br />
<welcome-file>default.jsp</welcome-file><br />
</welcome-file-list><br />
<servlet><br />
<description></description><br />
<font style="background-color: yellow;"><display-name>Beer</display-name><br />
<servlet-name>Beer</servlet-name><br />
<servlet-class>com.example.web.Beer</servlet-class><br />
</font></servlet><br />
<servlet-mapping><br />
<servlet-name>Beer</servlet-name><br />
<url-pattern>/Beer.do</url-pattern></servlet-mapping></web-app></p>
</blockquote>
<p>
<br />
</p>
<p>
 </p>
<blockquote class="tr_bq">
</blockquote>
<p>
--><br /></blockquote>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.blogger.com/blogger.g?blogID=8061373088972523424" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div>
<br />
The servlet and servlet-mapping lines replaced the simpler annotation format<br />
<span style="background-color: orange;"><span style="background-color: white;"><span style="background-color: orange;">@WebServlet(value="/Beer.do", name="BeerSelect")</span></span></span><br />
<span style="background-color: orange;">public class BeerSelect extends HttpServlet {}</span><br />
<br />
11. Your sample html landing page which calls the servlet uses "/Beer.do" url-pattern the servlet mapping is shown below<br />
<a href="http://www.blogger.com/blogger.g?blogID=8061373088972523424" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><img alt="" src="data:image/png;base64,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" /><br />
Make sure the action value <fixed facet="java"></fixed>does not have the back-slash "\" in front of Beer.do. Essentially the html page is telling to servlet to look in the relative path and not the absolute path for the servlet class.<br />
The html page can be saved anywhere in the WebContent folder of the Eclipse project.<br />
In case
the form.html is located in a sub folder of WebContent the action value
should be "../Beer.do". If the form.html is 2 level down sub folder of
WebContent. the action value will be "../../Beer.do". You get the
gist... the url path is relative path. <br />
<fixed facet="wst.jsdt.web"></fixed><br />
<br />
<fixed facet="jst.web">12. Now the most important point is the adding the servlet code</fixed><fixed facet="jst.web"> </fixed><br />
<br />
<a href="http://www.blogger.com/blogger.g?blogID=8061373088972523424" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a><fixed facet="jst.web"><span style="background-color: orange;"><span style="background-color: white;">package com.example.web;<br />
<br />
import java.io.IOException;<br />
import java.io.PrintWriter;<br />
import javax.servlet.ServletException;<br />
import javax.servlet.annotation.WebServlet;<br />
import javax.servlet.http.HttpServlet;<br />
import javax.servlet.http.HttpServletRequest;<br />
import javax.servlet.http.HttpServletResponse;<br />
<br />
/**<br />
* Servlet implementation class BeerSelect</span></span></fixed><br />
<a href="http://www.blogger.com/blogger.g?blogID=8061373088972523424" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><fixed facet="jst.web"><span style="background-color: orange;"><span style="background-color: white;">Annotation used below in the example.<br />
*/<br />
<span style="background-color: orange;">@WebServlet(value="/Beer.do", name="BeerSelect")</span><br />
public class BeerSelect extends HttpServlet {</span><br />
<span style="background-color: white;"> private static final long serialVersionUID = 1L;<br />
<br />
/**<br />
* @see HttpServlet#HttpServlet()<br />
*/<br />
public BeerSelect() {<br />
super();<br />
// TODO Auto-generated constructor stub<br />
}<br />
<br />
/**<br />
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)<br />
*/<br />
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {<br />
response.setContentType("text/html");<br />
PrintWriter out = response.getWriter();<br />
out.println("Beer Selection advice<br>");<br />
String c = request.getParameter("color");<br />
out.println("Got color:" + c);<br />
}<br />
<br />
}</span></span><span style="background-color: white;"><br />
</span></fixed><br />
<br />
<span style="background-color: white;">The servlet code has access to servlet's request and response object through the inherited overloaded doPost method. This code just prints back the selection made by the web-user in the form.html using a PrintWriter object. The intention of this tutorial is not to explain the java code for the servlet but to help in understanding how servlets are invoked.</span><!-- <installed facet="java" version="1.7"/></p>
<p>
 <installed facet="jst.web" version="3.0"/></p>
<p>
  --><br />
<installed facet="java" version="1.5"></installed><br />
13. To make understanding of <b>"structure"</b> of java dynamic web project used in this sample coded in Eclipse IDE, hopefully this screenshot below should prove helpful.<br />
<br />
<br />
<br />
<br />
<img alt="" src="data:image/png;base64,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" /><br />
<ul><a href="http://www.blogger.com/blogger.g?blogID=8061373088972523424" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a>
<li>The landing page - form.html which calls the servlet BeerSelect with pattern "Beer.do" as the action value and "post" method is located in WebContent folder. In case, the form.html is located in a sub folder of WebContent the action value should be "../Beer.do". If the "form.html" is 2 sub directories below WebContent, the action value will be "../../Beer.do". You get the gist... the url path to calling the servlet is a relative path.</li>
<li>The web.xml deployment descriptor must in all cases be located under WebContent/WEB-INF folder. </li>
<li>The servlet java file is located under package com.example.web and the package is first created under src directory and servlet java file is created under this package.</li>
</ul>
<br />
<a href="http://www.blogger.com/blogger.g?blogID=8061373088972523424" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a>14. When the application is deployed and run in the eclipse IDE, the class file are generated in the build/classes folder.<br />
<span style="background-color: yellow;">To know where the tomcat instance executes under Eclipse IDE environment, you can take a look at Run Configurations (Arguments tab) to find the exact location of the application deployment</span>. You can navigate here by right clicking on project name,select Run as-->Run Configurations.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.blogger.com/blogger.g?blogID=8061373088972523424" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div>
The arguments tab should read something as shown below and the yellow highlights point to the tomcat deployment location.<br />
<br />
-Dcatalina.base="C:\Users\dushyantg\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1" -Dcatalina.home="C:\tomcat" -Dwtp.deploy="<span style="background-color: yellow;">C:\Users\foouser\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps</span>" -Djava.endorsed.dirs="C:\tomcat\endorsed"<br />
<br />
You can verify that the servlet class file exists under the <deployment path>\<PROJECT NAME>\WEB-INF\classes\<package name>\dagspothttp://www.blogger.com/profile/13112520399578282503noreply@blogger.com0tag:blogger.com,1999:blog-8061373088972523424.post-48789907120241441082013-08-09T15:44:00.000-07:002013-12-18T10:04:47.230-08:00Understanding Database table normalizationI am learning the fundamentals of how to "normalize" a database. Normalization means in the simplest sense - "remove data repeat, remove data constraints (or dependency) across tables when performing data operations (during create, update and delete operations on table).<br />
<br />
The simplest form of Normalization is the<span style="color: red;"><b> First Normal Form (1NF)</b></span><br />
The following rules must be followed to make a database table 1NF conformed.<br />
<ol>
<li>Each column must have a unique name.</li>
<li>The ordering or rows and columns in the table is irrelevant.</li>
<li>Every column must have a single data type - that is if a column holds string values, then it cannot hold integer values.</li>
<li>Each row must hold unique values - no two rows can be the same.</li>
<li>Each column must contain a single value.</li>
<li>Columns cannot contain repeating groups. </li>
</ol>
An example to illustrate point #6 would be an account holder who has multiple bank accounts<br />
<pre><code> CustID Name SSN-4 Bank Name1 Bank Name2 Bank Name3
A123 Tom Brockaw 1234 BoFA WellsFargo Chase</code></pre>
<pre><code> </code></pre>
<pre><code>Instead the bank data should be put in a seperate table </code></pre>
<pre><u>Customer table</u>
<code>CustID Name SSN-4</code></pre>
<pre><code>A123 Tom Brockaw 1234</code></pre>
<pre><code> </code></pre>
<pre><code><u>Bank table</u> </code></pre>
Cust ID Bank name<br />
A123 BoFA<br />
A123 WellsFargo<br />
A123 Chase<br />
<br />
Next step is to convert a database table to <span style="color: red;"><b>2NF compliance.</b></span> A table is considered 2NF when it satisfies<br />
<ol>
<li>1NF compliant</li>
<li>All of the non-key fields depend on all of the key elements. </li>
</ol>
To illustrate point #2,here is an example<br />
<br />
<table class="wikitable"><tbody>
<tr><th>Name</th><th>Languages</th><th>Current Home Location</th></tr>
<tr><td>Sean</td><td>C++</td><td>268 San Bruno </td></tr>
<tr><td>Sean</td><td>Java</td><td>268 San Bruno</td></tr>
<tr><td>Sean</td><td>Perl</td><td>268 San Bruno</td></tr>
<tr><td>Jim</td><td>C</td><td>114 Wall Street</td></tr>
<tr><td>Jim</td><td>Java</td><td>114 Wall Street</td></tr>
<tr><td>Jim</td><td>C#</td><td>114 Wall Street</td></tr>
</tbody></table>
<br />
Here the key is Name + Languages but the "Current Home Location" is based on part of the key - Name and not on "Languages". Therefore the non-key field ("Current Home Location") can be taken out of the table and placed in a separate table.<br />
Now the 2 NF table is<br />
<b>Name Languages</b><br />
Sean C++<br />
Sean Java<br />
Sean Perl<br />
Jim C<br />
Jim Java<br />
Jim C#<br />
<br />
<b>Name Current Home Location</b><br />
Sean 268 San Bruno<br />
Jim 114 Wall Street.<br />
<br />
<br />
A <span style="color: red;"><b>3NF complaint table</b></span> is<br />
<ol>
<li>2NF compliant</li>
<li><b><span style="color: red;">It contains no transitive dependencies - in this case a non key is dependent on another non key.</span></b></li>
</ol>
Here is an example of a Employees table which is not 3 NF compliant with Employee as primary key. <br />
<br />
Employee Project Department<br />
Alison Java Computer Science<br />
Jim C# Computer Science<br />
John SIP Electronics & Telecommunications<br />
Tim CTI Electronics & Telecommunications<br />
Robert Long Jump Athletics<br />
Sean Sprint Athletics<br />
Tara Java Computer Science <br />
<br />
In this case Department is dependent on the Project an employee takes and both Project and Department are non-keys. In order to remove the transitive relationship, we take out the dependent field (Department) into a seperate table and link the dependent field with the other non-key (Project)<br />
<br />
<u>Employee </u>(PK) Project <br />
Alison Java <br />
Jim C# <br />
John SIP <br />
Tim CTI <br />
Robert Long Jump <br />
Sean Sprint <br />
Tara Java<br />
<br />
<u><b>Project</b> (PK)</u> Department<br />
Java Computer Science<br />
C# Computer Science<br />
SIP Electronics & Telecommunications<br />
CTI Electronics & Telecommunications<br />
Long Jump Athletics<br />
Sprint Athletics<br />
<br />
Boyce Codd Normal Form - 3 NF + Every determinant is a candidate key ( fields that may be dependent on part of the primary key) <br />
Note: - A candidate key is a "minimal" superkey.<br />
4NF complaint table - which is BCNF compliant + It does not contain an unrelated multi-valued dependency<br />
<br />
5NF - 4NF + does not contain any related multi-valued dependency<br />
<br />
DKNF (Domain/Key Normal Form) - the table contains no constraints except domain and key constraints<br />
<br />
<br />
5NF - 4 NF + does not contain any related multi-valued dependency<br />
<br />
dagspothttp://www.blogger.com/profile/13112520399578282503noreply@blogger.com0tag:blogger.com,1999:blog-8061373088972523424.post-77147820794737050232011-09-11T17:51:00.000-07:002011-09-11T20:39:57.085-07:00Java Tag Libraries - An Introduction.Java Tag libraries allow developers seperate presentation layer from design/code layer in your Java Server Pages. You can have a professional designer design the look and feel or the layout of your web page and you can have an expert Java programmer create the necessary class libraries for the designer to call.<br />
<br />
In order to create tag libaries, you will need to<br />
- download and install servlet-2.3.jar or compatible version of servlet library within your lib folder of your Java installation. <br />
<br />
The javax.servlet.jsp package ships with the install package of Tomcat.<br />
You can download and install tomcat from <br />
http://apache.cyberuse.com/tomcat/tomcat-7/v7.0.21/bin/apache-tomcat-7.0.21-windows-x86.zip<br />
<br />
Note:- To learn a bit more about servlet package, refer to this documentation link<br />
http://download.oracle.com/javaee/6/api/javax/servlet/package-summary.html<br />
<br />
This links offers a history about servlets<br />
http://weblogs.java.net/blog/driscoll/archive/2005/12/servlet_history_1.html<br />
<br />
The logic of tag library works as follows<br />
1. You have a JSP page that is requested by a client browser. Example :- The user enters in their browser http://server:8080/webapps/begjsp-ch02/currentTime.jsp.<br />
<br />
2. The JSP page contains custom tags that basically executes the code associated with the custom tag in the background and send the output to JSP Runtime to send as output to the client requesting the currentTime.jsp page.<br />
<br />
3. In order for the JSP page to execute code associated with the custom tag in the jsp page, JSP page should reference a TLD TLD (Tag Library Descriptor) file which maintains the mapping of custom tags used within the JSP to referenced tag-classes that have the java code.<br />
<br />
Now lets get into the details....<br />
The sample JSP file would appear as follows<br />
<br />
<%@taglib <span style="background-color: yellow;">prefix="example"</span> <span style="background-color: yellow;">uri="WEB-INF/tlds/exampleTags.tld"</span> %><br />
<html><br />
<head> </head><br />
<body><br />
Welcome to my page. the current time is <<span style="background-color: yellow;">example:time</span> format="dd/MM/yy" evalPage="true"/><br />
<br><br />
<%<br />
String [] strings = {"apples", "oranges", "bananas", "pineapples", "plums"};<br />
pageContext.setAttribute("fruits", strings);<br />
%><br />
Looping through fruit basket<br />
<span style="background-color: yellow;"><example:iterate></span><br />
The fruit is :<br />
<span style="background-color: yellow;"></example:iterate></span><br />
<br />
<example:foo><br />
<example:test/><br />
</example:foo><br />
<br />
<span style="background-color: yellow;"><example:bodymod howMany="5"></span> Fruit name is:<br />
<span style="background-color: yellow;"></example:bodymod></span><br />
<br />
<p><br />
<br />
<br />
</body><br />
<br />
</html><br />
<br />
In the JSP example above we can see <span style="background-color: yellow;">prefix="example"</span> <span style="background-color: yellow;">uri="WEB-INF/tlds/exampleTags.tld" </span><span style="background-color: white;">in the first link of the sample above. In this example we will be referencing the tag</span>dagspothttp://www.blogger.com/profile/13112520399578282503noreply@blogger.com0tag:blogger.com,1999:blog-8061373088972523424.post-58562619522527969052011-05-11T00:03:00.000-07:002011-05-11T00:03:35.263-07:00Date, GregorianCalendar, SimpleDateFormat Classes Explainedimport java.util.*;<br />
import java.text.SimpleDateFormat;<br />
public class MyCalendar<br />
{<br />
private Date curr_date;<br />
private GregorianCalendar greg_targ_date;<br />
private String display_curr_date;<br />
private SimpleDateFormat sf;<br />
private String msg;<br />
<br />
public MyCalendar()<br />
{<br />
curr_date = new Date();<br />
//By default instantiation of this Date returns current Date. The date returned is in a long format.<br />
//If you would like a simplified format here is how the Date object is converted into simple text format which is of type String.<br />
sf = new SimpleDateFormat("K:mm a, z");<br />
display_curr_date = sf.format(curr_date);<br />
<br />
//You can use the gregorian format Object to set Year, month, day and time specifically.<br />
greg_targ_date = new GregorianCalendar();<br />
greg_targ_date.set(greg_targ_date.YEAR,3000);<br />
greg_targ_date.set(greg_targ_date.MONTH,0);<br />
greg_targ_date.set(greg_targ_date.DATE,1);<br />
greg_targ_date.set(greg_targ_date.AM_PM,0);<br />
greg_targ_date.set(greg_targ_date.HOUR,0);<br />
greg_targ_date.set(greg_targ_date.MINUTE,0);<br />
greg_targ_date.set(greg_targ_date.SECOND,0);<br />
}<br />
//This function returns the current date/time converted into simple date format object.<br />
public String getCurrentDate()<br />
{<br />
return (display_curr_date);<br />
}<br />
<br />
//This function calculates the number of days remaining from today's date/time to Year 3000 stored in targ_date<br />
public String getMessage()<br />
{<br />
<br />
Date targ_date= (Date)greg_targ_date.getTime();<br />
<br />
// Gregorian calendar Date object is converted into Date object using getTime() method.<br />
// When getTime() method is applied on a Date object, the Date/Time is returned in milliseconds.<br />
// Therefore (greg_targ_date.getTime()).getTime() would yield the date/time in milliseconds.<br />
switch(targ_date.compareTo(curr_date)) // Comparing the Date object using compareTo since Date object implements Comparable Interface.<br />
{<br />
case 1:<br />
long milseconds = targ_date.getTime() - curr_date.getTime(); // Difference in milliseconds between target date and current date.<br />
long msInDay = 1000 * 60 * 60 * 24;<br />
long daysToGo = (long) (milseconds / msInDay);<br />
return ("The number of days to go is " + daysToGo + " from target date");<br />
case 0:<br />
return ("Current date equal to target date");<br />
case -1:<br />
default:<br />
return ("Expired Counter");<br />
}<br />
}<br />
<br />
<br />
public static void main (String args[])<br />
{<br />
MyCalendar mc = new MyCalendar();<br />
System.out.println("--------------------------------------------------------------------------------");<br />
System.out.println("Date converted into SimpleFormat (displaying time and AM/PM)=" + mc.getCurrentDate());<br />
System.out.println("Display current date/time using Date Object=" + mc.curr_date);<br />
System.out.println("Display current date in milliseconds=" +mc.curr_date.getTime());<br />
System.out.println("--------------------------------------------------------------------------------");<br />
System.out.println("Example displaying GregorianCalendar object applied getTime() method multiple times");<br />
System.out.println("--------------------------------------------------------------------------------");<br />
GregorianCalendar temp = new GregorianCalendar();<br />
System.out.println("Original GregorianCalendar Object(temp)=" + temp);<br />
System.out.println("");<br />
System.out.println("");<br />
System.out.println("Applying getTime() on GregorianCalendar Object yields Date Object");<br />
System.out.println("temp.getTime()=" + temp.getTime());<br />
System.out.println("");<br />
System.out.println("");<br />
System.out.println("Applying getTime() on Date Object yields Date in seconds(datatype = long)");<br />
System.out.println("temp.getTime()).getTime()=" + (temp.getTime()).getTime());<br />
System.out.println("--------------------------------------------------------------------------------");<br />
//Calling the method which displays number of days from today until Year 3000 (target date)<br />
System.out.println(mc.getMessage());<br />
}<br />
<br />
}<br />
The java output is displayed below<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHabu2xbREBDWtvMiWMD3OkKIsguTPcqtmSXwYLzeupzrSQeHymAbUAbnJ8hN-2xU4yOCjCCiLX-KlRbaGVj4m6hxmKpyGDBC1hJNFMomgPu1EtGP9V3rRlffsPzlF_w0y6WxsOzJ0qCY/s1600/Date_Output.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="90" width="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHabu2xbREBDWtvMiWMD3OkKIsguTPcqtmSXwYLzeupzrSQeHymAbUAbnJ8hN-2xU4yOCjCCiLX-KlRbaGVj4m6hxmKpyGDBC1hJNFMomgPu1EtGP9V3rRlffsPzlF_w0y6WxsOzJ0qCY/s320/Date_Output.jpg" /></a></div>dagspothttp://www.blogger.com/profile/13112520399578282503noreply@blogger.com0tag:blogger.com,1999:blog-8061373088972523424.post-79500174948151152602011-05-09T15:40:00.000-07:002011-05-26T13:42:39.934-07:00Write a simple Java Bean1. Startup your apache tomcat from command line - Navigate to the bin folder and run the startup.bat. Make sure Apache tomcat webserver is running by bringing up the browser and running http://localhost:8080<br />
<br />
Note:-The configured HTTP port can be found by viewing the server.xml file in the conf directory.<br />
<br />
2.We first need to write a Java code and then compile the java code and place the generated .class file in the appropriate package directory.<br />
<br />
For example: - In our test example here - MyCalendar.java is placed under webapps/begjsp-ch02 directory of the apache tomcat installation.<br />
<br />
package dates;<br />
import java.util.*;<br />
import java.text.SimpleDateFormat;<br />
public class MyCalendar<br />
{<br />
private Date curDate;<br />
private SimpleDateFormat sf;<br />
private GregorianCalendar gf;<br />
<br />
<br />
public String getCurrentDate()<br />
{<br />
gf = new GregorianCalendar();<br />
curDate=gf.getTime();<br />
sf = new SimpleDateFormat("EEE, HH:MM:SS");<br />
return ((String) sf.format(curDate));<br />
}<br />
/*<br />
public static void main (String args[])<br />
{<br />
MyCalendar mc = new MyCalendar();<br />
System.out.println("SimpleFormatDate" + mc.getCurrentDate());<br />
<br />
}<br />
*/<br />
}<br />
<br />
If you notice this java code belongs to "dates" package.<br />
<br />
3.Therefore after you have compiled the .java file, place the generated .class file under<br />
webapps/begjsp-ch02/WEB-INF/classes/dates/ folder path.<br />
<br />
4.Place the calling jsp code under begjsp-ch02 folder<br />
</jead><br />
<!--
<%@ page import="dates.MyCalendar"%><?xml:namespace prefix = jsp /><jsp:usebean class="dates.MyCalendar" id="mydate1" scope="page"></jsp:useBean><br />
<br />
<p>The current Date is<jsp:getproperty property="currentDate" name="mydate1"></jsp:getProperty> </p><br />
<br />
5.In the address window of your browser type the following URI<br />
http://localhost:8080/begjsp-ch02/mydate.jsp<br />
<br />
One important note here is the <jsp:getproperty property="currentDate" name="mydate1"></jsp:getproperty><br />
--><br />
In order to call the function getCurrentDate in the java class, it is accessed through the java bean as currentDate. Notice we removed the "get" and converted the property into first letter in "CurrentDate" as lowercase to follow the bean naming standards.dagspothttp://www.blogger.com/profile/13112520399578282503noreply@blogger.com0tag:blogger.com,1999:blog-8061373088972523424.post-33388860010327717072011-05-09T13:02:00.000-07:002011-05-09T13:13:36.144-07:00Comparable interface exampleWhen i was compiling my class, i was getting abstract method error on the MyShopping Cart class when i was specifically typecasting the list.<br />public class MyShoppingCart implements Comparable<MyShoppingCart><br /><br />The error thrown by the Java interpretor was the following error<br /><br />C:\jakarta\apache-tomcat-6.0.24\webapps\begjsp-ch02\MyShoppingCart.java:4: MyShoppingCart is not abstract and does not override abstract method compareTo(MyShoppingCart) in java.lang.Comparable<br />public class MyShoppingCart implements Comparable<MyShoppingCart><br /><br />In order to the correct the error, I made the following changes to my compareTo method implemented for the Comparable interface.<br /><br />import java.util.ArrayList;<br />import java.util.Iterator;<br />import java.util.Collections;<br />public class MyShoppingCart implements Comparable<MyShoppingCart><br />{<br />private String name;<br />private float cost;<br /><br />public MyShoppingCart()<br />{<br />name="";<br />cost=0.0f;<br />}<br />public MyShoppingCart(String name, float cost)<br />{<br />this.name=name;<br />this.cost=cost;<br />}<br /><br />public boolean equals (Object obj)<br />{<br /> if (!(obj instanceof MyShoppingCart))<br /> {<br /> return false;<br /> }<br /> MyShoppingCart sc = (MyShoppingCart)obj;<br /> return (this.name).equals(sc.name);<br />}<br /><br />public int hashCode()<br />{<br /> return name.hashCode();<br />}<br /><br />//public int compareTo(Object element ) <-- Incorrect code<br />public int compareTo(MyShoppingCart element )<br />{<br /><br /> // MyShoppingCart sc = (MyShoppingCart) element; <-- Incorrect code<br /> MyShoppingCart sc = element;<br /> String uname = sc.name;<br /> return (this.name.compareTo(uname));<br />}<br /><br /><br />public static void main (String args[])<br />{<br />ArrayList <MyShoppingCart> mylist = new ArrayList <MyShoppingCart>();<br />System.out.println("The size of mylist is " +mylist.size());<br /><br />MyShoppingCart a1 = new MyShoppingCart("Dell Laptop", 1500.99f);<br />MyShoppingCart a2 = new MyShoppingCart("Apple IPAD", 599.99f);<br />MyShoppingCart a3 = new MyShoppingCart("X-box 360", 699.99f);<br />MyShoppingCart a4 = new MyShoppingCart("Tennis racket", 49.5f);<br />System.out.println("Is the list empty? " + mylist.isEmpty());<br />mylist.add(a1);<br /><br />System.out.println("Is the list empty? " + mylist.isEmpty());<br />mylist.add(a2);<br />mylist.add(a3);<br />mylist.add(a4);<br /><br />System.out.println("The size of mylist is " +mylist.size());<br />System.out.println("The index within the list for matching record Dell Laptop, 1500.99f is:" + mylist.indexOf(a1));<br />Iterator iter = mylist.iterator();<br />while (iter.hasNext())<br />{<br /> MyShoppingCart m1 = (MyShoppingCart)iter.next();<br /> System.out.println(m1.name + " " + m1.cost);<br />}<br />iter = mylist.iterator();<br />System.out.println("After sorting....");<br />Collections.sort(mylist);<br />while (iter.hasNext())<br />{<br /> MyShoppingCart m1 = (MyShoppingCart)iter.next();<br /> System.out.println(m1.name + " " + m1.cost);<br />}<br /><br />}<br />}dagspothttp://www.blogger.com/profile/13112520399578282503noreply@blogger.com2tag:blogger.com,1999:blog-8061373088972523424.post-67375820915755969542008-08-24T15:18:00.000-07:002008-08-24T15:19:34.925-07:00HashSets, TreeSets, Array Lists, Comparable and Comparatorsimport java.util.*;<br /><br />//This class is used to sort a collection in descending order of age and name<br />//A comparator class is usually written when a programmer usually does not have access to<br />//source code and then he can create his own custom sort using custom Comparator class as shown in<br />//Person class below<br />class Person implements Comparator<Person><br />{<br /> String name;<br /> int age;<br /> public Person(String name,int age)<br /> {<br /> this.name=name;<br /> this.age=age;<br /> }<br /> public Person()<br /> {<br /> name="";<br /> age=0;<br /> }<br /> public int compare(Person p1,Person p2)<br /> {<br /> if (p2.age>p1.age) return (p2.age-p1.age);<br /> else if (p2.age < p1.age) return (p2.age-p1.age);<br /> else<br /> {<br /> return (p2.name.compareTo(p1.name));<br /> }<br /> }<br /><br /> //Implementing equals method is optional. If implemented to over-ride, make sure the result is consistent with the compare method<br /> public boolean equals(Object o)<br /> {<br /> Person p2 = (Person) o;<br /> if (p2.age>this.age) return (true);<br /> else if (p2.age < this.age) return (false);<br /> else<br /> {<br /> if (p2.name.compareTo(this.name)>= 0)<br /> return true;<br /> else<br /> return false;<br /> }<br /> }<br /><br /><br /> //Over-ride from the object class.<br /> public String toString()<br /> {<br /> return ("Name=" + this.name + ", age=" + this.age);<br /> }<br />}<br /><br />//This class sorts a collection in ascending order of age and name and implements comparable.<br />class PersonComparable implements Comparable<PersonComparable> {<br /> String name;<br /> int age;<br /> public PersonComparable(String name,int age)<br /> {<br /> this.name=name;<br /> this.age=age;<br /> }<br /> public int compareTo(PersonComparable p2)<br /> {<br /><br /> if (this.age>p2.age) return (this.age-p2.age);<br /> else if (this.age < p2.age) return (this.age-p2.age);<br /> else<br /> {<br /> return (this.name.compareTo(p2.name));<br /> }<br /> }<br />//Implementing equals method is optional. If implemented to over-ride, make sure the result is consistent with the compareTo method<br /> public boolean equals(Object o)<br /> {<br /> PersonComparable p2 = (PersonComparable) o;<br /> if (this.age>p2.age) return (true);<br /> else if (this.age < p2.age) return (false);<br /> else<br /> {<br /> if (this.name.compareTo(p2.name)>= 0)<br /> return true;<br /> else<br /> return false;<br /> }<br /> }<br /><br /> public String toString()<br /> {<br /> return ("Name=" + this.name + ", age=" + this.age);<br /> }<br />}<br /><br />public class CollectionsTest01<br />{<br /><br />public static void main(String args[])<br />{<br />//hashset allows duplicate and null values. This set is created with Primitive class- string<br />//hash sets are not ordered by default<br /> Set <String> hs1 = new HashSet<String>();<br /> System.out.println("The original size of the hashset is="+ hs1.size());<br /> hs1.add("temp");<br /> hs1.add(Integer.toString(1));<br /> hs1.add(Boolean.toString(true));<br /> hs1.add("Dushyant");<br /> hs1.add("temp");<br /> hs1.add(null);<br /> System.out.println("The current size of the hashset is="+ hs1.size());<br /> System.out.println("The String hash set is="+hs1);<br /><br /> //hashset allows duplicate and null values. This set is created with Custom class- Person<br /> //hash sets are not ordered by default even if you implement the comparator or comparable interfaces.<br /> HashSet<Person> ps1 = new HashSet <Person>();<br /> ps1.add(new Person("Donde Estas",35));<br /> ps1.add(new Person("Ronnie Baron",35));<br /> ps1.add(new Person("Google froogle",31));<br /> ps1.add(new Person("Simple simon",24));<br /> ps1.add(new Person("Greg Bruno",3));<br /> ps1.add(new Person("Ronnie Baron",35));<br /><br /> System.out.println("Iterating through Person hash set");<br /> Iterator it = ps1.iterator();<br /> while(it.hasNext())<br /> {<br /> System.out.println(it.next());<br /> }<br />//When sorting a tree set pass the comparator in the the tree set constructor.<br />//Tree sets are sorted order sets and apply the compare method<br />TreeSet<Person> personTreeSet1 = new TreeSet<Person>(new Person());<br /> personTreeSet1.add(new Person("Donde Estas",35));<br /> personTreeSet1.add(new Person("Ronnie Baron",35));<br /> personTreeSet1.add(new Person("Google froogle",31));<br /> personTreeSet1.add(new Person("Simple simon",24));<br /> personTreeSet1.add(new Person("Greg Bruno",3));<br /> personTreeSet1.add(new Person("Ronnie Baron",35));<br /><br /> System.out.println("Iterating through Person Tree set");<br /> it = personTreeSet1.iterator();<br /> while(it.hasNext())<br /> {<br /> System.out.println(it.next());<br /> }<br /><br />//Creating a tree set implementing Comparable.<br />//Tree sets are sorted order sets and apply the comparable interface. Use the compareTo method here to sort.<br />TreeSet<PersonComparable> ts1 = new TreeSet <PersonComparable>();<br /> ts1.add(new PersonComparable("Damini",35));<br /> ts1.add(new PersonComparable("Gamini",35));<br /> ts1.add(new PersonComparable("Kumari",31));<br /> ts1.add(new PersonComparable("Tsunami",24));<br /> ts1.add(new PersonComparable("Kumari",31));<br /> Iterator it2 = ts1.iterator();<br /> System.out.println("The size of the tree set is="+ts1.size());<br /> System.out.println("Iterating through PersonComparable Tree set");<br /> while(it2.hasNext())<br /> {<br /> System.out.println(it2.next());<br /> }<br /><br /> //Example to apply the static collections method sort and reverseOrder. These static methods only apply on lists.<br /> //The array list is created with Comparable constructor.<br />ArrayList<PersonComparable> lst1= new ArrayList<PersonComparable>();<br />lst1.add(new PersonComparable("Raj Kapoor",36));<br />lst1.add(new PersonComparable("Vinod Khanna",39));<br />lst1.add(new PersonComparable("Dilip Kumar",36));<br />lst1.add(new PersonComparable("Dilip Kumar",36));<br />System.out.println("Display the array list before sorting="+lst1);<br />Collections.sort(lst1);<br />System.out.println(lst1);<br /><br />System.out.println("Display the array list after sorting="+lst1);<br />Collections.sort(lst1,Collections.reverseOrder());<br />System.out.println("Reverse order sorted list="+lst1);<br /><br />//Example to apply the static collections method sort and reverseOrder. These static methods only apply on lists.<br /> //The array list is created with Comparator constructor when applied later. In this example Person comparator is applied<br />ArrayList<Person> lstPerson = new ArrayList<Person>();<br />lstPerson.add(new Person("Robin Hood",36));<br />lstPerson.add(new Person("John Peter",39));<br />lstPerson.add(new Person("Dwight York",36));<br />lstPerson.add(new Person("Kevin Pieterson",36));<br />Collections.sort(lstPerson,new Person());<br />System.out.println("Applying comparator Person to sort the list="+lstPerson);<br /><br />TreeSet<PersonComparable> lst2= new TreeSet<PersonComparable>();<br />lst2.add(new PersonComparable("Rajarshi",36));<br />lst2.add(new PersonComparable("JP",39));<br />lst2.add(new PersonComparable("Mangesh",36));<br />lst2.add(new PersonComparable("JP",39));<br />//Collections.sort(lst2); You cannot apply this Static method on a set. It only applies on a list.<br />System.out.println(lst2);<br /><br /> ArrayList<Integer> c = new ArrayList<Integer>();<br /> c.add(1);c.add(2);<br /> c.add(3);<br /> ArrayList<Integer> al = new ArrayList<Integer>(c);<br /> System.out.println("The current size of the collection is="+ al.size());<br /><br /> Set<String> set = new HashSet<String>();<br /> set.add("zab");<br /> set.add("one");<br /> set.add("two");<br /> set.add("three");<br /> set.add("four");<br /> set.add("one");<br /> set.add("abc");<br /> set.add(Integer.toString(3));<br /> System.out.println(set);<br /> Set<String> sortedSet= new TreeSet<String>(set);<br />System.out.println(sortedSet);<br />}<br />}dagspothttp://www.blogger.com/profile/13112520399578282503noreply@blogger.com0tag:blogger.com,1999:blog-8061373088972523424.post-22242598602922891792008-07-27T19:44:00.001-07:002008-07-27T19:44:48.298-07:00PipedInput Stream and PipedOutputStreamimport java.io.*;<br />// reads numbers from input stream and compute running average<br />class WriteToFile extends Thread<br />{<br /> private DataInputStream in;<br /> String msg;<br /> private FileOutputStream out;<br /> File f1=new File("C:\\Program Files\\Java\\jdk1.5.0_14\\test\\AJP","output.txt");<br /><br /><br /><br /> public WriteToFile(InputStream i)<br /> {<br /> in=new DataInputStream(i);<br /> try<br /> {<br /> out = new FileOutputStream(f1);<br /> }catch(FileNotFoundException e) { e.printStackTrace();}<br /><br /> }<br /> public void run()<br /> {<br /> String CRLF = "\n";<br /> try {<br /> int count;<br /> while (true)<br /> {<br /><br /> byte buffer[] = new byte[50];<br /><br /> count=in.read(buffer,0,50);<br /> if (count==-1) break;<br /> // System.out.println("Available bytes to read : " + count);<br /> msg = new String(buffer,0,count);<br /><br /><br /> if (count==-1 ||msg.equalsIgnoreCase("EOI") ) { in.close(); break;}<br /> if (count>0 && msg.equalsIgnoreCase("EOI")==false)<br /> {<br /><br /> out.write(buffer,0,count);<br /> if (in.available()==0)<br /> out.write(CRLF.getBytes());<br /> }<br /> }<br /> out.flush();<br /> } catch (Exception e) { e.printStackTrace();}<br /><br /> }<br /><br />}<br />class ReadFromCommandLine extends Thread {<br />private DataOutputStream out;<br />private BufferedReader buf;<br />String msg;<br />public ReadFromCommandLine(OutputStream o) {<br />out = new DataOutputStream(o);<br />buf = new BufferedReader(new InputStreamReader(System.in));<br /><br />}<br />public void run() {<br /><br /><br /> try {<br /> System.out.println("Please enter the text in multiple lines to write to a file:");<br /> while (true)<br /> {<br /> msg = buf.readLine();<br /><br /> byte b[]=msg.getBytes();<br /> out.write(b);<br /> out.flush();<br /> // System.out.println(msg);<br /> if (msg.equalsIgnoreCase("EOI"))<br /> {<br /> out.close();<br /> break;<br /> }<br /><br /> }<br /><br /><br /> } catch (Exception e) { e.printStackTrace();}<br /><br /> }<br /><br />}<br /><br />class MainPP<br />{<br /> public static void main(String[] args)<br /> {<br /><br /> try {<br /> PipedOutputStream inputreader =new PipedOutputStream();<br /> PipedInputStream filewriter =new PipedInputStream(inputreader);<br /><br /> ReadFromCommandLine readCommandLine = new ReadFromCommandLine(inputreader);<br /> WriteToFile writeFile = new WriteToFile(filewriter);<br /> readCommandLine.setPriority(1);<br /> readCommandLine.start();<br /> writeFile.start();<br /> } catch (IOException e) {e.printStackTrace();}<br /> }<br />}dagspothttp://www.blogger.com/profile/13112520399578282503noreply@blogger.com0tag:blogger.com,1999:blog-8061373088972523424.post-57867037902848658012008-07-24T23:44:00.000-07:002008-12-09T06:12:10.347-08:00BufferedInputStream,BufferedOutputStream,FileInputStream,FileOutputStream<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8-Ph6BAf-0IF5HmsycotIP5HrunC6LC44_kQ1sZViyZzArnqUtB1143EuCxDuRQGY02wXv4FiGszEghkrhiXUANAeCKKxmF93Hyi5wS-ndlrs6hmNGhgRXjwd2FZxZIh0mpgi1AG9K9I/s1600-h/Java+classes.gif"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8-Ph6BAf-0IF5HmsycotIP5HrunC6LC44_kQ1sZViyZzArnqUtB1143EuCxDuRQGY02wXv4FiGszEghkrhiXUANAeCKKxmF93Hyi5wS-ndlrs6hmNGhgRXjwd2FZxZIh0mpgi1AG9K9I/s320/Java+classes.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5227447277322879938" /></a>
<br />import java.io.*;
<br />class TestByteStreams{
<br />public static void main(String args[]) throws IOException
<br />{
<br />
<br />File f1=new File("C:\\Program Files\\Java\\jdk1.5.0_14\\test\\AJP","BoxArray.java");
<br />
<br /> System.out.println("Path seperator=" + f1.pathSeparator);
<br />
<br /> System.out.println("seperator=" + f1.separator);
<br />
<br /> FileInputStream fInputStream = new FileInputStream(f1);
<br /> BufferedInputStream bInputStream = new BufferedInputStream(fInputStream);
<br /> byte byteInputArray [] = new byte[500];
<br /> FileOutputStream fOutputStream = new FileOutputStream (f1 + "_copy2.java");
<br /> BufferedOutputStream bOutputStream = new BufferedOutputStream(fOutputStream,1024);
<br /> int count;
<br /> while ((count = bInputStream.read(byteInputArray,0,500))>0)
<br />
<br /> {
<br /> //BufferedOutputStream data is written to file or out when the buffer size = 1024 specified in the bufferedoutputstream is reached.
<br /> bOutputStream.write(byteInputArray,0,count);
<br />
<br /> }
<br /> //Once reading is complete and byteInputArray filled size is less than 1024 buffered output stream size,
<br /> //the output will not be written unless flushed exclusively
<br /> bOutputStream.flush();
<br />
<br /> fInputStream.close();
<br /> fOutputStream.close();
<br />
<br />
<br />/*ByteArrayOutputStream bo = new ByteArrayOutputStream();
<br />String s1 = "Twinkle twinkle litte star";
<br />String s2 = "How I wonder what you are";
<br />byte b1[] = s1.getBytes();
<br />byte b2[] = s2.getBytes();
<br />bo.write(b1);
<br />bo.write(b2);
<br />bo.close();
<br />byte b3[] = bo.toByteArray();
<br />ByteArrayInputStream bi = new ByteArrayInputStream(b3);
<br />int size = bi.available();
<br />for (int i=0; i<size; i++)
<br />{
<br />System.out.print((char) bi.read());
<br />}
<br />System.out.println();*/
<br />
<br />
<br /> }
<br />
<br />}
<br />
<br />
<br />dagspothttp://www.blogger.com/profile/13112520399578282503noreply@blogger.com0tag:blogger.com,1999:blog-8061373088972523424.post-38570571635369802522008-07-14T16:17:00.000-07:002008-07-14T16:28:47.272-07:00Calendar Applicationimport java.util.*;
<br />import java.awt.*;
<br />import java.awt.event.*;
<br />import java.io.*;
<br />
<br /><strong>class MyAdapter implements ActionListener
<br />{</strong>
<br />FrameCalendar fc;
<br />
<br /><strong>public MyAdapter(FrameCalendar fc1) </strong>
<br /><strong>{</strong>
<br />fc=fc1;
<br />}
<br /><strong>public void actionPerformed(ActionEvent ae)</strong>
<br />{
<br />if (ae.getSource()==fc.btnDisplay)
<br />{
<br />int month,year;
<br />GregorianCalendar c = new GregorianCalendar();
<br />try
<br />{
<br />month=Integer.parseInt(fc.tMonth.getText());
<br />year=Integer.parseInt(fc.tYear.getText());
<br />} catch (NumberFormatException e)
<br />{ month=c.get(Calendar.MONTH)+1;
<br />year=c.get(Calendar.YEAR);
<br />}
<br />c.set(Calendar.DATE,1);
<br />c.set(Calendar.MONTH,month-1);
<br />c.set(Calendar.YEAR,year);
<br />printCalendar(c);
<br />}
<br />}
<br /><strong></strong>
<br /><strong>private void printCalendar(GregorianCalendar c) </strong>
<br />{
<br />String DAY_OF_WEEK[] = {"Su","Mo","Tu","We","Th","Fr","Sa"};
<br />int monthLength[]={31,28,31,30,31,30,31,31,30,31,30,31};
<br />int MonthArray[][]=new int[6][7];
<br />int month,year,date;
<br />for (int i=0;i<6;i++)
<br /> {
<br /> Arrays.fill(MonthArray[i],0);
<br /> }
<br />c.set(Calendar.DATE,1);
<br />date=c.get(Calendar.DATE);
<br />month=c.get(Calendar.MONTH);
<br />year=c.get(Calendar.YEAR);
<br />
<br />int i;
<br />
<br />for (i=0;i<DAY_OF_WEEK.length;i++)
<br />{
<br />System.out.print(DAY_OF_WEEK[i]+"\t");
<br />fc.ta.append(DAY_OF_WEEK[i]+"\t");
<br />}
<br />System.out.println();
<br /> if ((month==1) && (c.isLeapYear(year)))
<br /> monthLength[1]=29;
<br /> else
<br /> monthLength[1]=28;
<br />
<br />for (i=1;i<=monthLength[month];i++)
<br />{
<br />MonthArray[c.get(Calendar.WEEK_OF_MONTH)-1][c.get(Calendar.DAY_OF_WEEK)-1]=i;
<br />c.roll(Calendar.DATE,1);
<br />}
<br /> for (i=0;i<6;i++)
<br />{
<br />System.out.println();
<br />fc.ta.append("\n");
<br /> for (int j=0;j<7;j++)
<br /> {
<br /> if (MonthArray[i][j]==0)
<br /> {
<br /> System.out.print("\t");
<br /> fc.ta.append("\t");
<br /> }
<br /> else
<br /> {
<br /> System.out.print(MonthArray[i][j] + "\t");
<br /> fc.ta.append(MonthArray[i][j] + "\t");
<br /> }
<br /> }
<br /> }
<br /> }
<br />}
<br /><strong>public class FrameCalendar extends Frame</strong>
<br />{
<br />Frame f1;
<br />Label l1;
<br />Button btnDisplay;
<br />Panel p1,p2;
<br />TextField tMonth, tYear;
<br />TextArea ta;
<br />
<br /><strong>public FrameCalendar(){</strong>
<br />f1=new Frame();
<br />f1.setSize(400,400);
<br />l1=new Label("Please enter Month and Year");
<br />btnDisplay=new Button("Show");
<br />tMonth=new TextField("Enter Month");
<br />tYear=new TextField("Enter Year");
<br />p1=new Panel();
<br />p1.add(l1);
<br />p1.add(btnDisplay);
<br />p1.add(tMonth);
<br />p1.add(tYear);
<br />f1.add(p1);
<br />p2=new Panel();
<br />ta = new TextArea("",10,50,0);
<br />p2.add(ta);
<br />f1.add(p2);
<br />p1.setLayout(new FlowLayout(FlowLayout.LEFT));
<br />p2.setLayout(new FlowLayout(FlowLayout.CENTER));
<br />f1.setLayout(new GridLayout(2,1));
<br />f1.setVisible(true);
<br />p1.setVisible(true);
<br />p2.setVisible(true);
<br />btnDisplay.addActionListener(new MyAdapter(this));
<br />}
<br />
<br /><strong> public static void main(String args[])</strong>
<br />{
<br />FrameCalendar fc = new FrameCalendar();
<br /> }
<br />}
<br />dagspothttp://www.blogger.com/profile/13112520399578282503noreply@blogger.com0tag:blogger.com,1999:blog-8061373088972523424.post-38964873563587522752008-07-08T16:42:00.000-07:002008-07-08T16:52:52.559-07:00Wrapper classes for primitive types<strong>Constructors</strong><br />Integer (int i)<br />Integer(String s)<br /><br /><strong>Methods to Convert primitive integer type to Integer Object</strong><br />public static Integer decode(String s)<br />public static Integer valueOf(String s) => The string format can be number, leading 0 for octal, # or 0x for Hexadecimal<br />public static Integer valueOf(String s, int radix)<br /><br /><strong>Methods to convert Integer Object to different primitive types</strong><br />public byte byteValue()<br />public double doubleValue()<br />public float floatValue()<br />public int intValue()<br />public long longValue()<br />public short shortValue()<br /><br /><strong>Methods for converting a String to primtive type</strong><br />public int parseInt(String s)<br />public int parseInt(String s, int radix)<br /><br /><strong>Methods for converting a primitive type to String<br /></strong>public static String toString(int i)<br />public static String toBinaryString(int i)<br />public static String toHexString(int i)<br />public static String toOctalString(int i)<br /><br /><strong>Methods to compare Integer Object</strong><br />public boolean equals(Object x)<br />public int compareTo(Integer x)<br /><br />Integer.MIN_VALUE and Integer.MAX_VALUE fields to compare max and min values for a particular Object type.<br /><br /><strong>This is similar for Short, byte, boolean, long, double, float.</strong>dagspothttp://www.blogger.com/profile/13112520399578282503noreply@blogger.com1tag:blogger.com,1999:blog-8061373088972523424.post-74454798289218977472008-06-07T17:03:00.000-07:002011-05-10T10:50:57.413-07:00File Class, InputStream and OutputStream<ol><li><strong>File</strong></li>
</ol>Although most of the classes defined in java.io operate on streams, File class does not.<br />
It deals directly with files and the filesystem and does not specify how information is retrieved or stored in a file. It however provides properties of the file.<br />
<strong>File Constructors</strong>File (String DirectoryPath)<br />
File (String DirectoryPath, String Filename)<br />
File(File dirObj, String Filename)<br />
File (URI uriObj)<br />
<br />
<strong>File Methods</strong><br />
getName()<br />
getpath()<br />
getAbsolutePath()<br />
getParent()<br />
boolean canWrite()<br />
boolean canRead()<br />
boolean isHidden()<br />
boolean isFile()<br />
long length()<br />
boolean isDirectory()<br />
boolean setReadOnly()<br />
<strong></strong>It is a file that contains a list of other files and directories.<br />
<br />
<strong>Methods</strong>list()<br />
<br />
<br />
<strong>The listFiles( ) Alternative</strong>File[ ] listFiles( )<br />
File[ ] listFiles(FilenameFilter FFObj)<br />
File[ ] listFiles(FileFilter FObj)<br />
<br />
Directory<br />
<br />
These methods return the file list as an array of File objects instead of strings.<br />
<br />
The third version of listFiles( ) returns those files with path names that satisfy the<br />
specified FileFilter. FileFilter defines only a single method, accept( ), which is called<br />
once for each file in a list. Its general form is given here:<br />
boolean accept(File path)<br />
<br />
<strong>FilenameFilter Interface</strong>The lists can implement interface to return file lists of certain extension. It implements the accept method.<br />
public class File01 <strong>implements FilenameFilter</strong><br />
{ <br />
<strong>public boolean accept(File dir,String name)</strong>{ return (name.endsWith("exe") name.endsWith("java")); }<br />
<br />
public static void main(String args[])<br />
{<br />
File01 ff = new File01();<br />
File f1 = new File("C:\\Program Files\\Java\\jdk1.5.0_14\\abc");<br />
String s[]=f1.list(ff);<br />
________________________________________________________<br />
<strong>FileInputStream</strong>The FileInputStream class creates an InputStream that you can use to read bytes from<br />
a file. Its two most common constructors are shown here:<br />
FileInputStream(String filepath)<br />
FileInputStream(File fileObj)<br />
Either can throw a FileNotFoundException<br />
<br />
<strong>FileOutputStream</strong>FileOutputStream creates an OutputStream that you can use to write bytes to a file. Its<br />
most commonly used constructors are shown here:<br />
FileOutputStream(String filePath)<br />
FileOutputStream(File fileObj)<br />
FileOutputStream(String filePath, boolean append)<br />
FileOutputStream(File fileObj, boolean append)<br />
They can throw a FileNotFoundException or a SecurityException<br />
<strong>________________________________________________________<br />
ByteArrayStreams</strong><br />
<strong>ByteArrayInputStream</strong><br />
byte buff[] = s.getBytes();<br />
ByteArrayInputStream in = new ByteArrayInputStream(buff);<br />
<br />
A ByteArrayInputStream implements both mark() and reset().<br />
If mark is not called, then reset points to start of buffer.<br />
<br />
<strong>ByteArrayOutputStream</strong>ByteArrayOutputStream is an implementation of outputStream that uses byte array as destination<br />
ByteArrayOutputStream()<br />
ByteArrayOutputStream(int numBytes)<br />
String s ="This is a test";<br />
byte buff[] = s.getBytes();<br />
OutputStream f2 = new FileOutputStream("test.txt");<br />
ByteArrayOutputStream f = new ByteArrayOutputStream();<br />
//Method#1<br />
f.write(buff);<br />
f.writeTo(f2);<br />
<br />
//Method#2<br />
f2.write(buff);<br />
________________________________________________________<br />
<strong>Filtered Byte Streams</strong>Wrapper classes of InputStream and Output streams.<br />
Constructors are<br />
FilterOutputStream(OutputStream os)<br />
FilterInputStream(OutputStream os)<br />
<br />
<strong>Buffered Byte Streams useful in I/O performance optimization.</strong><br />
<strong>BufferedInputStream<br />
Constructors</strong>BufferedInputStream(InputStream inputStream)<br />
BufferedInputStream(InputStream inputStream, int bufsize)<br />
<br />
mark and reset() are supported<br />
<br />
<strong>BufferedOutputStream<br />
Constructors</strong>BufferedOutputStream(OutputStream outputStream)<br />
BufferedOutputStream(OutputStream outputStream,int bufsize)<br />
Example:<br />
String s="test";<br />
byte buf[]=s.getBytes();<br />
ByteArrayInputStream in = new ByteArrayInputStream(buf);<br />
BufferedInputStream bufStream = new BufferedInputStream(in);<br />
bufStream.read()<br />
BufferedOutputStream outStream = new BufferedOutputStream(buf);<br />
outStream.flush(); <strong>//Recommended to use flush than write to reduce I/O</strong><br />
________________________________________________________dagspothttp://www.blogger.com/profile/13112520399578282503noreply@blogger.com0tag:blogger.com,1999:blog-8061373088972523424.post-28459930765554427132008-05-11T20:31:00.000-07:002008-05-11T21:59:59.624-07:00Abstract Class and InterfacesAbstract Classes and Interfaces allows you to create dynamic methods that act as per the object type generated at run time.<br /><br /><strong>Abstract Class</strong><br /><ul><li>Any class that contains one or more abstract methods needs to be declared as abstract.</li><li>There can be no objects for an abstract class</li><li>Abstract constructor or abstract static methods cannot be declared in a abstract class. You can construct regular constructor.</li><li>Any sub-class of an abstract class must implement all the abstract methods of the super calls or itself be declared abstract.</li></ul><p><strong><span style="font-size:130%;">Interface</span></strong></p><ul><li>They lack instance variable, and their methods are declared without bodies.</li><li>Format</li></ul><p>access interface name {</p><p>return-type method1 (param-list);<br />return-type method2 (param-list);<br />type final-var1=value;<br />type final-var2=value;</p><p>}</p><ul><li>Each class that implements an interface must implement all of the methods defined under the interface.</li><li>Interface methods implemented by the class are always public.</li><li>A class that only implements an interface methods partially must be declared as an abstract class and all the rules of abstract class apply to it.</li></ul><p><strong><span style="font-size:130%;">Example</span></strong></p><p><span style="color:#ff0000;">abstract class Shape<br /></span>{<br /> //Static variable numObjects to keep count of Shape objects created<br /> protected static int numObjects=0;<br /><br /> //Shape constructor<br /> Shape()<br /> {<br /> ++numObjects;<br /> }<br /> //define abstract method for area<br /> abstract double area();<br /><br /> //static function to return number of shapes<br /> protected static int numShapes()<br /> {<br /> return numObjects;<br /> }<br /><br />}<br /><br />//Define interface for drawing<br /><span style="color:#ff0000;">interface Drawable </span>{<br /> void draw();<br />}<br /><br />//Class Circle is a sub class of Shape<br /><span style="color:#ff0000;">class Circle extends Shape</span><br />{<br /> protected int radius;<br /> protected static int numberCircles=0;<br /> Circle(int radius)<br /> {<br /> super(); //execute super class constructor first before initializing circle class instance variable - radius<br /> this.radius=radius;<br /> ++numberCircles;<br /> }<br /><br />//return area of circle as double. This is the implementation for abstract method area defined in Shape<br /> protected double area()<br /> {<br /> return Math.PI * radius * radius;<br /> }<br /><br />//static method to return number of circle objects created<br /> protected static int numCircles()<br /> {<br /> return numberCircles;<br /> }<br />}<br /><br />//Class Rectangle is a sub class of Shape<br /><span style="color:#ff0000;">class Rectangle extends Shape<br /></span>{<br /> protected int length,width;<br /> protected static int numberRectangles=0;<br /> Rectangle(int length, int width)<br /> {<br /> super(); //execute super class constructor first before initializing rectangle class instance variables length and width<br /> this.length=length;<br /> this.width=width;<br /> ++numberRectangles;<br /> }<br /><br />//return area of rectangle as double. This is the implementation for abstract method area defined in Shape<br /> protected double area()<br /> {<br /> return length * width;<br /> }<br /><br />//static method to return number of rectangle objects created<br /> protected static int numRectangles()<br /> {<br /> return numberRectangles;<br /> }<br />}<br /><br />//Graphic circle inherits circle class and implements interface Drawable<br /><span style="color:#ff0000;">class GraphicCircle extends Circle<br /></span> <span style="color:#ff0000;"> implements Drawable</span><br />{<br /> protected int color;<br /><br /> GraphicCircle(int radius,int color)<br /> {<br /> super(radius);<br /> this.color=color;<br /><br /> }<br />//interface implementation of draw method. method access should always be public for interface method implementation<br /> public void draw()<br /> {<br /> System.out.println("Circle drawn using color:" + color);<br /> }<br />}<br />//Graphic Rectangle inherits Rectangle class and implements interface Drawable<br /><span style="color:#ff0000;">class GraphicRectangle extends Rectangle<br /> implements Drawable<br /></span>{<br /> protected int color;<br /><br /><br /> GraphicRectangle(int len,int wid,int color)<br /> {<br /> super(len,wid);<br /> this.color=color;<br /><br /> }<br /><br />//interface implementation of draw method. method access should always be public for interface method implementation<br /> public void draw()<br /> {<br /> System.out.println("Rectangle drawn using color:" + color);<br /> }<br />}</p><p> </p>dagspothttp://www.blogger.com/profile/13112520399578282503noreply@blogger.com0tag:blogger.com,1999:blog-8061373088972523424.post-23077769021590725612008-05-09T20:56:00.000-07:002008-05-09T21:09:22.405-07:00Java Terms ExplainedI started learning java and I thought it would be a good idea to help the user community of this wonderful language from a beginner's perspective.<br /><a href="http://java.sun.com/developer/onlineTraining/new2java/programming/learn/unravelingjava.html">http://java.sun.com/developer/onlineTraining/new2java/programming/learn/unravelingjava.html</a><br /><br /><strong>What is the difference between SDK and JDK.</strong><br />Java 2 SDK is by popular user opinion has been reverted back to JDK where JDK stands for J2SE Development Kit. J2RE has been reverted to JRE.<br /><strong><a href="http://java.sun.com/javase/namechange.html">http://java.sun.com/javase/namechange.html</a></strong><br /><strong></strong><br /><strong>Another thing to note is that there is no difference between 1.5.0 and 5.0 version. </strong>The leading 1. was dropped and the new 5.0 numbering format has been adopted by Sun. The latest release of Java is version 6.0 and instead of referring it by J2SE 6.0, Sun prefers to call the new version Java SE 6.0. They have dropped the 2 altogether.<br /><a href="http://java.sun.com/j2se/versioning_naming.html">http://java.sun.com/j2se/versioning_naming.html</a><br /><br />I would blame the Sun Marketing people of confusing people with the versioning. I hope the above links would help simplify things for the beginner.dagspothttp://www.blogger.com/profile/13112520399578282503noreply@blogger.com0