Osmora.advanced JAVA Laboratory Manual.2016%28epub%29

Post on 13-Apr-2016

104 views 4 download

description

Java manual

transcript

TableofContents

AdvancedJAVALaboratoryManualUnit1

IntroductionPractical1:Writeanappletthatdrawsacircle.Thedimensionoftheappletshouldbe500x300pixels.Thecircleshouldbecenteredintheappletandhavearadiusof100pixels.Displayyournamecenteredinacircle.(USINGDRAWOVAL()method)Practical2:Drawtenredcirclesinaverticalcolumninthecenteroftheapplet.Practical3:Builtanappletthatdisplaysahorizontalrectangleinitscenter.Lettherectanglefillwithcolorfromlefttoright.Practical4:Writeanappletthatdisplaysthepositionofthemouseattheupperleftcorneroftheappletwhenitisdraggedormoved.Drawa10x10pixelrectanglefiledwithblackatthecurrentmouseposition.Practical5:Writeanappletthatcontainsonebutton.Initializethelabelonthebuttonto“start”,whentheuserpressesthebuttonchangethelabelbetweenthesetwovalueseachtimethebuttonispressed.Practical6:Writeanappletthatusesthemouselistener,whichoverridesonlytwomethodswhicharemousePressedandmouseReleased.Exercise:

Unit2IntroductionPractical7:Writeaprogramthathasonlyonebuttonintheframe,clickingonthebuttoncyclesthroughthecolors:red->green->blue->andsoon.Onecolorchangeperclick.(usegetBackGround()methodtogetthecurrentcolor)Practical8:Writeanappletthatcontainsthreecheckboxesand30x30pixelcanvas.Thethreecheckboxesshouldbelabeled“Red”,”Green”,”Blue”.Theselectionofthecheckboxesdeterminesthecolorofthecanvas.Forexample,iftheuserselectsboth“Red”and“Blue”,thecanvasshouldbepurple.Practical9:Createanapplicationthatdisplaysaframewithamenubar.Whenauserselectsanymenuormenuitem,displaythatselectiononatextareainthecenteroftheframePractical10:Writeanappletthatdrawstwosetsofever-decreasingrectanglesoneinoutlineformandonefilledalternatelyinblackandwhite.Exercise:

Unit3IntroductionPractical11:WriteadatabaseapplicationthatusesanyJDBCdriver.Practical12:DevelopaUIthatperformsthefollowingSQLoperations:1)Insert2)Delete3)Update.Practical13:Writeaprogramtopresentasetofchoiceforusertoselectaproduct&displaythepriceofproduct.

Exercise:Unit4

IntroductionPractical14:WriteasimpleservletprogramwhichmaintainsacounterforthenumberoftimesithasbeenaccessedsinceIT’Sloading;initializethecounterusingdeploymentdescriptor.Practical15:Createaformprocessingservletwhichdemonstratesuseofcookies.Practical16:Createaformprocessingservletwhichdemonstratesuseofsessions.

Unit5IntroductionPractical17:WRITEasimpleJSPprogramforuserRegistration&thencontrolwillbetransferitintosecondpage.Practical18:WriteasimpleJSPprogramforuserloginformwithstatic&dynamicdatabase.Practical19:WriteaJSPprogramtodisplaythegradeofastudentbyacceptingthemarksoffivesubjects.

ADVANCEDJAVALABORATORYMANUALByGayatriPatel

AdvancedJAVALaboratoryManual

Copyright©ReservedbytheAuthor

AdvancedJAVALaboratoryManual

Unit1

Introduction

Practical1:Writeanappletthatdrawsacircle.Thedimensionoftheappletshouldbe500x300pixels.Thecircleshouldbecenteredintheappletandhavearadiusof100pixels.Displayyournamecenteredinacircle.(USINGDRAWOVAL()method)

Practical2:Drawtenredcirclesinaverticalcolumninthecenteroftheapplet.

Practical3:Builtanappletthatdisplaysahorizontalrectangleinitscenter.Lettherectanglefillwithcolorfromlefttoright.

Practical4:Writeanappletthatdisplaysthepositionofthemouseattheupperleftcorneroftheappletwhenitisdraggedormoved.Drawa10x10pixelrectanglefiledwithblackatthecurrentmouseposition.

Practical5:Writeanappletthatcontainsonebutton.Initializethelabelonthebuttonto“start”,whentheuserpressesthebuttonchangethelabelbetweenthesetwovalueseachtimethebuttonispressed.

Practical6:Writeanappletthatusesthemouselistener,whichoverridesonlytwomethodswhicharemousePressedandmouseReleased.

Exercise:

Unit2

Introduction

Practical7:Writeaprogramthathasonlyonebuttonintheframe,clickingonthebuttoncyclesthroughthecolors:red->green->blue->andsoon.Onecolorchangeperclick.(usegetBackGround()methodtogetthecurrentcolor)

Practical8:Writeanappletthatcontainsthreecheckboxesand30x30pixelcanvas.Thethreecheckboxesshouldbelabeled“Red”,”Green”,”Blue”.Theselectionofthecheckboxesdeterminesthecolorofthecanvas.Forexample,iftheuserselectsboth“Red”and“Blue”,thecanvasshouldbepurple.

Practical9:Createanapplicationthatdisplaysaframewithamenubar.Whenauserselectsanymenuormenuitem,displaythatselectiononatextareainthecenteroftheframe

Practical10:Writeanappletthatdrawstwosetsofever-decreasingrectanglesoneinoutlineformandonefilledalternatelyinblackandwhite.

Exercise:

Unit3

Introduction

Practical11:WriteadatabaseapplicationthatusesanyJDBCdriver.

Practical12:DevelopaUIthatperformsthefollowingSQLoperations:1)Insert2)Delete3)Update.

Practical13:Writeaprogramtopresentasetofchoiceforusertoselectaproduct&displaythepriceofproduct.

Exercise:

Unit4

Introduction

Practical14:WriteasimpleservletprogramwhichmaintainsacounterforthenumberoftimesithasbeenaccessedsinceIT’Sloading;initializethecounterusingdeploymentdescriptor.

Practical15:Createaformprocessingservletwhichdemonstratesuseofcookies.

Practical16:Createaformprocessingservletwhichdemonstratesuseofsessions.

Unit5

Introduction

Practical17:WRITEasimpleJSPprogramforuserRegistration&thencontrolwillbetransferitintosecondpage.

Practical18:WriteasimpleJSPprogramforuserloginformwithstatic&dynamicdatabase.

Practical19:WriteaJSPprogramtodisplaythegradeofastudentbyacceptingthemarksoffivesubjects.

UNIT1

GENERALOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

LearnaboutApplet.

DevelopanAppletPrograminJAVA

ExecuteanAppletPrograminJAVAusingAppletViewer

ExecuteanAppletinWebBrowser

LearnHowtouseGraphicsClasstodrawShapes.

LEARNINGOUTCOMESExplain&PracticeGraphicDrawingApplicationsusingApplets.

ASSUMPTIONSOracleJDKinstalled

EditorLikenotepad,Jcreatoravailableforprogramdevelopment

EnvironmentvariableslikeJAVA_Home,Path,Classpathareconfigured.

INTRODUCTION

WhatisanApplet?AccordingtoSun“Anappletisasmallprogramthatisintendednottoberunonits

own,butrathertobeembeddedinsideanotherapplication….TheAppletclassprovidesastandardinterfacebetweenappletsandtheirenvironment.”

Fourdefinitionsofapplet:AsmallapplicationAsecureprogramthatrunsinsideawebbrowserAsubclassofjava.applet.AppletAninstanceofasubclassofjava.applet.Applet

TheAPPLETHTMLTagAppletsareembeddedinwebpagesusingthe<APPLET>and</APPLET>tags.The

<APPLET>tagissimilartothe<IMG>tag.

TheCODEattributeof<APPLET>tagtellsthebrowserwheretolookforthecompiled.classfile.Itisrelativetothelocationofthesourcedocument.TheCODEBASEattributeisaURLthatpointsatthedirectorywherethe.class

fileis.TheCODEattributeisthenameofthe.classfileitself.ForinstanceifontheHTMLpageoftheprevioussectionyouhadwrittenTheHEIGHTandWIDTHattributesspecifyhowbigarectanglethebrowsershouldsetasidefor theapplet.Thesenumbersarespecified inpixelsandarerequired.

<APPLET

CODE=“TestApplet.class”

CODEBASE=“classes”

WIDTH=200HEIGHT=200>

</APPLET>

thenthebrowserwouldhavetriedtofindTestApplet.class intheclassesdirectoryinthesamedirectoryastheHTMLpagethatincludedtheapplet.Ontheotherhandifyouhadwritten

<APPLET

CODE=”TestApplet.class”

CODEBASE=“http://www.foo.bar.com/classes”

WIDTH=200

HEIGHT=200>

</APPLET>

thenthebrowserwouldtrytoretrievetheappletfromhttp://www.foo.bar.com/classes/TestApplet.classregardlessofwheretheHTMLpagewas.

In short the appletviewerwill try to retrieve the applet from theURLgivenby theformula(CODEBASE+“/”+code).Once thisURLis formedall theusual rulesaboutrelativeandabsoluteURLsapply.

You can leave off the .class extension and just use the class name in the CODEattribute.Forexample,

<APPLETCODE=“TestApplet”

CODEBASE=“http://www.foo.bar.com/classes”

WIDTH=200

HEIGHT=200>

</APPLET>

ExecutingAppletusingWebBrowserTestApplet.java

importjava.applet.*;

importjava.awt.*;

publicclassTestAppletextendsApplet{

publicvoidpaint(Graphicsg)

{

g.drawString(“Welcometotheappletworld”,20,40);

}

}

TestApplet.html

<HTML>

<HEAD>

<TITLE>AppletHTMLPage</TITLE>

</HEAD>

<BODY>

<APPLETcode=“TestApplet.class”width=350height=200></APPLET>

</BODY>

</HTML>

The importstatementsdirect theJavacompiler to include the java.applet.Appletandjava.awt.Graphicsclassesinthecompilation.Theimportstatementallowstheseclassestobereferencedinthesourcecodeusingthesimpleclassname(i.e.Applet)insteadofthefullyqualifiedclassname(i.e.java.applet.Applet).

The Applet class provides the framework for the host application to display andcontrol the lifecycle of the applet. TheApplet class is anAbstractWindowing Toolkit(AWT)Component,whichprovides theappletwith thecapability todisplayagraphicaluserinterface(GUI)andrespondtouserevents.

ExecutingAppletdirectlyusingAppletviewerTestApplet.java

importjava.applet.*;

importjava.awt.*;

/*

<APPLETcode=“TestApplet.class”width=350height=200></APPLET>

*/

publicclassTestAppletextendsApplet

{

publicvoidpaint(Graphicsg)

{

g.drawString(“WelcometoAppletworld”,20,40);

}

}

TheBasicAppletLifeCycle1. ThebrowserreadstheHTMLpageandfindsany<APPLET>tags.2. The browser parses the <APPLET> tag to find the CODE and possibly

CODEBASEattribute.3. Thebrowserdownloadsthe.classfilefortheappletfromtheURLfoundinthe

laststep.4. The browser converts the raw bytes downloaded into a Java class, that is a

java.lang.Classobject.5. Thebrowserinstantiatestheappletclasstoformanappletobject.Thisrequires

theapplettohaveanoargsconstructor.6. Thebrowsercallstheapplet’sinit()method.7. Thebrowsercallstheapplet’sstart()method.8. While the applet is running, the browser passes any events intended for the

applet, e.g. mouse clicks, key presses, etc., to the applet’s handleEvent()method.Updateeventsareusedtotelltheappletthatitneedstorepaintitself.

9. Thebrowsercallstheapplet’sstop()method.10. Thebrowsercallstheapplet’sdestroy()method.

Allappletshavethefollowingfourmethods:

publicvoidinit();

publicvoidstart();

publicvoidstop();

publicvoiddestroy();

SimpleMethodstoDesignApplet

Method Description

void setBackground(Colorcolorname)

To set the background of anappletwindow.

void setForeground(Colorcolorname)

Tosettheforegroundcolorofanappletwindow.

Color getBackground ()

Toobtainthecurrentsettingsforthebackgroundcolor

ColorgetForeground() Toobtainthecurrentsettingsfortheforegroundcolor

Applet getApplet (Stringname)

Toobtaintheappletspecifiedbygiven name from the current appletcontext.

Void showStatus(Stringstatus)

Todisplay the statusmessage inthestatusbarofappletwindow

URLgetDocumentBase()

To obtain the directory of thecurrentbrowserpage.

URLgetCodeBase() To obtain the directory fromwhich the applet’s class file wasloaded

Example:

importjava.applet.*;

importjava.awt.*;

importjava.net.*;

/*

<appletcode=AppletMethodsheight=300width=400>

<paramname=firstvalue=“KDP”>

</applet>

*/

publicclassAppletMethodsextendsApplet

{

Stringarg;

publicvoidstart()

{

arg=getParameter(“first”);

}

publicvoidpaint(Graphicsg)

{

setBackground(Color.black);

setForeground(Color.white);

URLcodename=getCodeBase();

URLdocname=getDocumentBase();

g.drawString(“String=WelcometoKDP”,30,40);

g.drawString(“ParameterValue=“+arg,30,70);

g.drawString(“Classname=“+codename.toString(),30,100);

g.drawString(“DocumentBase=“+docname.toString(),30,130);

}

}

Output:

PassingParameterstoAppletsParametersarepassedtoappletsinNAME=VALUEpairsin<PARAM>tagsbetween

the opening and closing APPLET tags. Inside the applet, you read the values passedthroughthePARAMtagswiththegetParameter()methodofthejava.applet.Appletclass.

<paramname=parameter_namevalue=parameter_value>CompletesyntaxfortheAPPLETtagincludingParamTag

<APPLETCODEBASE=codebaseURLCODE=appletFileALT=alternateText

NAME=appletInstanceNameWIDTH=pixelsHEIGHT=pixelsALIGN=alignment><PARAMNAME=appletAttribute1VALUE=value><PARAMNAME=appletAttribute2VALUE=value>

…alternateHTML</APPLET>

ExampleAppletwithparameters

/*

*AppletWithPara.java

*

*/

importjava.applet.*;

importjava.awt.*;

/*

<appletcode=AppletWithParawidth=200height=150>

<paramname=authorvalue=“J.B.Patel”>

<paramname=agevalue=“27”>

<paramname=designationvalue=“Lecturer”>

<paramname=institutevalue=“SSPCVisnagar”>

</applet>

*/

publicclassAppletWithParaextendsjava.applet.Applet

{

publicvoidpaint(Graphicsgp)

{

Stringau=getParameter(“author”);

Stringag=getParameter(“age”);

Stringdesg=getParameter(“designation”);

Stringinst=getParameter(“institute”);

gp.drawString(“Author:”+au,20,40);

gp.drawString(“Age:”+ag,20,70);

gp.drawString(“Designation:”+desg,20,100);

gp.drawString(“Institute:”+inst,20,130);

showStatus(“Parametermethods”);

}

}

Output:

TheCoordinateSystemJava uses the standard, two-dimensional, computer graphics coordinate system. The

firstvisiblepixelintheupperleft-handcorneroftheappletcanvasis(0,0).Coordinatesincreasetotherightanddown.

GraphicsObjectsInJavaalldrawingtakesplaceviaaGraphicsobject.Thisisaninstanceoftheclass

java.awt.Graphics. Initially the Graphics object you use will be the one passed as anargumenttoanapplet’spaint()method.

EachGraphicsobjecthasitsowncoordinatesystem,andallthemethodsofGraphicsincluding those for drawing Strings, lines, rectangles, circles, polygons and more.Drawing in Java starts with particularGraphics object. You get access to theGraphicsobject throughthepaint(Graphicsg)methodofyourapplet.Eachdrawmethodcallwilllook like g.drawString(“HelloWorld”, 0, 50) where g is the particular Graphics objectwithwhichyou’redrawing.

CommonlyusedmethodsofGraphicsclassareasfollows:

drawString(Strings,intx,inty) Tooutputastringtoanappletataspecified position. It is called fromwithinupdate()orpaint().

drawChars(charc[],intstart_index,intnum_of_char,intx,inty)

To output characters of array toanappletatspecifiedlocation.

drawChars(bytec[],intstart_index,intnum_of_char,intx,inty)

To output characters of byte’sarray to an applet at specifiedlocation.

drawLine(intx1,inty1,intx2,inty2); To draw a line at specificlocation.

drawOval ( int x, int y, int width, int To draw an oval at specified

height) location x,y having specific heightandwidth

setColor(Colorc) Tosetthecoloroftheobject

fillOval(intx,inty,intwidth,intheight)

TofillcolorinOval

drawRect ( int x, int y, int width, intheight)

To draw a rectangle at specificlocation

fillRect(intx,inty,intwidth,intheight)

Tofillcolorinrectangle

drawArc (int x, int y, int width, intheight,intarcwidth,intarcheight)

TodrawanArc

fillArc(intx,inty,intwidth,intheight,intarcwidth,intarcheight)

TofillcolorinArc.

setFont(Fontf) Tosetthefontf

DrawingLinesDrawingstraightlineswithJavaiseasy.Justcall

g.drawLine(x1,y1,x2,y2)

where(x1,y1)and(x2,y2)aretheendpointsofyourlinesandgistheGraphicsobjectyou’redrawingwith.

Thisprogramdrawsalinediagonallyacrosstheapplet.

importjava.applet.*;

importjava.awt.*;

publicclassSimpleLineextendsApplet{

publicvoidpaint(Graphicsg){

g.drawLine(0,0,this.getSize().width,this.getSize().height);

}

}

Output

DrawingRectanglesDrawing rectangles is simple.StartwithaGraphicsobjectgandcall itsdrawRect()

method:

publicvoiddrawRect(intx,inty,intwidth,intheight)

As thevariablenamessuggest, the first int is the lefthandsideof the rectangle, thesecondisthetopoftherectangle,thethirdisthewidthandthefourthistheheight.ThisisincontrasttosomeAPIswherethefoursidesoftherectanglearegiven.

ThisusesdrawRect()todrawarectanglearoundthesidesofanapplet.

importjava.applet.*;

importjava.awt.*;

publicclassRectangleAppletextendsApplet{

publicvoidpaint(Graphicsg){

g.drawRect(0,0,this.getSize().width-1,this.getSize().height-1);

}

}

Output

Remember that getSize().width is thewidth of the applet and getSize().height is itsheight.

WhywastherectangledrawnonlytogetSize().height-1andgetSize().width-1?

Remember that theupper lefthandcornerof theappletstartsat (0,0),notat (1,1).Thismeansthata100by200pixelappletincludesthepointswithxcoordinatesbetween0 and 99, not between 0 and 100. Similarly the y coordinates are between 0 and 199inclusive,not0and200.

FillingRectanglesThedrawRect()methoddrawsanopenrectangle,aboxifyouprefer.Ifyouwantto

drawafilledrectangle,usethefillRect()method.Otherwisethesyntaxisidentical.

This programdraws a filled square in the center of the applet.This requires you toseparatetheappletwidthandheightfromtherectanglewidthandheight.Here’sthecode:

importjava.applet.*;

importjava.awt.*;

publicclassFillAndCenterextendsApplet{

publicvoidpaint(Graphicsg){

intappletHeight=this.getSize().height;

intappletWidth=this.getSize().width;

intrectHeight=appletHeight/3;

intrectWidth=appletWidth/3;

intrectTop=(appletHeight-rectHeight)/2;

intrectLeft=(appletWidth-rectWidth)/2;

g.fillRect(rectLeft,rectTop,rectWidth-1,rectHeight-1);

}

}

Output

OvalsandCirclesJava hasmethods to draw outlined and filled ovals.As you’d probably guess these

methodsarecalleddrawOval() and fillOval() respectively.Asyoumightnotguess theytakeidenticalargumentstodrawRect()andfillRect(),i.e.

publicvoiddrawOval(intleft,inttop,intwidth,intheight)

publicvoidfillOval(intleft,inttop,intwidth,intheight)

Insteadof thedimensionsof theoval itself, thedimensionsof thesmallest rectanglewhichcanenclosetheovalarespecified.Theovalisdrawnaslargeasitcanbetotouchtherectangle’sedgesattheircenters.Thispicturemayhelp:

TheargumentstodrawOval()arethesameastheargumentstodrawRect().Thefirstintisthelefthandsideoftheenclosingrectangle,thesecondisthetopoftheenclosingrectangle,thethirdisthewidthandthefourthistheheight.

Example:

importjava.applet.*;

importjava.awt.*;

publicclassBullseyeextendsApplet{

publicvoidpaint(Graphicsg){

intappletHeight=this.getSize().height;

intappletWidth=this.getSize().width;

for(inti=8;i>=0;i—){

if((i%2)==0)g.setColor(Color.red);

elseg.setColor(Color.white);

//Centertherectangle

intrectHeight=appletHeight*i/8;

intrectWidth=appletWidth*i/8;

intrectLeft=appletWidth/2-i*appletWidth/16;

intrectTop=appletHeight/2-i*appletHeight/16;

g.fillOval(rectLeft,rectTop,rectWidth,rectHeight);

}

}

}

Output

UsingColorswithAppletsThesyntaxoftheconstructortocreatecustomcolors:

Color(intred,intgreen,intblue);

Example:

newColor(255,100,100);//lightred

Callingaconstructortosetthecolor

Colorc=newColor(255,175,175)

g.setColor(c)

ColorObtained

RedValue

GreenValue

BlueValue

White 255 255 255

Black 0 0 0

LightGray 192 192 192

DarkGray 128 128 128

Red 255 0 0

Green 0 255 0

Blue 0 0 255

Yellow 255 255 0

Purple 255 0 255

TableofRGBvaluesofcommoncolors

You create new colors using the same RGB triples that you use to set backgroundcolorsonwebpages.Howeveryouusedecimalnumbersinsteadofthehexvaluesusedbythe bgcolor tag. For example medium gray is Color(127, 127, 127). Pure white isColor(255,255,255).Pureredis(255,0,0)andsoon.Aswithanyvariableyoushouldgiveyourcolorsdescriptivenames.Forinstance

ColormedGray=newColor(127,127,127);

Colorcream=newColor(255,231,187);

ColorlightGreen=newColor(0,55,0);

Afewofthemostcommoncolorsareavailablebyname.Theseare

Color.black Color.gray Color.orange Color.yellow

Color.blue Color.green Color.pink

Color.cyan Color.lightGray Color.red

Color.darkGray Color.magenta Color.white

TochangecolorsyouchangethecolorofyourGraphicsobject.Theneverythingyoudrawfromthatpointforwardwillbeinthenewcoloruntilyouchangeitagain.

Whenanappletstartsrunningthecolorissettoblackbydefault.Youcanchangethisto red by calling g.setColor(Color.red). You can change it back to black by callingg.setColor(Color.black). The following code fragment shows how you’d draw a pinkStringfollowedbyagreenone:

g.setColor(Color.pink);

g.drawString(“ThisStringispink!”,50,25);

g.setColor(Color.green);

g.drawString(“ThisStringisgreen!”,50,50);

Example:AppletColor.java

importjava.applet.*;

importjava.awt.*;

/*

<appletcode=AppletColorheight=300width=400>

</applet>

*/

publicclassAppletColorextendsApplet

{

publicvoidpaint(Graphicsg)

{

Colorc1=newColor(255,0,255);

Colorc2=newColor(128,128,128);

g.setColor(c1);

intr=c1.getRed();

intgr=c1.getGreen();

intb=c1.getBlue();

g.drawString(“RED=“+r+”GREEN=“+gr+”BLUE=“+b,10,20);

c1=c1.darker();

g.setColor(c1);

g.drawString(“RED=“+r+”GREEN=“+gr+”BLUE=“+b,10,40);

g.setColor(c2);

g.drawString(“RED=“+r+”GREEN=“+gr+”BLUE=“+b,10,60);

c2=c2.brighter();

g.setColor(c2);

g.drawString(“RED=“+r+”GREEN=“+gr+”BLUE=“+b,10,80);

}

}

Output:

FontsYou’vealreadyseenoneexampleofdrawingtextintheHelloWorldAppletprogramof

thelastchapter.YoucallthedrawString()methodoftheGraphicsobject.Thismethodispassed theStringyouwant todrawaswellasanxandycoordinate. Ifg isaGraphicsobject,thenthesyntaxis

g.drawString(Strings,intx,inty)

The String is simply the text you want to draw. The two integers are the x and ycoordinatesof the lower left-handcornerof theString.TheStringwillbedrawnaboveandtotherightofthispoint.Howeverletterswithdescenderslikeyandpmayhavetheirdescendersdrawnbelowtheline.

Until now all the applets have used the default font, probably some variation ofHelveticathoughthisisplatformdependent.HoweverunlikeHTMLJavadoesallowyoutochooseyourfonts.JavaimplementationsareguaranteedtohaveaseriffontlikeTimesthat canbe accessedwith thename“Serif”, amonospaced font like courier that canbeaccessedwiththename“Mono”,andasansseriffontlikeHelveticathatcanbeaccessedwiththename“SansSerif”.

Thefollowingappletliststhefontsavailableonthesystemit’srunningon.ItdoesthisbyusingthegetFontList()methodfromjava.awt.Toolkit.Thismethodreturnsanarrayofstringscontainingthenamesoftheavailablefonts.Thesemayormaynotbethesameasthe fonts installedonyour system. It’s implementationdependentwhetherornotall thefontsasystemhasareavailabletotheapplet.

importjava.awt.*;

importjava.applet.*;

publicclassFontListextendsApplet{

privateString[]availableFonts;

publicvoidinit(){

Toolkitt=Toolkit.getDefaultToolkit();

availableFonts=t.getFontList();

}

publicvoidpaint(Graphicsg){

for(inti=0;i<availableFonts.length;i++){

g.drawString(availableFonts[i],5,15*(i+1));

}

}

}

Output

DrawingGraphicsExample:GraphicsDemo.java

importjava.awt.*;

importjava.applet.*;

/*<appletcode=“GraphicsDemo”width=400height=400>

</applet>*/

publicclassGraphicsDemoextendsApplet

{

publicvoidpaint(Graphicsg)

{

setBackground(Color.pink);

setForeground(Color.blue);

Fontf=newFont(“Arial”,Font.ITALIC,10);

g.setFont(f);

g.drawLine(20,20,50,50);

g.drawString(“Line”,20,70);

g.drawRect(100,20,50,50);

g.drawString(“Rectangle”,100,100);

g.fillRoundRect(200,20,80,50,10,10);

g.drawString(“FilledRoundRect”,200,100);

g.drawOval(20,100,50,80);

g.drawString(“Oval”,25,200);

g.fillOval(100,130,50,50);

g.drawString(“Circle”,110,200);

g.drawString(“WELCOMETOGRAPHICS”,130,350);

}

}

Output:

PRACTICAL1:WRITEANAPPLETTHATDRAWSACIRCLE.THEDIMENSIONOFTHEAPPLETSHOULDBE500X300PIXELS.THECIRCLESHOULDBECENTEREDINTHEAPPLETANDHAVEARADIUSOF100PIXELS.DISPLAYYOURNAMECENTEREDINACIRCLE.(USINGDRAWOVAL()METHOD)SPECIFICOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

LearnaboutApplet.

DevelopanAppletPrograminJAVA

ExecuteanAppletPrograminJAVAusingAppletViewer

ExecuteanAppletinWebBrowser

LearnHowtouseGraphicsClasstodrawCircle.

LEARNINGOUTCOMESExplain&PracticeGraphicDrawingmethoddrawOval()todrawcircle.

ASSUMPTIONSOracleJDKinstalled

EditorLikenotepad,Jcreatoravailableforprogramdevelopment

ENVIRONMENTVARIABLESLIKEJAVA_HOME,PATH,CLASSPATHARECONFIGURED.CODE

importjava.awt.*;

importjava.applet.*;

/*

<appletcode=CenterCircleheight=500width=300>

</applet>

*/

publicclassCenterCircleextendsApplet

{

intw,h;

publicvoidinit()

{

w=getWidth();

h=getHeight();

}

publicvoidpaint(Graphicsg)

{

g.setColor(Color.blue);

g.drawOval((w/2)-50,(h/2)-50,100,100);

g.drawString(“J.B.Patel”,w/2,h/2);

g.setColor(Color.green);

showStatus(“Thisappletdrawscircleinthecenteroftheapplet”);

}

}

OUTPUT

PRACTICAL2:DRAWTENREDCIRCLESINAVERTICALCOLUMNINTHECENTEROFTHEAPPLET.SPECIFICOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

DevelopanAppletPrograminJAVA

ExecuteanAppletPrograminJAVAusingAppletviewerorwebbrowser

LearnHowtouseGraphicsClasstodrawCircle.

LEARNINGOUTCOMESExplain&PracticeGraphicDrawingmethoddrawOval()todrawcirclespatternandsetColor()tofillCircle.

ASSUMPTIONSOracleJDKinstalled

EditorLikenotepad,Jcreatoravailableforprogramdevelopment

EnvironmentvariableslikeJAVA_Home,Path,Classpathareconfigured.

CODE

importjava.awt.*;

importjava.applet.*;

/*

<appletcode=TenRedheight=500width=300>

</applet>

*/

publicclassTenRedextendsApplet

{

intw,h;

publicvoidinit()

{

w=getWidth();

h=getHeight();

}

publicvoidpaint(Graphicsg)

{

intcount=0;

g.setColor(Color.red);

for(inti=h;i>0;i=i-50)

{

g.fillOval(w/2-25,h-i,50,50);

count++;

if(count==10)break;

}

}

}

OUTPUT

PRACTICAL 3:BUILTANAPPLETTHATDISPLAYSAHORIZONTALRECTANGLEINITSCENTER.LETTHERECTANGLEFILLWITHCOLORFROMLEFTTORIGHT.SPECIFICOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

DevelopanAppletPrograminJAVA

ExecuteanAppletPrograminJAVAusingAppletviewerorwebbrowser

LearnHowtouseGraphicsClasstodrawandfillRectangles.

LEARNINGOUTCOMESExplain&PracticeGraphicDrawingmethoddrawRect()andfillRect()tocreateProgressbar.

ASSUMPTIONSOracleJDKinstalled

EditorLikenotepad,Jcreatoravailableforprogramdevelopment

EnvironmentvariableslikeJAVA_Home,Path,Classpathareconfigured.

CODE

importjava.awt.*;

importjava.applet.*;

/*

<appletcode=FillRectGradheight=500width=300>

</applet>

*/

publicclassFillRectGradextendsApplet

{

intw,h,x1=100,x2,y1=50,y2=150,flag=0;

Threadt;

Graphicsg1;

publicvoidinit()

{

w=getWidth();

h=getHeight();

}

publicvoidpaint(Graphicsg)

{

g.setColor(java.awt.Color.red);

g.drawRect(100,50,300,150);

for(x2=100;x2<=300;x2=x2+2)

{

try{

Thread.sleep(1000);

g.fillRect(x1,y1,x2,y2);

}catch(Exceptione)

{}

}

}

}

OUTPUT

PRACTICAL 4:WRITE AN APPLET THAT DISPLAYS THE POSITION OFTHEMOUSEATTHEUPPERLEFTCORNEROFTHEAPPLETWHEN IT ISDRAGGEDORMOVED.DRAWA10X10PIXELRECTANGLEFILEDWITH

BLACKATTHECURRENTMOUSEPOSITION.SPECIFICOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

DevelopanAppletPrograminJAVA

ExecuteanAppletPrograminJAVAusingAppletviewerorwebbrowser

LearnHowtohandleMouseEventsusingMouseListenerandMouseMotionListenersinterfaces.

LEARNINGOUTCOMESExplain&PracticeMouseEventslikeMove,DragandCurrentPositionusinginit(),repaint()methods.

ASSUMPTIONSOracleJDKinstalled

EditorLikenotepad,Jcreatoravailableforprogramdevelopment

EnvironmentvariableslikeJAVA_Home,Path,Classpathareconfigured.

CODE

importjava.awt.event.*;

importjava.applet.*;

importjava.awt.*;

/*

<appletcode=MousePositionheight=300width=400>

</applet>

*/

public class MousePosition extends Applet implements MouseListener,MouseMotionListener

{

Strings=””;

intmx=0,my=0;

publicvoidinit()

{

addMouseListener(this);

addMouseMotionListener(this);

}

publicvoidmouseClicked(MouseEventm)

{

}

publicvoidmouseEntered(MouseEventm)

{

}

publicvoidmouseExited(MouseEventm)

{

}

publicvoidmousePressed(MouseEventm)

{

}

publicvoidmouseReleased(MouseEventm)

{

}

publicvoidmouseDragged(MouseEventm)

{

mx=m.getX();

my=m.getY();

s=“Dragging:”;

repaint();

}

publicvoidmouseMoved(MouseEventm)

{

mx=m.getX();

my=m.getY();

s=“Moving:”;

repaint();

}

publicvoidpaint(Graphicsg)

{

g.drawString(“Mouse”+s+mx+”,”+my,10,10);

g.setColor(Color.red);

g.drawRect(mx,my,10,10);

}

}

OUTPUT:

WhenMoving WhenDragging

PRACTICAL 5: WRITE AN APPLET THAT CONTAINS ONE BUTTON.INITIALIZETHELABELONTHEBUTTONTO“START”,WHENTHEUSERPRESSES THE BUTTON CHANGE THE LABEL BETWEEN THESE TWO

VALUESEACHTIMETHEBUTTONISPRESSED.SPECIFICOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

DevelopaGUIAppletPrograminJAVAusingAWTButtonControl

ExecuteanAppletPrograminJAVAusingAppletviewerorwebbrowser

LearnHowtohandleAWTButtonEventsusingActionListenerinterfaces.

LEARNINGOUTCOMESExplain&PracticeAWTButtonEventslikeusingactionPerformed()methods.

ASSUMPTIONSOracleJDKinstalled

EditorLikenotepad,Jcreatoravailableforprogramdevelopment

EnvironmentvariableslikeJAVA_Home,Path,Classpathareconfigured.

CODE

importjava.awt.*;

importjava.applet.*;

importjava.awt.event.*;

importjava.lang.String;

/*<appletcode=ButtonsDemo.classwidth=300height=300></applet>*/

publicclassButtonsDemoextendsjava.applet.AppletimplementsActionListener{

Buttonb1;

publicvoidinit()

{

b1=newButton(“Start”);

add(b1);

b1.addActionListener(this);

}

publicvoidactionPerformed(ActionEvente)

{

if(e.getSource()==b1)

{

Strings;

s=b1.getLabel();

if(s==“Start”)

b1.setLabel(“Stop”);

else

b1.setLabel(“Start”);

}

}

}

OUTPUT:

When You Press StopButton

When You Press StartButton

PRACTICAL 6:WRITE AN APPLET THAT USES THEMOUSE LISTENER,WHICHOVERRIDESONLYTWOMETHODSWHICHAREMOUSEPRESSEDANDMOUSERELEASED.SPECIFICOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

DevelopanAppletPrograminJAVA

ExecuteanAppletPrograminJAVAusingAppletviewerorwebbrowser

LearnHowtohandleMouseEventsusingMouseListenerandMouseMotionListenersinterfaces.

LEARNINGOUTCOMESExplain&PracticeMouseEventslikePressandReleasedusingmousePressed(),mousePressed()methods.

ASSUMPTIONSOracleJDKinstalled

EditorLikenotepad,Jcreatoravailableforprogramdevelopment

EnvironmentvariableslikeJAVA_Home,Path,Classpathareconfigured.

CODE

importjava.awt.event.*;

importjava.applet.*;

importjava.awt.*;

/*

<appletcode=MouseStateheight=300width=400>

</applet>

*/

public class MouseState extends Applet implements MouseListener,MouseMotionListener

{

Strings=””;

intmx=0,my=0;

publicvoidinit()

{

addMouseListener(this);

addMouseMotionListener(this);

}

publicvoidmouseClicked(MouseEventm){}

publicvoidmouseEntered(MouseEventm){}

publicvoidmouseExited(MouseEventm){}

publicvoidmousePressed(MouseEventm)

{

mx=m.getX();

my=m.getY();

s=”Pressed:”;

repaint();

}

publicvoidmouseReleased(MouseEventm)

{

mx=m.getX();

my=m.getY();

s=”Released:”;

repaint();

}

publicvoidmouseDragged(MouseEventm){}

publicvoidmouseMoved(MouseEventm){}

publicvoidpaint(Graphicsg)

{

g.drawString(“Mouse”+s+mx+”,”+my,10,10);

g.setColor(Color.red);

g.drawRect(mx,my,10,10);

//g.drawString(“Mousemovingat:“+mx+”,”+my,20,40);

}

}

OUTPUT:

WhenYouPressMouse WhenYouReleaseMouse

EXERCISE:WRITEANAPPLETTHATDISPLAYSASIMPLEMESSAGE:“HELLOAPPLET”.

Code:

Output:

WRITEAJAVAPROGRAMTODRAWLINES,RECTANGLESANDOVALS.

Code:

Output:

WRITEANAPPLETTHATDRAWSAHUMANFACEWITHARCANDOVAL.

Code:

Output:

TODEVELOPAPROGRAMTOSETTHEGIVENSTRINGINADESIREDFONTANDCOLOR.(FONT:ARIEL,BOLDAND

POINTSIZE20,COLOR:PINK)

Code:

Output:

UNIT2

GENERALOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

LearnaboutWindowsAWTControls.

DevelopanAWTPrograminJAVA

ExecuteanAWTPrograminJAVA

LearnHowtouseGraphicsClasstodrawShapes.

LEARNINGOUTCOMESExplain&PracticeAWTControlsusingAppletsandFrames.

ASSUMPTIONSOracleJDKinstalled

EditorLikenotepad,Jcreatoravailableforprogramdevelopment

EnvironmentvariableslikeJAVA_Home,Path,Classpathareconfigured.

INTRODUCTION

AbstractWindowToolkitTheAWTcontainsnumerousclassesandmethodsthatallowustocreateandmanage

windows.AlthoughthemainpurposeoftheAWTistosupportappletwindows,itcanalsobeusedtocreatestand-alonewindowsthatruninaGUIenvironment,suchasWindows.

AWTClassesTheAWT classes are contained in the java.awt package. It is one of Java’s largest

packages. Fortunately, because it is logically organized in a top- down, hierarchicalfashion,itiseasiertounderstandandusethanyoumightatfirstbelieve.

AWTEventEncapsulates AWT events.AWTEventMulticasterDispatches events tomultiplelisteners.

BorderLayoutTheborderlayoutmanager. Border layouts use fivecomponents: North, South, East, West, andCenter.

ButtonCreatesapushbutton control.CanvasA blank, semantics-freewindow.

CardLayoutThe card layout manager.Card layouts emulate index cards. Only theoneontopisshowing.

CheckboxCreates a check box control.CheckboxGroupCreatesagroupofcheckboxcontrols.CheckboxMenuItemCreatesanon/offmenuitem.

ChoiceCreatesapop-uplist.

ColorManagescolorsinaportable,independentfashion.

ComponentAn abstract super-class for various AWTcomponents.ContainerAsubclassofComponentthatcan

components.

CursorEncapsulates a bitmappedcursor.DialogCreatesadialogwindow.

DimensionSpecifiesthedimensionsofan object. Thewidth is stored inwidth, andtheheightisstoredinheight.

EventEncapsulates events.EventQueueQueuesevents.

FileDialogCreatesawindowfromwhichafilecanbe selected. FlowLayoutTheflowlayoutmanager.Flowlayoutpositions

components left to right, top to bottom.FontEncapsulatesatypefont.

FontMetricsEncapsulates variousinformation related to a font. Thisinformation helps you display text in awindow.

FrameCreates a standardwindow thathasa titlebar,resizecorners,andamenubar.

GraphicsEncapsulates the graphicscontext. This context is used by the variousoutputmethodstodisplayoutputinawindow.

GraphicsDeviceDescribes agraphics device such as a screen or printer.GraphicsEnvironmentDescribesthecollectionofavailableFontand

GraphicsDeviceobjects.

GridBagConstraintsDefinesvariousconstraints

GridBagLayoutclass.

GridBagLayoutThe grid bag layoutmanager. Grid bag layout displayscomponentssubjecttotheconstraintsspecifiedbyGridBagConstraints.

GridLayoutThegridlayoutmanager.componentsinatwo-dimensionalgrid.

ImageEncapsulatesgraphicalimages.

InsetsEncapsulates the borders of a

container.LabelCreates a label that displays astring.

ListCreatesalistfromwhich theusercanchoose. SimilartothestandardWindowslistbox.

MediaTrackerManages mediaobjects. MenuCreates a pull-downmenu.MenuBarCreatesamenubar.

MenuComponentAn abstract class implemented byvariousmenuclasses.MenuItemCreatesamenuitem.

MenuShortcutEncapsulates akeyboard shortcutforamenuitem.Panel The simplest concrete subclassofContainer.

PointEncapsulates a Cartesian coordinate pair, storedinx

andy.

PolygonEncapsulates a polygon.PopupMenuEncapsulates a pop-upmenu.

PrintJob An abstract class that represents aprintjob.RectangleEncapsulatesarectangle.

RobotSupports automated testing of AWT- basedapplications.ScrollbarCreatesascrollbarcontrol.

ScrollPaneA container that provideshorizontal and/or vertical scroll bars foranothercomponent.

SystemColorContains the colors of

GUI widgets such as windows, scroll bars,text,andothers.

TextAreaCreates a multiline editcontrol. TextComponent A superclass forTextAreaandTextField.TextFieldCreates asingle-lineeditcontrol.

ToolkitAbstract class implemented bytheAWT.WindowCreates awindowwithnoframe,nomenubar,

WindowFundamentalsTheAWTdefineswindowsaccordingtoaclasshierarchythataddsfunctionalityand

specificitywitheachlevel.ThetwomostcommonwindowsarethosederivedfromPanel,whichisusedbyapplets,andthosederivedfromFrame,whichcreatesastandardwindow.Muchofthefunctionalityofthesewindowsisderivedfromtheirparentclasses.Thus,adescription of the class hierarchies relating to these two classes is fundamental to theirunderstanding.FigurebelowshowstheclasshierarchyforPanelandFrame.

WorkingwithFrameWindowsAftertheapplet,thetypeofwindowwewillmostoftencreateisderivedfromFrame.

Wewilluseittocreatechildwindowswithinapplets,andtop-levelorchildwindowsforapplications. It creates a standard-style window. Following are two of Frame’sconstructors:

Frame();

Frame(Stringtitle);

Thefirstformcreatesastandardwindowthatdoesnotcontainatitle.Thesecondformcreates a window with the title specified by title. Note that we cannot specify thedimensionsofthewindow.Instead,wemustsetthesizeofthewindowafterithasbeencreated.

CreatingaFrameWindowinanAppletThisexampleoverridestheappletwindow’sstart()andstop()methodssothatthey

showandhidethechildwindow,respectively.Italsocausesthechildwindowtobeshownwhenthebrowserreturnstotheapplet.

SampleFrame.java

/*

<appletcode=“AppletFrame”width=300height=50>

</applet>

*/

classSampleFrameextendsFrame

{

SampleFrame(Stringtitle)

{

super(title);

}

publicvoidpaint(Graphicsg)

{

g.drawString(“Thisisinframewindow”,10,40);

}

}

publicclassAppletFrameextendsApplet

{

Framef;

publicvoidinit()

{

f=newSampleFrame(“AFrameWindow”);

f.setSize(250,250);

f.setVisible(true);

}

publicvoidstart()

{

f.setVisible(true);

}

publicvoidstop()

{

f.setVisible(false);

}

publicvoidpaint(Graphicsg)

{

g.drawString(“Thisisinappletwindow”,10,20);

}

}

Output:

UsingAWTControls,LayoutManagersandMenusControlsarecomponents thatallowauser to interactwithhisapplication invarious

ways—forexample;acommonlyusedcontrolisthepushbutton.

ControlFundamentals

TheAWTsupportsthefollowingtypesofcontrols:

LabelsPushbuttonsCheckboxesChoicelistsListsScrollbarsTextAreaTextField

ThesecontrolsaresubclassesofComponent.

AddingandRemovingControls

Inordertoincludeacontrolinawindow,wemustaddittothewindow.So,wemustfirstcreateaninstanceofthedesiredcontrolandthenaddittoawindowbycallingadd(),whichisdefinedbyContainer.Theadd()methodhasseveralforms.Thefollowingformistheonethatisusedforthefirstpartofthischapter:

Componentadd(ComponentcompObj)

Here,compObjisaninstanceofthecontrolthatwewanttoadd.Areferenceto

compObjisreturned.Onceacontrolhasbeenadded,itwillautomaticallybevisiblewheneveritsparentwindowisdisplayed.Sometimeswewillwanttoremoveacontrolfromawindowwhenthecontrolisnolongerneeded.Fordoingthis,callremove().ThismethodisalsodefinedbyContainer.Ithasthisgeneralform:

voidremove(Componentobj)

Here, obj is a reference to the control thatwewant to remove.We can remove allcontrolsbycallingremoveAll().

RespondingtoControls

Except for labels,whicharepassivecontrols,allcontrolsgenerateeventswhen theyareaccessedbytheuser.Forexample,whentheuserclicksonapushbutton,aneventissent that identifies the push button. In general, our program simply implements theappropriateinterfaceandthenregistersaneventlistenerforeachcontrolthatweneedtomonitor.

LabelsLabeldefinesthefollowingconstructors:

Label();

Label(Stringstr);

Label(Stringstr,inthow);

WecansetorchangethetextinalabelbyusingthesetText()method.WecanobtainthecurrentlabelbycallinggetText().Thesemethodsareshownhere:

voidsetText(Stringstr);

StringgetText();

Toobtainthecurrentalignment,callgetAlignment().Themethodsareasfollows:

voidsetAlignment(inthow);

intgetAlignment();

Example:Thefollowingexamplecreatesthreelabelsandaddsthemtoanapplet.

//DemonstrateLabels.LabelDemo.java

importjava.awt.*;importjava.applet.*;

/*

<appletcode=“LabelDemo”width=300height=200>

</applet>

*/

publicclassLabelDemoextendsApplet

{

publicvoidinit()

{

Labelone=newLabel(“One”);Labeltwo=newLabel(“Two”);Labelthree=newLabel(“Three”);

//addlabelstoappletwindowadd(one);

add(two);

add(three);

}

}

Output:

ButtonsThemostwidelyusedcontrolisthepushbutton.Apushbuttonisacomponentthat

containsalabelandthatgeneratesaneventwhenitispressed.PushbuttonsareobjectsoftypeButton.Buttondefinesthesetwoconstructors:

Button();

Button(Stringstr);

Example:Usingbuttoncontrol

//ButtonDemo.java

importjava.awt.*;

importjava.applet.*;

/*

<appletcode=“ButtonDemo”width=250height=150>

</applet>

*/

publicclassButtonDemoextendsApplet

{

Stringmsg=””;

Buttonyes,no,maybe;

publicvoidinit()

{

yes=newButton(“Yes”);

no=newButton(“No”);

maybe=newButton(“Undecided”);

add(yes);add(no);add(maybe);

}

publicvoidpaint(Graphicsg)

{

g.drawString(msg,6,100);

}

}

Output:

CheckBoxesAcheckboxisacontrolthatisusedtoturnanoptiononoroff.Checkboxescanbe

used individuallyoraspartofagroup.Checkboxesareobjectsof theCheckboxclass.Checkboxsupportstheseconstructors:

Checkbox();

Checkbox(Stringstr);

Checkbox(Stringstr,booleanon)

Checkbox(Stringstr,booleanon,CheckboxGroupcbGroup);

Checkbox(Stringstr,CheckboxGroupcbGroup,booleanon)

Thefirstformcreatesacheckboxwhoselabelisinitiallyblank.Thestateofthecheckboxisunchecked.

Thesecondformcreatesacheckboxwhoselabelisspecifiedbystr.Thestateofthecheckboxisunchecked.

Thethirdformallowsustosettheinitialstateofthecheckbox.Ifonistrue,thecheckboxisinitiallychecked;otherwise,itiscleared.

The fourth and fifth forms create a check box whose label is specified by str andwhose group is specified by cbGroup. If this check box is not part of a group, thencbGroupmustbenull.Thevalueofondeterminestheinitialstateofthecheckbox.

In order to retrieve the current state of a check box, call getState( ). For setting itsstate, call setState( ).We can obtain the current label associated with a check box bycallinggetLabel().Forsettingthelabel,setLabel()isused.Thesemethodsareasfollows:

booleangetState();

voidsetState(booleanon);

StringgetLabel();

voidsetLabel(Stringstr);

Example:Demonstratecheckboxes.

//CheckboxDemo.java

importjava.awt.*;

importjava.applet.*;

/*

<appletcode=“CheckboxDemo”width=250height=200>

</applet>

*/

publicclassCheckboxDemoextendsApplet

{

Stringmsg=””;

CheckboxWin98,winNT,solaris,mac;

publicvoidinit()

{

Win98=newCheckbox(“Windows98/XP”,null,true);

winNT=newCheckbox(“WindowsNT/2000”);

solaris=newCheckbox(“Solaris”);

mac=newCheckbox(“MacOS”);

add(Win98);

add(winNT);

add(solaris);

add(mac);

}

publicvoidpaint(Graphicsg)

{

}

}

Output:

CheckboxGroup/OptionButtonOnlyonecheckboxinthegroupcanbecheckedatanyonetime.Thesecheckboxes

areoftencalled radiobuttons.Forcreatinga setofmutuallyexclusivecheckboxes,wemustfirstdefinethegrouptowhichtheywillbelongandthenspecifythatgroupwhenweconstructthecheckboxes. Check box groups are objects of typeCheckboxGroup.Onlythedefaultconstructorisdefined,whichcreatesanemptygroup.

We can determine which check box in a group is currently selected by callinggetSelectedCheckbox().WecansetacheckboxbycallingsetSelectedCheckbox().Thesemethodsareasfollows:

CheckboxgetSelectedCheckbox()

voidsetSelectedCheckbox(Checkboxwh)

Example:Hereisaprogramthatusescheckboxesthatarepartofagroup.

//CBGroup.java

importjava.awt.*;importjava.applet.*;

/*

<appletcode=“CBGroup”width=250height=200>

</applet>

*/

publicclassCBGroupextendsApplet

{

Stringmsg=””;

CheckboxWin98,winNT,solaris,mac;

CheckboxGroupcbg;

publicvoidinit()

{

cbg=newCheckboxGroup();

Win98=newCheckbox(“Windows98/XP”,cbg,true);

winNT=newCheckbox(“WindowsNT/2000”,cbg,false);

solaris=newCheckbox(“Solaris”,cbg,false);

mac=newCheckbox(“MacOS”,cbg,false);

add(Win98);

add(winNT);add(solaris);add(mac);

}

publicvoidpaint(Graphicsg)

{

msg=“Currentselection:“;

msg+=cbg.getSelectedCheckbox().getLabel();

g.drawString(msg,6,100);

}

}

Output:

ChoiceControlsTheChoice class is used to create a pop-up list of items fromwhich the usermay

choose.Choiceonlydefinesthedefaultconstructor,whichcreatesanemptylist.Inordertoaddaselectiontothelist,add()isused.Ithasthisgeneralform:

voidadd(Stringname)

Here,nameisthenameoftheitembeingadded.Inordertodeterminewhichitemiscurrentlyselected,wemaycalleitheranyofthefollowingmethods:

StringgetSelectedItem();

intgetSelectedIndex();

The getSelectedItem( ) method returns a string containing the name of the item.getSelectedIndex()returnstheindexoftheitem.Thefirstitemisatindex0.Bydefault,thefirstitemaddedtothelistisselected.Forobtainingthenumberofitemsinthelist,callgetItemCount( ).Wecan set the currently selected itemusing the select( )methodwitheither a zero-based integer index or a string that will match a name in the list. Thesemethodsareshownhere:

intgetItemCount();

voidselect(intindex);

voidselect(Stringname);

Given an index, we can obtain the name associated with the item at that index bycallinggetItem(),whichhasthisgeneralform:

StringgetItem(intindex);

Example:DemonstrateChoicelists.

//ChoiceDemo.java

importjava.awt.*;

importjava.applet.*;

/*

<appletcode=“ChoiceDemo”width=300height=180>

</applet>

*/

publicclassChoiceDemoextendsApplet

{

Choiceos,browser;Stringmsg=””;

publicvoidinit()

{

os=newChoice();

browser=newChoice();

os.add(“Windows 98/XP”); os.add(“Windows NT/2000”); os.add(“Solaris”);os.add(“MacOS”); browser.add(“Netscape 3.x”); browser.add(“Netscape 4.x”);browser.add(“Netscape5.x”);browser.add(“Netscape6.x”);

browser.add(“Internet Explorer 4.0”); browser.add(“Internet Explorer 5.0”);browser.add(“Internet Explorer 6.0”); browser.add(“Lynx 2.4”);browser.select(“Netscape4.x”);

add(os);

add(browser);

}

publicvoidpaint(Graphicsg)

{

}

}

Output:

ListsTheList classprovides a compact,multiple-choice, scrolling selection list.TheList

object canbeconstructed to showanynumberof choices in thevisibleWindow. It canalsobecreatedtoallowmultipleselections.Listprovidestheseconstructors:

List();

List(intnumRows);

List(intnumRows,booleanmultipleSelect);

ThefirstversioncreatesaListcontrolthatallowsonlyoneitemtobeselectedatanyonetime.Inthesecondform,thevalueofnumRowsspecifiesthenumberofentriesinthelist thatwillalwaysbevisible (otherscanbescrolled intoviewasneeded). In the thirdform,ifmultipleSelectistrue,thentheusermayselecttwoormoreitemsatatime.Ifitisfalse, thenonlyoneitemmaybeselected.Foraddingaselectiontothelist,wecancalladd().Ithasthefollowingtwoforms:

voidadd(Stringname);

voidadd(Stringname,intindex);

Here,nameisthenameoftheitemaddedtothelist.Thefirstformaddsitemstotheendofthelist.Thesecondformaddstheitemattheindexspecifiedbyindex.

For lists that allow multiple selection, we must use either getSelectedItems( ) orgetSelectedIndexes(),shownhere,todeterminethecurrentselections:

String[]getSelectedItems();

int[]getSelectedIndexes();

ThegetSelectedItems()returnsanarraycontainingthenamesofthecurrentlyselecteditems. getSelectedIndexes( ) returns an array containing the indexes of the currentlyselecteditems.Inordertoobtainthenumberofitemsinthelist,callgetItemCount().Wecansetthecurrentlyselecteditembyusingtheselect()methodwithazero-basedintegerindex.Thesemethodsareshownhere:

intgetItemCount();

voidselect(intindex);

Given an index, we can obtain the name associated with the item at that index bycallinggetItem(),whichhasthisgeneralform:

StringgetItem(intindex)

Here,indexspecifiestheindexofthedesireditem.

Example:ListDemonstration

//ListDemo.java

importjava.awt.*;

importjava.applet.*;

/*

<appletcode=“ListDemo”width=300height=180>

</applet>

*/

publicclassListDemoextendsApplet

{

Listos,browser;Stringmsg=””;publicvoidinit()

{

os = new List(4, true); browser = new List(4, false); os.add(“Windows 98/XP”);os.add(“Windows NT/2000”); os.add(“Solaris”); os.add(“MacOS”);browser.add(“Netscape 3.x”); browser.add(“Netscape 4.x”); browser.add(“Netscape5.x”);browser.add(“Netscape6.x”);

browser.add(“InternetExplorer4.0”);

browser.add(“Internet Explorer 5.0”); browser.add(“Internet Explorer 6.0”);browser.add(“Lynx2.4”);browser.select(1);

add(os);

add(browser);

}

publicvoidpaint(Graphicsg)

{

intidx[];

msg=“CurrentOS:“;

idx=os.getSelectedIndexes();

for(inti=0;i<idx.length;i++)

msg+=os.getItem(idx[i])+”“;

g.drawString(msg,6,120);

msg=“CurrentBrowser:“;

msg+=browser.getSelectedItem();

g.drawString(msg,6,140);

}

}

Output:

TextField

TextComponent

TextArea

TextField

Fig.Textcomponentshierarchy

The TextField class implements a single-line text-entry area, usually called an editcontrol.Textfieldsallowtheusertoenterstringsandtoeditthetextusingthearrowkeys,cut and paste keys, and mouse selections. TextField is a subclass of TextComponent.TextFielddefinesthefollowingconstructors:

TextField();

TextField(intnumChars);

TextField(Stringstr);

TextField(Stringstr,intnumChars);

Thefirstversioncreatesadefaulttextfield.ThesecondformcreatesatextfieldthatisnumChars characters wide. The third form initializes the text field with the stringcontainedinstr.Thefourthforminitializesatextfieldandsetsitswidth.TextField(andits superclass TextComponent) provides several methods that allow us to utilize a textfield.Inordertoobtainthestringcurrentlycontainedinthetextfield,wecanusegetText().Forsettingthetext,wecallsetText().Thesemethodsareasfollows:

StringgetText();

voidsetText(Stringstr);

Here,stristhenewstring.Theusercanselectaportionofthetextinatextfield.Also,wecanselectaportionoftextunderprogramcontrolbyusingselect().Ourprogramcanobtain the currently selected text by calling the getSelectedText( ). These methods areshownhere:

StringgetSelectedText();

voidselect(intstartIndex,intendIndex);

The getSelectedText( ) returns the selected text. The select( ) method selects thecharactersbeginningatstartIndexandendingatendIndex–1.Wecancontrolwhetherthecontents of a text fieldmay bemodified by the user by calling setEditable( ).We candetermineeditabilitybycallingisEditable().Thesemethodsareshownhere:

booleanisEditable()

voidsetEditable(booleancanEdit)

The isEditable( ) returns true if the text may be changed and false if not. InsetEditable(),ifcanEditistrue,thetextmaybechanged.Ifitisfalse,thetextcannotbealtered.Theremaybetimeswhenwewillwanttheusertoentertextthatisnotdisplayed,suchas apassword.Youcandisable theechoingof thecharacters as theyare typedbycallingsetEchoChar().Thismethod specifies a single character that theTextFieldwilldisplaywhencharactersareentered(thus,theactualcharacterstypedwillnotbeshown).WecancheckatextfieldtoseeifitisinthismodewiththeechoCharIsSet()method.We

canretrievetheechocharacterbycallingthegetEchoChar()method.Thesemethodsareasfollows:

voidsetEchoChar(charch);

booleanechoCharIsSet();

chargetEchoChar();

Here,chspecifiesthecharactertobeechoed.

Example:UsingTextField

//TextFieldDemo.java

importjava.awt.*;

importjava.applet.*;

/*

<appletcode=“TextFieldDemo”width=380height=150>

</applet>

*/

publicclassTextFieldDemoextendsApplet

{

TextFieldname,pass;

publicvoidinit()

{

Label namep = new Label(“Name: “, Label.RIGHT); Label passp = newLabel(“Password:“,Label.RIGHT);name=newTextField(12);

pass=newTextField(8);pass.setEchoChar(‘?’);add(namep);

add(name);

add(passp);

add(pass);

}

publicvoidpaint(Graphicsg)

{

}

}

Output:

TextAreaSometimesasinglelineoftextinputisnotenoughforagiventask.Tohandlethese

situations,theAWTincludesasimplemultilineeditorcalledTextArea.FollowingaretheconstructorsforTextArea:

TextArea();

TextArea(intnumLines,intnumChars);

TextArea(Stringstr);

TextArea(Stringstr,intnumLines,intnumChars);

TextArea(Stringstr,intnumLines,intnumChars,intsBars);

Here,numLinesspecifiestheheight,inlines,ofthetextarea,andnumCharsspecifiesitswidth,incharacters.Initialtextcanbespecifiedbystr.Inthefifthformwecanspecifythescrollbarsthatwewantthecontroltohave.sBarsmustbeoneofthesevalues:

SCROLLBARS_BOTH

SCROLLBARS_NONE

SCROLLBARS_HORIZONTAL_ONLY

SCROLLBARS_VERTICAL_ONLY

TextArea is a subclass of TextComponent. Therefore, it supports the getText( ),setText(), getSelectedText(), select(), isEditable( ), and setEditable( ) methodsdescribedintheprecedingsection.TextAreaaddsthefollowingmethods:

voidappend(Stringstr);

voidinsert(Stringstr,intindex);

voidreplaceRange(Stringstr,intstartIndex,intendIndex);

Theappend()methodappendsthestringspecifiedbystrtotheendofthecurrenttext.Theinsert()insertsthestringpassedinstratthespecifiedindex.Inordertoreplacetext,wecallreplaceRange().ItreplacesthecharactersfromstartIndextoendIndex–1,withthereplacementtextpassedinstr.Textareasarealmostself-containedcontrols.

Example:UsingTextAreaControl

//TextAreaDemo.java

importjava.awt.*;

importjava.applet.*;

/*

<appletcode=“TextAreaDemo”width=300height=250>

</applet>

*/

publicclassTextAreaDemoextendsApplet

{

publicvoidinit()

{

Stringval=“Therearetwowaysofconstructing”+“asoftwaredesign.\n”+

“Onewayistomakeitsosimple\n”+

“thatthereareobviouslynodeficiencies.\n”+

“And the otherway is tomake it so complicated\n” + “that there are no obviousdeficiencies.\n\n”+

”-C.A.R.Hoare\n\n”+

“There’sanoldstoryaboutthepersonwhowished\n”+

“his computer were as easy to use as his telephone.\n” + “That wish has cometrue,\n”+

“since I no longer know how to use my telephone.\n\n” + ” -Bjarne Stroustrup,AT&T,(inventorofC++)”;

TextAreatext=newTextArea(val,10,30);

add(text);

}

}

Output:

LayoutManagersAllofthecomponentsthatwehaveshownsofarhavebeenpositionedbythedefault

layoutmanager.A layoutmanagerautomaticallyarrangesourcontrolswithinawindowbyusingsometypeofalgorithm.

EachContainerobjecthasalayoutmanagerassociatedwithit.AlayoutmanagerisaninstanceofanyclassthatimplementstheLayoutManagerinterface.ThelayoutmanagerissetbythesetLayout()method.IfnocalltosetLayout()ismade,thenthedefaultlayoutmanagerisused.Wheneveracontainerisresized(orsizedforthefirst time), thelayoutmanagerisusedtopositioneachofthecomponentswithinit.

Fig.LayoutManagersatwork

ThesetLayout()methodhasthefollowinggeneralform:

voidsetLayout(LayoutManagerlayoutObj);

Here,layoutObjisareferencetothedesiredlayoutmanager.Ifwewishtodisablethelayoutmanagerandpositioncomponentsmanually,passnullforlayoutObj.Ifwedothis,wewillneedtodeterminetheshapeandpositionofeachcomponentmanually,usingthesetBounds()methoddefinedbyComponent.

Each layout manager keeps track of a list of components that are stored by theirnames. The layout manager is notified each time we add a component to a container.

Wheneverthecontainerneedstoberesized,thelayoutmanagerisconsultedviaitsminimumLayoutSize()andpreferredLayoutSize()methods.EachcomponentthatisbeingmanagedbyalayoutmanagercontainsthegetPreferredSize()andgetMinimumSize()methods.These return the preferred and minimum size required todisplayeachcomponent. Javahas severalpredefinedLayoutManagerclasses, severalofwhicharedescribednext.Wecanusethelayoutmanagerthatbestfitsourapplication.

FlowLayoutFlowLayoutisthedefaultlayoutmanager.Componentsarelaidoutfromtheupper-left

corner, left torightandtoptobottom.Whennomorecomponentsfitonaline,thenextoneappearson thenext line.Asmall space is leftbetweeneachcomponent, aboveandbelow,aswellasleftandright.HerearetheconstructorsforFlowLayout:

FlowLayout();

FlowLayout(inthow);

FlowLayout(inthow,inthorz,intvert);

The first form creates the default layout,which centers components and leaves fivepixelsofspacebetweeneachcomponent.Thesecondformletsusspecifyhoweachlineisaligned.Validvaluesforhowareasfollows:

FlowLayout.LEFT

FlowLayout.CENTER

FlowLayout.RIGHT

Thesevaluesspecifyleft,center,andrightalignment,respectively.Thethirdformallowsustospecifythehorizontalandverticalspaceleftbetweencomponentsinhorzandvert,respectively.HereisaversionoftheCheckboxDemoappletshownearlier,modifiedsothatitusesleft-alignedflowlayout.

//FlowLayoutDemo.java

importjava.awt.*;

importjava.applet.*;

/*

<appletcode=“FlowLayoutDemo”width=400height=200>

</applet>

*/

publicclassFlowLayoutDemoextendsApplet

{

Stringmsg=””;

CheckboxWin98,winNT,solaris,mac;

publicvoidinit()

{

Win98=newCheckbox(“Windows98/XP”,null,true);

winNT=newCheckbox(“WindowsNT/2000”);

solaris=newCheckbox(“Solaris”);

mac=newCheckbox(“MacOS”);

setLayout(newFlowLayout(FlowLayout.CENTER));

add(Win98);add(winNT);add(solaris);add(mac);

}

publicvoidpaint(Graphicsg)

{

}

}

Output:

BorderLayoutTheBorderLayoutclassimplementsacommonlayoutstylefortop-levelwindows.It

hasfournarrow,fixed-widthcomponentsattheedgesandonelargeareainthecenter.Thefoursidesarereferredtoasnorth,south,east,andwest.Themiddleareaiscalledthecenter.HerearetheconstructorsdefinedbyBorderLayout:

BorderLayout();

BorderLayout(inthorz,intvert);

Thefirstformcreatesadefaultborderlayout.Thesecondallowsustospecifythehorizontalandverticalspaceleftbetweencomponentsinhorzandvert,respectively.BorderLayoutdefinesthefollowingconstantsthatspecifytheregions:

BorderLayout.CENTER

BorderLayout.SOUTH

BorderLayout.EAST

BorderLayout.WEST

BorderLayout.NORTH

Whenaddingcomponents,wewillusetheseconstantswiththefollowingformofadd(),whichisdefinedbyContainer:

voidadd(ComponentcompObj,Objectregion);

Here,compObjisthecomponenttobeadded,andregionspecifieswherethecomponentwillbeadded.HereisanexampleofaBorderLayoutwithacomponentineachlayoutarea:

//BorderLayoutDemo.java

importjava.awt.*;importjava.applet.*;

/*

<appletcode=“BorderLayoutDemo”width=400height=200>

</applet>

*/

publicclassBorderLayoutDemoextendsApplet

{

publicvoidinit()

{

setLayout(newBorderLayout());

add(newButton(“Thisisacrossthetop.”),BorderLayout.NORTH);

add(newLabel(“Thefootermessagemightgohere.”),BorderLayout.SOUTH);

add(newButton(“Right”),BorderLayout.EAST);

add(newButton(“Left”),BorderLayout.WEST);

Stringmsg=“Thereasonablemanadapts”+

“himselftotheworld;\n”+

“the unreasonable one persists in ” + “trying to adapt the world to himself.\n” +“Thereforeallprogressdepends”+

“ontheunreasonableman.\n\n”+

”-GeorgeBernardShaw\n\n”;

add(newTextArea(msg),

BorderLayout.CENTER);

}

}

Output:

PRACTICAL 7:WRITEAPROGRAMTHATHASONLYONEBUTTONINTHEFRAME,CLICKINGONTHEBUTTONCYCLESTHROUGHTHECOLORS:RED->GREEN->BLUE->ANDSOON.ONECOLORCHANGEPERCLICK. (USE GETBACKGROUND() METHOD TO GET THE CURRENTCOLOR)SPECIFICOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

DevelopanAWTPrograminJAVAusingButtonControl

LearnHowtohandleButtonEventsusingActionListenerinterfaces.

LEARNINGOUTCOMESExplain&PracticeButtonEvents.

ASSUMPTIONSOracleJDKinstalled

EditorLikenotepad,Jcreatoravailableforprogramdevelopment

EnvironmentvariableslikeJAVA_Home,Path,Classpathareconfigured.

CODE

importjava.awt.*;

importjava.applet.*;

importjava.awt.event.*;

importjava.lang.String;

classChangeColorextendsAppletimplementsActionListener{

Buttonb1;

publicvoidinit()

{

b1=newButton(“ChangeColor”);

add(b1);

b1.addActionListener(this);

}

publicvoidactionPerformed(ActionEvente)

{

if(e.getSource()==b1)

{

Strings;

s=b1.getBackground();

if(s==“ChangeColor”)

{

this.setBackground(Color.RED);

b1.setLabel(“Green”);

}

if(s==“Green”)

{

this.setBackground(Color.GREEN);

b1.setLabel(“Blue”);

}

if(s==“Blue”)

{

this.setBackground(Color.BLUE);

b1.setLabel(“ChangeColor”);

}

}

}

}

publicclassColorPickerDemoextendsFrame

{

publicstaticvoidmain(String[]args)

{

Framef=newFrame(“ColorPickerDemo”);

ChangeColorc=newChangeColor();

c.init();

f.add(“Center”,c);

f.pack();

f.show();

}

}

OUTPUT:

PRACTICAL8:WRITEANAPPLETTHATCONTAINSTHREECHECKBOXESAND30X30PIXELCANVAS.THETHREECHECKBOXESSHOULDBELABELED“RED”,”GREEN”,”BLUE”.THESELECTIONOFTHECHECKBOXESDETERMINESTHECOLOROFTHECANVAS.FOREXAMPLE,IFTHEUSERSELECTSBOTH“RED”AND“BLUE”,THECANVASSHOULDBEPURPLE.SPECIFICOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

DevelopanAWTPrograminJAVAusingCheckboxandCanvasControl

LearnHowtohandleCheckboxEventsusingItemListenerinterfaces.

LEARNINGOUTCOMESExplain&PracticeCheckboxEvents.

ASSUMPTIONSOracleJDKinstalled

EditorLikenotepad,Jcreatoravailableforprogramdevelopment

EnvironmentvariableslikeJAVA_Home,Path,Classpathareconfigured.

CODE:

importjava.awt.*;

importjava.applet.*;

importjava.awt.event.*;

importjava.lang.String;

publicclassCanvasColorDemoextendsAppletimplementsItemListener

{

Checkboxch1,ch2,ch3;

intc1,c2,c3;

//c1=c2=c3=0;

Canvasc=newCanvas();

publicvoidinit()

{

setLayout(newGridLayout(1,4));

//ColorGroup=newCheckboxGroup();

ch1=newCheckbox(“RED”,false);

ch2=newCheckbox(“GREEN”,false);

ch3=newCheckbox(“BLUE”,false);

add(ch1);

add(ch2);

add(ch3);

ch1.addItemListener(this);

ch2.addItemListener(this);

ch3.addItemListener(this);

c.setBackground(Color.CYAN);

c.setVisible(true);

add(c);

}

publicvoiditemStateChanged(ItemEvente)

{

if(e.getSource()==ch1)

if(c1!=255)

c1=255;

else

c1=0;

if(e.getSource()==ch2)

if(c2!=255)

c2=255;

else

c2=0;

if(e.getSource()==ch3)

if(c3!=255)

c3=255;

else

c3=0;

c.setBackground(newColor(c1,c2,c3));

repaint();

}

}

OUTPUT:

PRACTICAL9:CREATEANAPPLICATIONTHATDISPLAYSAFRAME

WITHAMENUBAR.WHENAUSERSELECTSANYMENUORMENUITEM,DISPLAYTHATSELECTIONONATEXTAREAINTHECENTEROFTHEFRAME

SPECIFICOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

DevelopanAWTPrograminJAVAusingMenuandTextArea

LearnHowtohandleMenuEventsusingActionListenerinterfaces.

LEARNINGOUTCOMESExplain&PracticeMenuEvents.

ASSUMPTIONSOracleJDKinstalled

EditorLikenotepad,Jcreatoravailableforprogramdevelopment

EnvironmentvariableslikeJAVA_Home,Path,Classpathareconfigured.

CODE:

/*MenuDemo.java*/

importjava.awt.*;

importjava.awt.event.*;

importjava.applet.*;

publicclassMenuDemoextendsAppletimplementsActionListener

{

privateTextFieldmyTextField;

privateFramemyFrame;

publicvoidinit()

{

myFrame=newFrame();

myFrame.addWindowListener(newTerminator());

myTextField=newTextField(20);

add(myTextField);

myFrame.setBounds(200,200,300,300);

//placemyMenuBarattopofmyFrame

MenuBarmyMenuBar=newMenuBar();

myFrame.setMenuBar(myMenuBar);

MenufileMenu=newMenu(“File”);

myMenuBar.add(fileMenu);

MenueditMenu=newMenu(“Edit”);

myMenuBar.add(editMenu);

MenuItemmyMenuItem;

myMenuItem=newMenuItem(“Open”);

myMenuItem.addActionListener(this);

fileMenu.add(myMenuItem);

myMenuItem=newMenuItem(“Close”);

myMenuItem.addActionListener(this);

fileMenu.add(myMenuItem);

myMenuItem=newMenuItem(“Undo”);

myMenuItem.addActionListener(this);

editMenu.add(myMenuItem);

myFrame.show();

}

publicvoidactionPerformed(ActionEvente)

{

if(e.getSource()instanceofMenuItem)

myTextField.setText(“YourChoice:”

+e.getActionCommand());

}

publicclassTerminator

extendsWindowAdapter

{

publicvoidwindowClosing(WindowEvente)

{

myFrame.dispose();

//useSystem.exit(0)forapplications

}

}

}

OUTPUT:

PRACTICAL10:WRITEANAPPLETTHATDRAWSTWOSETSOFEVER-DECREASINGRECTANGLESONEINOUTLINEFORMANDONEFILLEDALTERNATELYINBLACKANDWHITE.

SPECIFICOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

DevelopanAWTPrograminJAVAusingGraphicsClassMethodslikedrawRect()andfillRect()

LEARNINGOUTCOMESExplain&PracticeGraphicsClassMethods.

ASSUMPTIONSOracleJDKinstalled

EditorLikenotepad,Jcreatoravailableforprogramdevelopment

EnvironmentvariableslikeJAVA_Home,Path,Classpathareconfigured.

CODE:

importjava.awt.*;

importjava.awt.event.*;

importjava.applet.*;

publicclassRectAppletextendsApplet

{

publicstaticfinalintW=200;

publicstaticfinalintH=200;

publicvoidpaint(Graphicsg)

{

g.setColor(Color.BLACK);

g.fillRect(0,0,getWidth(),getHeight());

g.setColor(Color.WHITE);

for(intx=0;x<getWidth()/2;x+=5)

{

intx1=(getWidth()/2)-x;

inty1=(getHeight()/2)-x;

g.drawRect(x1,y1,x*2,x*2);

}

}

publicstaticvoidmain(Stringargs[])

{

Appletapplet=newRectApplet();

Frameframe=newFrame();

frame.addWindowListener(newWindowAdapter()

{

publicvoidwindowClosing(WindowEvente)

{

System.exit(0);

}

});

frame.add(applet);

frame.setSize(W,H);

frame.show();

}

}

OUTPUT:

EXERCISE:

DEVELOPANAPPLETTODISPLAYTHEMESSAGE“HAPPYNEWYEAR”WITHINATEXTFIELD.

Code:

Output:

EXTENDTHEPREVIOUSPROGRAMSOTHATTHEMESSAGE“HAPPYNEWYEAR”WILLAPPEARWITHINATEXTFIELDWHENTHEBUTTONWITHTHECAPTION“YEAR”ISPUSHED,WHILETHEMESSAGE“HAPPYNEWMILLENIUM”WILLAPPEARWITHINTHETEXTFIELDWHENTHEBUTTONWITHTHECAPTION“MILLENIUM”ISPUSHED.

Code:

Output:

BUILDANAPPLETTHATRECEIVESTHERADIUSOFACIRCLETHROUGHATEXTFIELDANDCOMPUTESTHEAREAWHENTHEBUTTON“AREA”ISPUSHED.THEAREASHOULDAPPEARINASEPERATETEXTFIELD.THEFIRSTTEXTFIELDSHOULDBEPRECEEDEDBYTHELABEL“ENTER

THERADIUS”,WHILETHESECONDTEXTFIELDSHOULDBEPRECEEDEDBYTHELABEL“AREA

ISEQUALTO”.

Code:

Output:

CREATETWOCHECKBOXESWITHTHECAPTION“COM”AND“COBRA”.CREATETWOTEXTFIELDS.USETHEFIRSTTOINDICATETHESTATUSOFTHEFIRSTCHECKBOXANDTHESECONDTEXTFIELDTOINDICATETHESTATUSOFTHESECONDCHECKBOX.

Code:

Output:

WRITEANAPPLETTODISPLAYFOURRADIOBUTTONSWITHTHECAPTIONS“SANDWICH1”,“SANDWICH2”,“SANDWICH3”AND“SANDWICH4”.CREATEATEXTFIELDANDUSEITTOINDICATEWHICHDISHISSELECTED.

Code:

Output:

CREATEACHOICECONTROLTOSELECTONEOFTHEFOURFONTS“TIMES”,“SARIF”,“SANSARIF”AND“ROMAN”.CREATEANOTHERCHOICECONTROLTOSELECTONOFTHEFIVECOLOURSGREEN,RED,YELLOW,WHITEANDORANGE.MAKEPROVISIONTOREPORTTHESELECTEDCOLOURINTHEFORMOFALABEL.

Code:

Output:

AMENUBARCONTAINS3MENUSNAMEDSALESFILE1,SALESFILE2,ANDSALESFILE3.EACH

ONEOFTHESE3MENUSHASTHE3OPTIONSNAMEDCREATE,UPDATEANDPRINT.WRITEANAPPLETFORCREATINGANDDISPLAYINGALLTHE3MENUSWITHTHEIROPTIONS.

Code:

Output:

UNIT3

GENERALOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

LearnhowtouseJDBCtoconnectdatabase.

DevelopandexecuteaJDBCapplicationtocreate/read/update/deleterecordsintodatabase.

LearnhowtouseJDBCAPIandJDBCDriversfordatabaefunctions.

LEARNINGOUTCOMESExplainJDBCconceptsandPracticeJDBCprograms.

ASSUMPTIONSOracleJDKinstalled,MySQLJavaConnectorinstalledandconfigured.

EditorLikenotepad,Jcreatoravailableforprogramdevelopment

EnvironmentvariableslikeJAVA_Home,Path,Classpathareconfigured.

INTRODUCTIONJDBCstandsforJavaDatabaseConnectivity,whichisastandardJavaAPIfor

database-independentconnectivitybetweentheJavaprogramminglanguageandawiderangeofdatabases.

TheJDBClibraryincludesAPIsforeachofthetaskscommonlyassociatedwithdatabaseusage:

MakingaconnectiontoadatabaseCreatingSQLorMySQLstatementsExecutingthatSQLorMySQLqueriesinthedatabaseViewing&Modifyingtheresultingrecords

Thebasicstepstogetyourprogramupandrunningare:

LoadthedriverandregisteritwiththedrivermanagerConnecttoadatabaseCreateastatementExecuteaqueryandretrievetheresults,ormakechangestothedatabaseDisconnectfromthedatabase

Steps1and2aretheonlyDBMS-specificsteps.

HereisthecodethatloadsthedriverandregistersitwiththeJDBCdrivermanager:

DriverManager.registerDriver(newcom.mysql.jdbc.Driver());

Hereisanotherwayofdoingtheabove:

Class.forName(“com.mysql.jdbc.Driver”);

Followingaredriverstringforsomeofthepopulardatabases,

MySQLJDBCConnectionURL:jdbc:mysql://hostname:3306/–3306ismysqldefaultport

JavaDBConnectionURL:jdbc:derby:testdb;create=true

MicrosoftSQLServerJDBCConnectionURL:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=northwind

OracleJDBCconnectionURL:jdbc:oracle:thin:@hostname:1521:MyDatabase

ConnectingtoaDatabaseTheDriverManagerclassprovidesthestaticgetConnection()methodforopeninga

databaseconnection.BelowisthemethoddescriptionforgetConnection():public static Connection getConnection(String url, String userid, String password)

throwsSQLException

GettingconnectionConnectionconnection=DriverManager.getConnection(“jdbc:jdbcDriver:database”,

username,password);

QueryexecutionandgettingresultStatementstatement=connection.createStatement();

ResultSetresultSet=statement.executeQuery(“SELECT*FROMtable”);

ParsingtheresultfromResultSetwhile(resultSet.next()){

intfield1=rs.getInt(“field1”);

Stringfield2=rs.getString(“field2”);

}

PRACTICAL 11: WRITE A DATABASE APPLICATION THAT USES ANYJDBCDRIVER.SPECIFICOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

LearnhowtouseJDBCtoconnecttodatabase.

LearnhowtouseJDBCAPIandJDBCDriversfordatabaefunctions.

LEARNINGOUTCOMESExplainJDBCconceptsandPracticeJDBCprogramstoconnecttoMySQLDatabase.

ASSUMPTIONSOracleJDKinstalled,MySQLJavaConnectorinstalledandconfigured.

EditorLikenotepad,Jcreatoravailableforprogramdevelopment

EnvironmentvariableslikeJAVA_Home,path,classpathareconfigured.

CODE

//STEP1.Importrequiredpackages

importjava.sql.*;

publicclassJDBCExample{

//JDBCdrivernameanddatabaseURL

staticfinalStringJDBC_DRIVER=“com.mysql.jdbc.Driver”;

staticfinalStringDB_URL=“jdbc:mysql://localhost/”;

//Databasecredentials

staticfinalStringUSER=“root”;

staticfinalStringPASS=””;

publicstaticvoidmain(String[]args){

Connectionconn=null;

Statementstmt=null;

try{

//STEP2:RegisterJDBCdriver

Class.forName(“com.mysql.jdbc.Driver”);

//STEP3:Openaconnection

System.out.println(“Connectingtodatabase…”);

conn=DriverManager.getConnection(DB_URL,“USER”,“PASS”);

//STEP4:Executeaquery

System.out.println(“Creatingdatabase…”);

stmt=conn.createStatement();

Stringsql=“CREATEDATABASESTUDENTS”;

stmt.executeUpdate(sql);

System.out.println(“Databasecreatedsuccessfully…”);

}catch(SQLExceptionse){

//HandleerrorsforJDBC

se.printStackTrace();

}catch(Exceptione){

//HandleerrorsforClass.forName

e.printStackTrace();

}finally{

//finallyblockusedtocloseresources

try{

if(stmt!=null)

stmt.close();

}catch(SQLExceptionse2){

}//nothingwecando

try{

if(conn!=null)

conn.close();

}catch(SQLExceptionse){

se.printStackTrace();

}//endfinallytry

}//endtry

System.out.println(“Goodbye!”);

}//endmain

}//endJDBCExample

OUTPUT:

Connectingtodatabase…

Creatingdatabase…

Databasecreatedsuccessfully…

Goodbye!

Processcompleted.

PRACTICAL12:DEVELOPAUITHATPERFORMSTHEFOLLOWINGSQLOPERATIONS:1)INSERT2)DELETE3)UPDATE.SPECIFICOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

LearnhowtouseJDBCtoperformCRUDOperation(Create/Read/Update/Delete)

LearnhowtouseJDBCAPIandJDBCDriversfordatabaefunctions.

LEARNINGOUTCOMESExplainJDBCconceptsandPracticedatabaseoperationsusingJDBC.

ASSUMPTIONSOracleJDKinstalled,MySQLJavaConnectorinstalledandconfigured.

EditorLikenotepad,Jcreatoravailableforprogramdevelopment

EnvironmentvariableslikeJAVA_Home,path,classpathareconfigured.

CODE

importjava.awt.Container;

importjava.awt.GridLayout;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.ResultSet;

importjava.sql.SQLException;

importjava.sql.Statement;

importjavax.swing.BoxLayout;

importjavax.swing.JButton;

importjavax.swing.JFrame;

importjavax.swing.JLabel;

importjavax.swing.JPanel;

importjavax.swing.JTextField;

publicclassJDBCCRUDimplementsActionListener{

JLabellblFname,lblLname,lblf,lbll;

JLabellblfVal,lbllVal;

JTextFieldtxtFname,txtLname;

JButtonbtnInsert,btnUpdate,btnDelete,btnPrev,btnNext,btnClear;

Connectioncon;

ResultSetrs;

publicstaticvoidmain(String[]args){

JDBCCRUDobj=newJDBCCRUD();

obj.createUI();

obj.connect();

}

privatevoidcreateUI()

{

JFrameframe=newJFrame(“JDBCCREATE/READ/UPDATE/DELETE”);

//LayoutofMainWindow

Containerc=frame.getContentPane();

c.setLayout(newBoxLayout(c,BoxLayout.Y_AXIS));

lblFname=newJLabel(“FirstName:”);

lblLname=newJLabel(“LastName:”);

txtFname=newJTextField(””,15);//Toadjustwidth

txtLname=newJTextField();

JPanelpnlInput=newJPanel(newGridLayout(4,2));

pnlInput.add(lblFname);

pnlInput.add(txtFname);

pnlInput.add(lblLname);

pnlInput.add(txtLname);

btnInsert=newJButton(“Insert”);

btnInsert.addActionListener(this);

btnUpdate=newJButton(“Update”);

btnUpdate.addActionListener(this);

btnDelete=newJButton(“Delete”);

btnDelete.addActionListener(this);

btnClear=newJButton(“Clear”);

btnClear.addActionListener(this);

JPanelpnlButton=newJPanel(newGridLayout(1,4));

pnlButton.add(btnInsert);

pnlButton.add(btnUpdate);

pnlButton.add(btnDelete);

pnlButton.add(btnClear);

JPanelpnlAns=newJPanel(newGridLayout(4,2));

lblf=newJLabel(“FirstName:”);

lbll=newJLabel(“LastName:”);

lblfVal=newJLabel(””);

lbllVal=newJLabel(””);

pnlAns.add(lblf);

pnlAns.add(lblfVal);

pnlAns.add(lbll);

pnlAns.add(lbllVal);

btnPrev=newJButton(”<<“);

btnPrev.setActionCommand(“Prev”);

btnPrev.addActionListener(this);

btnNext=newJButton(”>>“);

btnNext.setActionCommand(“Next”);

btnNext.addActionListener(this);

JPanelpnlNavigate=newJPanel(newGridLayout(1,2));

pnlNavigate.add(btnPrev);

pnlNavigate.add(btnNext);

frame.add(pnlInput);

frame.add(pnlButton);

frame.add(pnlAns);

frame.add(pnlNavigate);

frame.pack();

frame.setVisible(true);

}

@Override

publicvoidactionPerformed(ActionEventevt){

Stringcmd=evt.getActionCommand();

if(cmd.equals(“Insert”))

{

insertData();

}elseif(cmd.equals(“Update”))

{

updateData();

}elseif(cmd.equals(“Delete”))

{

deleteData();

}elseif(cmd.equals(“Prev”))

{

previous();

}elseif(cmd.equals(“Next”))

{

next();

}elseif(cmd.equals(“Clear”))

{

clearControls();

}

}

privatevoidconnect()

{

try

{

Class.forName(“com.mysql.jdbc.Driver”);

con=DriverManager.getConnection(“jdbc:mysql://localhost/students”,“root”,””);

}

catch(Exceptione)

{

System.out.println(“Unabletoconnect”);

}

}

privatevoiddisconnect()

{

try

{

con.close();

}

catch(Exceptione){}

}

privatevoidinsertData()

{

try

{

String sql = “Insert Into StudentData(FName,LName) ” +“Values(’”+txtFname.getText()+”’,’”+txtLname.getText()+”’)”;

Statementstatement=con.createStatement();

statement.execute(sql);

createMessageBox(“InsertedSuccessfully”);

clearControls();

rs.close();

rs=null;

}

catch(Exceptione)

{

createMessageBox(e.getMessage());

}

}

privatevoidupdateData()

{

try

{

String sql=“UpdateStudentDataSetLName=’”+txtLname.getText()+“‘WhereFName=’”+txtFname.getText()+”’”;

Statementstatement=con.createStatement();

intcount=statement.executeUpdate(sql);

createMessageBox(“UpdatedSuccessfully”);

clearControls();

rs.close();

rs=null;

}

catch(Exceptione)

{

createMessageBox(e.getMessage());

}

}

privatevoiddeleteData()

{

try

{

String sql = “delete from StudentData where FName =’”+txtFname.getText()+”’”;

Statementstatement=con.createStatement();

//statement.execute(sql);

statement.executeUpdate(sql);

createMessageBox(“Recordof“+txtFname.getText()+”DeletedSuccessfully”);

clearControls();

rs.close();

rs=null;

}

catch(Exceptione)

{

createMessageBox(e.getMessage());

}

}

privatevoidprevious()

{

try

{

if(rs==null)

{

Stringsql=“SelectFName,LNamefromStudentData”;

Statement statement =con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

rs=statement.executeQuery(sql);

}

if(rs.previous()&&!rs.isBeforeFirst())

{

populateControls();

}

}

catch(Exceptione)

{

e.printStackTrace();

}

}

privatevoidnext()

{

try

{

if(rs==null)

{

Stringsql=“SelectFName,LNamefromStudentData”;

Statement statement =con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

rs=statement.executeQuery(sql);

}

if(rs.next()&&!rs.isAfterLast())//AfterLastwasgivinginvalidcursorstateerror

{

populateControls();

}

}

catch(Exceptione)

{

e.printStackTrace();

}

}

privatevoidcreateMessageBox(Stringmsg)

{

JFrameframe=newJFrame(“Result”);

JLabellbl=newJLabel(msg);

frame.add(lbl);

frame.setSize(200,200);

frame.setVisible(true);

}

privatevoidclearControls()

{

Stringempty=””;

txtFname.setText(empty);

txtLname.setText(empty);

lblfVal.setText(empty);

lbllVal.setText(empty);

}

privatevoidpopulateControls()

{

try{

lblfVal.setText(rs.getString(“fName”));

lbllVal.setText(rs.getString(“lName”));

txtFname.setText(lblfVal.getText());

txtLname.setText(lbllVal.getText());

}

catch(SQLExceptione)

{

e.printStackTrace();

}

}

}

OUTPUT

JDBCInsertOperation

Message when u pressInsertButton

JDBCUpdateOperation

ChangeThakkartoPatel Message when u pressUpdateButton

JDBCDeleteOperation

Navigate to Sanjay DhamiRecord

Message when u pressUpdateButton

PRACTICAL13:WRITEAPROGRAMTOPRESENTASETOFCHOICEFORUSERTOSELECTAPRODUCT&DISPLAYTHEPRICEOFPRODUCT.SPECIFICOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

DevelopaJDBCPrograminJAVAusingMySQLasbackend.

LearnHowtohandleJComboBoxControlEventsusingItemListenerinterface.

LEARNINGOUTCOMESExplain&PracticefetchingvaluesbasedonselectioninJComboBoxEvents.

ASSUMPTIONSOracleJDKinstalled

EditorLikenotepad,Jcreatoravailableforprogramdevelopment

EnvironmentvariableslikeJAVA_Home,Path,Classpathareconfigured.

FollowingdatabaseandtablecreatedinMySQL

Database:ProductInfo

Table:ProductTable{ProductNameChar(50),PriceNumber}

ProductName Price

CD 30

PenDrive 250

CODE

importjava.awt.Container;

importjava.awt.GridLayout;

importjava.awt.event.ItemEvent;

importjava.awt.event.ItemListener;

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.ResultSet;

importjava.sql.SQLException;

importjava.sql.Statement;

importjavax.swing.BoxLayout;

importjavax.swing.JButton;

importjavax.swing.JFrame;

importjavax.swing.JLabel;

importjavax.swing.JPanel;

importjavax.swing.JTextField;

importjavax.swing.JComboBox;

publicclassJDBCPriceDemo{

JLabellblItem;

JComboBoxcmbItemList;

JLabellblSelectedItem,lblItemPrice;

Stringproduct;

intprice;

Connectioncon;

ResultSetrs1;

ResultSetrs2;

publicstaticvoidmain(String[]args){

JDBCPriceDemoobj=newJDBCPriceDemo();

obj.connect();

obj.createUI();}

privatevoidcreateUI()

{

JFrameframe=newJFrame(“JDBCProductPriceDemo”);

frame.setLayout(newGridLayout(3,3));

lblItem=newJLabel(“SelectProducttocheckprice:”);

JComboBoxcmbItemList=newJComboBox();

try{

Statementstmt=con.createStatement();

Stringquery=“SELECT*FROMProductTable”;

rs1=stmt.executeQuery(query);

while(rs1.next())

{

cmbItemList.addItem(rs1.getString(“ProductName”));

}

stmt.close();

rs1.close();

}

catch(Exceptione){}

lblSelectedItem=newJLabel(“Item:”);

lblItemPrice=newJLabel(“Price:”);

frame.add(lblItem);

frame.add(cmbItemList);

frame.add(lblSelectedItem);

frame.add(lblItemPrice);

ItemListeneritemListener=newItemListener(){

publicvoiditemStateChanged(ItemEventitemEvent){

product=itemEvent.getItem().toString();

try{

Statementst=con.createStatement();

rs2=st.executeQuery(“SELECTPriceFROMProductTableWHEREProductName=’”+product+”’”);

if(rs2!=null)

{

rs2.next();

lblSelectedItem.setText(product.toString());

lblItemPrice.setText(String.valueOf(rs2.getInt(1)));

rs2.close();

}

}

catch(SQLExceptionex){}

catch(Exceptione){}

}

};

cmbItemList.addItemListener(itemListener);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.pack();

frame.setVisible(true);

}

privatevoidconnect()

{

try

{

Class.forName(“com.mysql.jdbc.Driver”);

con = DriverManager.getConnection(“jdbc:mysql://localhost/ProductInfo”,“root”,””);

}

catch(Exceptione)

{

System.out.println(“Unabletoconnect”);

}

}

privatevoiddisconnect()

{

try

{

con.close();

}

catch(Exceptione){}

}

}

OUTPUT

EXERCISE:WRITEAJDBCPROGRAMTOIMPLEMENTTHELOGIN_IDFORMUSINGJDBC.

Code:

Output:

WRITEAJDBCPROGRAMTOSELECTTHEVALUESFROMTHEDEPARTMENTTABLE.

Code:

Output:

WRITEAJDBCPROGRAMTOINSERTTHEVALUESINTOTHESTUDENTTABLE.

Code:

Output:

WRITEAJDBCPROGRAMTOALTERANDINSERTTHEVALUESINTOTABLE.

Code:

Output:

WRITEAJDBCPROGRAMTODELETEARECORDBYTAKINGTHEINPUTFROMKEYBOARD.

Code:

Output:

UNIT4

GENERALOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

LearnhowtouseServlettodevelopwebapplications.

DevelopanddeployaServletapplicationusingApachewebserver.

LearnhowtoreadparametersinServlet.

Learnhowtoreadinitializationparametersusingweb.xmlfile.

LEARNINGOUTCOMESExplainServletconcepts

PracticeServletprograms.

ASSUMPTIONSOracleJDKinstalled,ApaheWebServerandServletAPIinstalled,configuredandrunning.

EditorLikenotepad,Jcreatoravailableforprogramdevelopment

EnvironmentvariableslikeJAVA_Home,Path,Classpathareconfigured.

INTRODUCTIONServlets: For development of web basd components Servlets are the Java platform

technology of choice for extending and enhancing Web servers. Servlets provide acomponent-based, platform-independent method for building Web-based applications,without the performance limitations of CGI programs. And unlike proprietary serverextensionmechanisms(suchastheNetscapeServerAPIorApachemodules),servletsareserver-andplatform-independent.Thisleavesyoufreetoselecta“bestofbreed”strategyfor your servers, platforms, and tools. Servlets have access to the entire family of JavaAPIs, includingtheJDBCAPItoaccessenterprisedatabases.Servletscanalsoaccessalibrary ofHTTP-specific calls and receive all the benefits of themature Java language,includingportability,performance,reusability,andcrashprotection.

Todayservletsareapopularchoiceforbuilding interactiveWebapplications.Third-partyservletcontainersareavailable forApacheWebServer,Microsoft IIS,andothers.ServletcontainersareusuallyacomponentofWebandapplicationservers,suchasBEAWebLogicApplicationServer,IBMWebSphere,SunJavaSystemWebServer,SunJavaSystemApplicationServer,andothers.

AsweknowthattheservletextendstheHttpServletandoverridesthedoGet()methodwhichitinheritsfromtheHttpServletclass.TheserverinvokesdoGet()methodwheneverweb server receives the GET request from the servlet. The doGet() method takes twoarguments first isHttpServletRequestobject and the secondone isHttpServletResponse

objectandthismethodthrowstheServletException.

Whenever theusersendstherequest to theserver thenservergenerates twoobjects’first is HttpServletRequest object and the second one is HttpServletResponse object.HttpServletRequest object represents the client’s request and the HttpServletResponserepresentstheservlet’sresponse.

Inside thedoGet()methodour servlethas firstused thesetContentType()methodofthe response object which sets the content type of the response to text/html It is thestandard MIME content type for the html pages.After that it has used the methodgetWriter()oftheresponseobjecttoretrieveaPrintWriterobject.Todisplaytheoutputonthebrowserweusetheprintln()methodofthePrintWriterclass.

InsertingDatainDatabasetableusingStatementToaccomplishourgoalwefirsthavetomakeaclassnamedasServletInsertingData,

whichmustextends theabstractHttpServletclass, thenameof theclassshouldbesuchthatotherpersoncanunderstandwhatthisprogramisgoingtoperform.Thelogicoftheprogram will be written inside the doGet() method that takes two arguments, first isHttpServletRequestinterfaceandthesecondoneistheHttpServletResponseinterfaceandthismethodcanthrowServletException.

InsidethismethodcallthegetWriter()methodofthePrintWriterclass.Wecaninsertthedatainthedatabaseonlyandonlyifthereisaconnectivitybetweenourdatabaseandthejavaprogram.ToestablishtheconnectionbetweenourdatabaseandthejavaprogramwefirstneedtocallthemethodforName(),whichisstaticinnatureoftheclassClass.Ittakesoneargumentwhichtellsaboutthedatabasedriverwearegoingtouse.Nowusethestatic method getConnection() of the DriverManager class. This method takes threeargumentsandreturnstheConnectionobject.SQLstatementsareexecutedandresultsarereturnedwithin thecontextofaconnection.Nowyourconnectionhasbeenestablished.Now use the method createStatement() of the Connection object which will return theStatementobject.Thisobject isusedforexecutingastaticSQLstatementandobtainingtheresultsproducedbyit.Wehavetoinsertavaluesintothetablesoweneedtowriteaquery for inserting the values into the table. This query we will write inside theexecuteUpdate()methodoftheStatementobject.Thismethodreturnsintvalue.

If the record will get inserted in the table then output will show “record has beeninserted”otherwise“sorry!Failure”.

SessionAsessionisaconversationbetweentheserverandaclient.Aconversationconsistsof

seriesofcontinuousrequestandresponse.

When there is a series of continuous request and response from a same client to aserver,theservercannotidentifyfromwhichclientitisgettingrequests.BecauseHTTPisastatelessprotocol.

Whenthereisaneedtomaintaintheconversationalstate,sessiontrackingisneeded.

Forexample, ina shoppingcart applicationaclientkeepsonadding items intohis cartusingmultiplerequests.Wheneveryrequestismade,theservershouldidentifyinwhichclient’scarttheitemistobeadded.Sointhisscenario,thereisacertainneedforsessiontracking.

Solution is, when a client makes a request it should introduce itself by providinguniqueidentifiereverytime.Therearefivedifferentmethodstoachievethis.

Sessiontrackingmethods:1. Userauthorization2. Hiddenfields3. URLrewriting4. Cookies5. SessiontrackingAPI

CookiesAlsoknownasbrowsercookiesortrackingcookies,cookiesaresmall,oftenencrypted

text files, located inbrowserdirectories.Theyareusedbywebdevelopers tohelpusersnavigatetheirwebsitesefficientlyandperformcertainfunctions.Duetotheircoreroleofenhancing/enablingusabilityorsiteprocesses,disablingcookiesmaypreventusersfromusingcertainwebsites.

Cookies are created when a user’s browser loads a particular website. The websitesendsinformationtothebrowserwhichthencreatesatextfile.Everytimetheusergoesbacktothesamewebsite,thebrowserretrievesandsendsthisfiletothewebsite’sserver.ComputerCookies are created not just by thewebsite the user is browsing but also byotherwebsites that runads,widgets,orotherelementson thepagebeing loaded.Thesecookiesregulatehowtheadsappearorhowthewidgetsandotherelementsfunctiononthepage.

CookieClassInJSPcookieistheobjectoftheclassjavax.servlet.http.Cookie.Thisclassisusedto

createacookie,asmallamountofinformationsentbyaservlettoaWebbrowser,savedbythebrowser,andlatersentbacktotheserver.Acookie’svaluecanuniquelyidentifyaclient, so cookies are commonlyused for sessionmanagement.Acookiehas aname, asingle value, and optional attributes such as a comment, path and domain qualifiers, amaximumage,andaversionnumber.

The getCookies() method of the request object returns an array of Cookie objects.Cookiescanbeconstructedusingthefollowingcode:

Cookie(java.lang.Stringname,java.lang.Stringvalue)

PRACTICAL14:WRITEASIMPLESERVLETPROGRAMWHICH

MAINTAINSACOUNTERFORTHENUMBEROFTIMESITHASBEEN

ACCESSEDSINCEIT’SLOADING;INITIALIZETHECOUNTERUSINGDEPLOYMENTDESCRIPTOR.SPECIFICOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

LearnhowtouseSERVLETtomaintainhitofwebpages.

LEARNINGOUTCOMESUnderstandtheservletinitializationparametersusingweb.xmlfile.

ASSUMPTIONSOracleJDKinstalled,ApacheWebServerinstalledandconfigured.

EditorLikenotepad,Jcreatoravailableforprogramdevelopment

EnvironmentvariableslikeJAVA_Home,path,classpathareconfigured.

CODE

Index.html

<html>

<head>

<title>HitCounterusingSession</title>

</head>

<body>

<formid=“HitDemo”action=”/pagehit/PageHitCounter”method=“GET”>

<label>ClicktotestHitCounterforServlet</label>

<br><br>

<inputtype=submitvalue=“Submit”>

</form>

</body>

</html>

PageHitCounter.java

importjava.util.Enumeration;

importjavax.servlet.*;

importjavax.servlet.http.*;

importjavax.servlet.ServletException;

importjavax.servlet.ServletRequest;

importjavax.servlet.ServletResponse;

importjavax.servlet.ServletConfig;

publicclassPageHitCounterextendsHttpServlet{

privateinthitCount;

publicvoidinit(ServletConfigservletConfig)throwsServletException{

this.hitCount=Integer.valueOf(servletConfig.getInitParameter(“hit”));

}

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException

{

//Setresponsecontenttype

response.setContentType(“text/html”);

//Thismethodexecuteswhenevertheservletishit

//incrementhitCount

hitCount++;

PrintWriterout=response.getWriter();

Stringtitle=“TotalNumberofHits”;

StringdocType=

“<!doctypehtmlpublic“-//w3c//dtdhtml4.0“+

“transitional//en”>\n”;

out.println(docType+

“<html>\n”+

“<head><title>”+title+”</title></head>\n”+

“<bodybgcolor=”#f0f0f0”>\n”+

“<h1align=“center”>”+title+”</h1>\n”+

“<h2align=“center”>”+hitCount+”</h2>\n”+

“</body></html>”);

}

publicvoiddestroy()

{

//Thisisoptionalstepbutifyoulikeyou

//canwritehitCountvalueinyourdatabase.

}

}

web.xml

<?xmlversion=“1.0”encoding=“UTF-8”?>

<web-app>

<servlet>

<servlet-name>PageHitCounter</servlet-name>

<servlet-class>PageHitCounter</servlet-class>

<init-param>

<param-name>hit</param-name>

<param-value>0</param-value>

</init-param>

</servlet>

<servlet-mapping>

<servlet-name>PageHitCounter</servlet-name>

<url-pattern>/PageHitCounter</url-pattern>

</servlet-mapping>

</web-app>

OUTPUT

PRACTICAL15:CREATEAFORMPROCESSINGSERVLETWHICH

DEMONSTRATESUSEOFCOOKIES.SPECIFICOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

Learnhowtousecookieinservlettotracksessions.

LEARNINGOUTCOMESUnderstandtheuseofcookieforsessiontracking.

ASSUMPTIONSOracleJDKinstalled,ApacheWebServerinstalledandconfigured.

EditorLikenotepad,Jcreatoravailableforprogramdevelopment

EnvironmentvariableslikeJAVA_Home,path,classpathareconfigured.

CODE

index.html

<html>

<head>

<title>CookiesExampleinServlets</title>

</head>

<bodybgcolor=wheat>

<center>

<h1>CookiesExampleinJava</h1>

<formaction=“CookieExample”method=“Post”>

Firstname:<inputtype=“text”name=“fname”>

Lastname:<inputtype=“text”name=“lname”>

<inputtype=“submit”value=“SUBMIT”>

</form>

</center>

</body>

</html>

CookieExample.java

importjavax.servlet.*;

importjavax.servlet.http.*;

importjava.io.*;

publicclassCookieExampleextendsHttpServlet

{

publicvoiddoPost(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException

{

Stringfname=req.getParameter(“fname”);

Stringlname=req.getParameter(“lname”);

Cookief=newCookie(“first_name”,fname);

Cookiel=newCookie(“last_name”,lname);

res.addCookie(f);

res.addCookie(l);

res.setContentType(“text/html”);

PrintWriterout=res.getWriter();

out.print(“<ahref=‘GetCookie’>CookiesCreatedSuccessfully!!!ClicktoReadcookies</a>”);

}

}

GetCookie.java

importjavax.servlet.*;

importjavax.servlet.http.*;

importjava.io.*;

publicclassGetCookieextendsHttpServlet

{

publicvoiddoGet(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException

{

PrintWriterpw=res.getWriter();

pw.println(“<h1>”);

Cookie[]c=req.getCookies();

for(Cookiek:c)

{

pw.println(k.getValue());

}

pw.println(“</h1>”);

}

}

Web.xml

<web-app>

<servlet>

<servlet-name>CookieExample</servlet-name>

<servlet-class>CookieExample</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>CookieExample</servlet-name>

<url-pattern>/CookieExample</url-pattern>

</servlet-mapping>

<servlet>

<servlet-name>GetCookie</servlet-name>

<servlet-class>GetCookie</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>GetCookie</servlet-name>

<url-pattern>/GetCookie</url-pattern>

</servlet-mapping>

</web-app>

OUTPUT

PRACTICAL16:CREATEAFORMPROCESSINGSERVLETWHICH

DEMONSTRATESUSEOFSESSIONS.SPECIFICOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

Learnhowtousesessioninservlettotracksessions.

LEARNINGOUTCOMESUnderstandtheuseofsessionforsessiontracking.

ASSUMPTIONSOracleJDKinstalled,ApacheWebServerinstalledandconfigured.

EditorLikenotepad,Jcreatoravailableforprogramdevelopment

EnvironmentvariableslikeJAVA_Home,path,classpathareconfigured.

CODE

index.htm

<html>

<head>

<title>GetaHi!!!</title>

</head>

<body>

<formaction=“SessionExample”method=“get”>

<inputtype=“text”name=“user”/>

<inputtype=“submit”value=“Get”/>

</form>

</body>

</html>

Web.XMl

<web-app>

<servlet>

<servlet-name>SessionExample</servlet-name>

<servlet-class>SessionExample</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>SessionExample</servlet-name>

<url-pattern>/SessionExample</url-pattern>

</servlet-mapping>

<servlet>

<servlet-name>SessionTrack</servlet-name>

<servlet-class>SessionTrack</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>SessionTrack</servlet-name>

<url-pattern>/SessionTrack</url-pattern>

</servlet-mapping>

</web-app>

SessionExample.java

importjavax.servlet.*;

importjavax.servlet.http.*;

importjava.io.*;

publicclassSessionExampleextendsHttpServlet

{

publicvoiddoGet(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException

{

Stringst=req.getParameter(“user”);

HttpSessionses=req.getSession();

ses.setAttribute(“uname”,st);

res.setContentType(“text/html”);

PrintWriterout=res.getWriter();

out.print(“<ahref=‘SessionTrack’>SessionCreatedSuccessfully!!!ClicktoReadSession</a>”);

}

}

SessionTrack.java

importjavax.servlet.*;

importjavax.servlet.http.*;

importjava.io.*;

publicclassSessionTrackextendsHttpServlet

{

publicvoiddoGet(HttpServletRequestreq,HttpServletResponseres)throwsServletException,IOException

{

PrintWriterpw=res.getWriter();

HttpSessionses=req.getSession();

Stringst=(String)ses.getAttribute(“uname”);

pw.println(“<h1>Hi“+st+”</h1>”);

}

}

OUTPUT

UNIT5

GENERALOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

LearnhowtouseJSPtodevelopwebapplications.

DevelopanddeployaJSPapplicationusingApachewebserver.

LEARNINGOUTCOMESExplainJSPconcepts

PracticeJSPprograms.

ASSUMPTIONSOracleJDKinstalled,ApaheWebServerinstalled,configuredandrunning.

EditorLikenotepad,Jcreatoravailableforprogramdevelopment

EnvironmentvariableslikeJAVA_Home,Path,Classpathareconfigured.

INTRODUCTIONJavaServerPages(JSP)isaJavatechnologythatallowssoftwaredevelopersto

dynamicallygenerateHTML,XMLorothertypesofdocumentsinresponsetoaWebclientrequest.ThetechnologyallowsJavacodeandcertainpre-definedactionstobeembeddedintostaticcontent.

TheJSPsyntaxaddsadditionalXML-liketags,calledJSPactions,tobeusedtoinvokebuilt-infunctionality.Additionally,thetechnologyallowsforthecreationofJSPtaglibrariesthatactasextensionstothestandardHTMLorXMLtags.

TaglibrariesprovideaplatformindependentwayofextendingthecapabilitiesofaWebserver.

JSPsarecompiledintoJavaServletsbyaJSPcompiler.AJSPcompilermaygenerateaservletinJavacodethatisthencompiledbytheJavacompiler,oritmaygeneratebytecodefortheservletdirectly.

JSPtechnologyenablesWebdevelopersanddesignerstorapidlydevelopandeasilymaintain,information-rich,dynamicWebpagesthatleverageexistingbusinesssystems.AspartoftheJavatechnologyfamily,JSPtechnologyenablesrapiddevelopmentofWeb-basedapplicationsthatareplatformindependent.

JSPtechnologyseparatestheuserinterfacefromcontentgeneration,enabling

designerstochangetheoverallpagelayoutwithoutalteringtheunderlyingdynamiccontent

CreateandRunasimpleJSPprogramusingtomcatHereIamgoingtoexplainforwritecreateasimplejspprogramandrunthatprogram

inapachetomcat.Thisprocesshassomesteps.Thefollowingstepsarebasedonwindowsoperatingsystem

JavaServerPagesaresavedwith.jspextension.

InstallationandexecutionofJSP

FollowthesestepstorunJSPPage:

Step1:DownloadandinstalllatestApacheTomcatandJAVA.

Step 2: Create directory “JSPDemo” and apache D:\apache-tomcat-8.0.15\webapps\JSPDemodirectoriesunderthewebappsasshownhere:

Step3:CreatesimpleHelloWorld.jspprogramusinganyeditorlikenotepad:

<%@pagecontentType=“text/html”pageEncoding=“UTF-8”%>

<html>

<head>

<title>FirstJSPPage</title>

</head>

<body>

<p>Hi,<h3><%=“Hello!”%></h3></p>

</body>

</html>

Step 4:SavethisfileasHelloWorld.jspinD:\apache-tomcat-8.0.15\webapps\JSPDemo\JSPAppdirectory:

Step5:Beforerunthiscode,startapachetomcatasyouhavedonefollowingSection.

ApacheTomcatportinformation

Iamgivingthefollowinginformation1.Tomcatportinformation2.ChangeTomcatusernameandpassword(optional)3.Start,StopandRestarttomcat

1.Tomcatportinformation

D:/…/Tomcat6.0/conf/server.xml

This file havedefault port number (During installation specified…)you can able tochangethatportnumber.Server.xml

<?xmlversion=‘1.0’encoding=‘utf-8’?>

<Serverport=“8005”shutdown=“SHUTDOWN”>

<Connectorport=“9999”protocol=“HTTP/1.1”connectionTimeout=“20000”

redirectPort=“8443”/>

</Server>

Theconnectortagshaveyourtomcatportnumber.

2.Changethetomcatmangerusernameandpassword.(optional)

Ifyouwant tochange the tomcatusernameandpassword, thenyouedit the tomcat-user.xmlfile

<tomcat-users>

<rolerolename=“admin”/>

<rolerolename=“manager”/>

<rolerolename=“tomcat”/>

<rolerolename=“role1”/>

<userusername=“admin”password=“admin123”roles=“admin,manager”/>

<userusername=“tomcat”password=“tomcat”roles=“tomcat”/>

<userusername=“both”password=“tomcat”roles=“tomcat,role1”/>

<userusername=“role1”password=“tomcat”roles=“role1”/>

</tomcat-users>

HereIshowed,changedtomcatadminusernameandpassword

Theusername:adminThepassword:admin123

3.Start,StopandResarttomcat

Ifyouhavechange(server.xmlor tomcat-user.xml), thenbetteryouwill restartyourtomcat.

Start or Restart (if already running) Apache Tomcat Server from command lineD:\apache-tomcat-8.0.15\bin>startup.

4:Checkyourusernameandpassword(optional)

http://localhost:9999/

ThenClickTomcatManagerandgiveusername(admin)andpassword(admin123).Ifsuccessfullylogin,thenusernameandpasswordperfecltlyset.Otherwise,checktomcat-users.xmlfile.

Step6:Setpath, java_home,andclasspathvariableasrequiredfromcommandline.Forexample:

SetJAVA_HOME=C:\ProgramFiles\Java\jdk1.8.0_25\

setPATH=%JAVA_HOME%;%PATH%

setCLASSPATH=.;D:\apache-tomcat-8.0.15\lib\jsp-api.jar;D:\apache-tomcat-8.0.15\webapps\JSPDemo; C:\Program Files\Java\jdk1.8.0_25\jre\lib\ext\ mysql-

connector-java-5.1.34-bin;%classpath%Step7:RunHelloWorld.jspprograminbrowserusingfollowinglink:

http://localhost:9999/JSPDemo/HelloWorld.jsp

Step8:Observetheoutput:

PRACTICAL17:WRITEASIMPLEJSPPROGRAMFORUSERREGISTRATION&THENCONTROLWILLBETRANSFERITINTOSECONDPAGE.SPECIFICOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

DevelopaJSPPrograminJAVA.

LearnHowtohandlepageredirectinginWebbrowser.

LEARNINGOUTCOMESExplain&PracticeJspscriplettagsandHTMLtags.

ASSUMPTIONSOracleJDK,Apache-tomcat-8.0.15installed.

EditorLikenotepad,Netbeansavailableforprogramdevelopment.

EnvironmentvariableslikeJAVA_Home,Path,andClasspathareconfigured.

CODE

Registration.jsp

<%@pagelanguage=“java”contentType=“text/html;charset=UTF-8”

pageEncoding=“UTF-8”%>

<html>

<head>

<title>RegistrationForm</title>

</head>

<body>

<h1align=“center”>

<b>REGISTRATIONFORM</b>

</h1>

<formaction=“welcome.jsp”method=“post”>

<div>

<labelfor=“inputFirstname”>FirstName

</label>

<div>

<inputtype=“text”name=“firstname”maxlength=“12”

placeholder=“firstname”></input>

</div>

</div>

<div>

<labelfor=“inputLastname”>LastName

</label>

<div>

<inputtype=“text”name=“lastname”maxlength=“12”

placeholder=“lastname”></input>

</div>

</div>

<div>

<labelfor=“inputMobile”>Mobile</label>

<div>

<inputtype=“text”name=“mobile”maxlength=“10”

placeholder=“Ex:95xxxx4104”></input>

</div>

</div>

<div>

<labelfor=“inputEmail”>E-mail</label>

<div>

<inputtype=“text”name=“email”maxlength=“50”

placeholder=“rakesh@gmail.com”></input>

</div>

</div>

<div>

<labelfor=“gender”>Gender</label>

<div>

<inputtype=“radio”name=“optionsRadios”id=“optionsRadios1”

value=“Male”checked>Male<inputtype=“radio”

name=“optionsRadios”id=“optionsRadios2”value=“Female”>Female

</div>

</div>

<div>

<labelfor=“inputAddress”>Address</label>

<div>

<inputtype=“text”name=“address”maxlength=“70”id=“address”

placeholder=“Address”></input>

</div>

</div>

<div>

<labelfor=“inputCity”>City</label>

<div>

<input type=“text” name=“city” id=“city” placeholder=“Noida”></input>

</div>

</div>

<div>

<labelfor=“inputState”>State</label>

<div>

<inputtype=“text”id=“state”name=“state”id=“state”

placeholder=“Delhi”></input>

</div>

</div>

<div>

<div>

<inputtype=“reset”value=“Reset”/><input

type=“submit”value=“Submit”/>

</div>

</div>

</form>

</body>

</html>

</body>

</html>

welcome.jsp

<%@pagelanguage=“java”contentType=“text/html;charset=UTF-8”

pageEncoding=“UTF-8”%>

<html>

<head>

<title>DetailsOfUser</title>

</head>

<body>

<h3>

<left>

<i>REGISTRATIONHASBEENCOMPLETEDSUCCESSFULLY…….</i>

</left>

</h3><br>

FirstName:<%=request.getParameter(“firstname”)%><br>

LastName:<%=request.getParameter(“lastname”)%><br>

email:<%=request.getParameter(“email”)%><br>

mobile:<%=request.getParameter(“mobile”)%><br>

city:<%=request.getParameter(“city”)%><br>

State:<%=request.getParameter(“state”)%><br>

Gender:<%=request.getParameter(“optionsRadios”)%><br>

address:<%=request.getParameter(“address”)%>

</body>

</html>

OUTPUT

PRACTICAL18:WRITEASIMPLEJSPPROGRAMFORUSERLOGINFORMWITHSTATIC&DYNAMICDATABASE.SPECIFICOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

DevelopaJSPPrograminJAVA.

LearnHowtohandlestaticanddynamicdatabaseinWebbrowser.

LEARNINGOUTCOMESExplain&PracticehowtoaccessmysqldatabasefromJSPprogramme.

ASSUMPTIONSOracleJDK,Apache-tomcat-8.0.15andwampserver2.2c-x32installed.

EditorLikenotepad,Netbeansavailableforprogramdevelopment.

EnvironmentvariableslikeJAVA_Home,Path,andClasspathareconfiguredandcopymysql-connectorjarfiletofolderC:\ProgramFiles\Java\jdk1.8.0_25\jre\lib\ext.

CODE(A)

(a) WriteasimpleJSPprogramforuserloginformwithstaticdatabase.

Login.jsp

<html>

<head>

<title>JSPPage</title>

</head>

<body>

<h1><center>LoginPage</center></h1>

<center>

<h2>SignupDetails</h2>

<formaction=“logincheck.jsp”method=“post”>

<br/>Username:<inputtype=“text”name=“username”>

<br/>Password:<inputtype=“password”name=“password”>

<br/><inputtype=“submit”value=“Submit”>

</form>

</center>

</body>

</html>

Logincheck.jsp

<html>

<head>

<title>JSPPage</title>

</head>

<body>

<%

Stringusername=request.getParameter(“username”);

Stringpassword=request.getParameter(“password”);

if((username.equals(“kdp”)&&password.equals(“kdp123”)))

{

session.setAttribute(“username”,username);

response.sendRedirect(“home.jsp”);

}

else

response.sendRedirect(“error.jsp”);

%>

</body>

</html>

Home.jsp

<%@page contentType=“text/html” pageEncoding=“UTF-8”errorPage=“Error.jsp”%>

<html>

<head>

<title>JSPPage</title>

</head>

<body>

<br/><br/><br/><br/><br/>

<center>

<h2>

<%

Stringa=session.getAttribute(“username”).toString();

out.println(“Hello“+a);

%>

</h2>

<br/>

<br/>

<br/><br/><br/><br/><br/>

<ahref=“logout.jsp”>Logout</a>

</center>

</body>

</html>

Logout.jsp

<%@pagecontentType=“text/html”pageEncoding=“UTF-8”%>

<html>

<head>

<title>JSPPage</title>

</head>

<body>

<%

session.removeAttribute(“username”);

session.removeAttribute(“password”);

session.invalidate();

%>

<h1>Logoutwasdonesuccessfully.</h1>

</body>

</html>

Error.jsp

<%@pagecontentType=“text/html”pageEncoding=“UTF-8”%>

<html>

<head>

<title>JSPPage</title>

</head>

<body>

<h1>SorryInvalidUsernameorPassword…</h1>

</body>

</html>

OUTPUT

CODE(B)

(b) WriteasimpleJSPprogramforuserloginformwithdynamicdatabase.

->CreatelogindatabaseDatabaseinMySQL.

->CreatemembersTableunderlogindatabaseDatabase.

Members:

first_name last_name email uname pass regdate

login.jsp

<%@pagecontentType=“text/html”pageEncoding=“UTF-8”%>

<html>

<head>

<title>JSPExample</title>

</head>

<body>

<formmethod=“post”action=“logincheck.jsp”>

<center>

<tableborder=“1”width=“30%”cellpadding=“3”>

<thead>

<tr>

<thcolspan=“2”>LoginHere</th>

</tr>

</thead>

<tbody>

<tr>

<td>UserName</td>

<td><inputtype=“text”name=“uname”value=””/></td>

</tr>

<tr>

<td>Password</td>

<td><inputtype=“password”name=“pass”value=””/></td>

</tr>

<tr>

<td><inputtype=“submit”value=“Login”/></td>

<td><inputtype=“reset”value=“Reset”/></td>

</tr>

<tr>

<tdcolspan=“2”>NotYetRegistered!!<ahref=“Newregistration.jsp”>RegisterHere</a></td>

</tr>

</tbody>

</table>

</center>

</form>

</body>

</html>

Logincheck.jsp

<%@pageimport=“java.sql.*”%>

<%

Stringuserid=request.getParameter(“uname”);

Stringpwd=request.getParameter(“pass”);

Class.forName(“com.mysql.jdbc.Driver”);

Connectioncon=DriverManager.getConnection(“jdbc:mysql://localhost/logindatabase”,

“root”,””);

Statementst=con.createStatement();

ResultSetrs;

rs=st.executeQuery(“select*frommemberswhereuname=’”+userid+”’andpass=’”+pwd+”’”);

if(rs.next()){

session.setAttribute(“userid”,userid);

response.sendRedirect(“success.jsp”);

}else{

out.println(“Invalidpassword<ahref=‘login.jsp’>tryagain</a>”);

}

%>

Newregistration.jsp

<%@pagecontentType=“text/html”pageEncoding=“UTF-8”%>

<html>

<head>

<title>Registration</title>

</head>

<body>

<formmethod=“post”action=“registrationsubmit.jsp”>

<center>

<tableborder=“1”width=“30%”cellpadding=“5”>

<thead>

<tr>

<thcolspan=“2”>EnterInformationHere</th>

</tr>

</thead>

<tbody>

<tr>

<td>FirstName</td>

<td><inputtype=“text”name=“fname”value=””/></td>

</tr>

<tr>

<td>LastName</td>

<td><inputtype=“text”name=“lname”value=””/></td>

</tr>

<tr>

<td>Email</td>

<td><inputtype=“text”name=“email”value=””/></td>

</tr>

<tr>

<td>UserName</td>

<td><inputtype=“text”name=“uname”value=””/></td>

</tr>

<tr>

<td>Password</td>

<td><inputtype=“password”name=“pass”value=””/></td>

</tr>

<tr>

<td><inputtype=“submit”value=“Submit”/></td>

<td><inputtype=“reset”value=“Reset”/></td>

</tr>

<tr>

<tdcolspan=“2”>Alreadyregistered!!<ahref=“login.jsp”>LoginHere</a></td>

</tr>

</tbody>

</table>

</center>

</form>

</body>

</html>

Registrationsubmit.jsp

<%@pageimport=“java.sql.*”%>

<%

Stringuser=request.getParameter(“uname”);

Stringpwd=request.getParameter(“pass”);

Stringfname=request.getParameter(“fname”);

Stringlname=request.getParameter(“lname”);

Stringemail=request.getParameter(“email”);

Class.forName(“com.mysql.jdbc.Driver”);

Connectioncon=DriverManager.getConnection(“jdbc:mysql://localhost/logindatabase”,

“root”,””);

Statementst=con.createStatement();

inti=st.executeUpdate(“insertintomembers(first_name,last_name,email,uname,pass,regdate)values(’”+fname+”’,’”+lname+”’,’”+email+”’,’”+user+”’,’”+pwd+”’,CURDATE())”);

if(i>0){

response.sendRedirect(“welcome.jsp”);

}

else{

response.sendRedirect(“login.jsp”);

}

%>

Welcome.jsp

RegistrationisSuccessful.

PleaseLoginHere<ahref=‘login.jsp’>GotoLogin</a>

Success.jsp

<%

if((session.getAttribute(“userid”)==null)||(session.getAttribute(“userid”)==””)){

%>

Youarenotloggedin<br/>

<ahref=“login.jsp”>PleaseLogin</a>

<%}else{

%>

Welcome<%=session.getAttribute(“userid”)%>

<ahref=‘logout.jsp’>Logout</a>

<%

}

%>

OUTPUT:

PRACTICAL19:WRITEAJSPPROGRAMTODISPLAYTHEGRADEOFASTUDENTBYACCEPTINGTHEMARKSOFFIVESUBJECTS.SPECIFICOBJECTIVES

Afterperformingthispracticalstudentwillbeableto:

DevelopaJSPPrograminJAVA.

LearnHowtohandlepageredirectinginwebbrowser.

LEARNINGOUTCOMESExplain&PracticeJspscriplettagsandHTMLtags.

ASSUMPTIONSOracleJDK,Apache-tomcat-8.0.15installed.

EditorLikenotepad,Jcreatoravailableforprogramdevelopment.

EnvironmentvariableslikeJAVA_Home,Path,andClasspathareconfigured.

CODE

<%@pagelanguage=“java”contentType=“text/html;charset=ISO-8859-1”

pageEncoding=“ISO-8859-1”%>

<html>

<head>

<title>StudentMarks</title>

</head>

<body>

<h2>StudentGradingSystem</h2>

<formaction=””method=“post”>

<table>

<tr>

<td></td>

<td>

EnterFiveSubjectMarksoutof100

</td>

</tr>

</table>

<table>

<tr>

<th>Subject</th>

<th>ObtainedMarks</th>

<th>TotalMarks</th>

</tr>

<tr>

<tdalign=“center”>C</td>

<tdalign=“center”><inputtype=“text”size=“5”name=“c”/></td>

<tdalign=“center”>100</td>

</tr>

<tr>

<tdalign=“center”>Java</td>

<tdalign=“center”><inputtype=“text”size=“5”name=“java”/></td>

<tdalign=“center”>100</td>

</tr>

<tr>

<tdalign=“center”>.Net</td>

<tdalign=“center”><inputtype=“text”size=“5”name=“net”/></td>

<tdalign=“center”>100</td>

</tr>

<tr>

<tdalign=“center”>VB</td>

<tdalign=“center”><inputtype=“text”size=“5”name=“vb”/></td>

<tdalign=“center”>100</td>

</tr>

<tr>

<tdalign=“center”>DBMS</td>

<tdalign=“center”><inputtype=“text”size=“5”name=“dbms”/></td>

<tdalign=“center”>100</td>

</tr>

<tr>

<td></td>

</tr>

<tr>

<td></td>

</tr>

<tr><td></td><tdalign=“center”><inputtype=“submit”value=“submit”/></td></tr>

</table>

</form>

<%

Stringc=request.getParameter(“c”);

Stringj=request.getParameter(“java”);

Stringn=request.getParameter(“net”);

Stringv=request.getParameter(“vb”);

Stringd=request.getParameter(“dbms”);

if(!(c==null||c.isEmpty()))

{

intcmarks=Integer.parseInt(c);

intjmarks=Integer.parseInt(j);

intnmarks=Integer.parseInt(n);

intvmarks=Integer.parseInt(v);

intdmarks=Integer.parseInt(d);

inttotal=cmarks+jmarks+nmarks+vmarks+dmarks;

intavg=(total)/5;

intpercent=avg;

Stringgrade=””;

if(percent<40){

grade=“E”;

//request.setAttribute(“grade”,grade);

}

elseif(percent>=40&&percent<=44){

grade=“D”;

}

elseif(percent>=45&&percent<=49){

grade=“D+”;

}

elseif(percent>=50&&percent<=54){

grade=“C-“;

}

elseif(percent>=55&&percent<=59){

grade=“C”;

}

elseif(percent>=60&&percent<=64){

grade=“C+”;

}

elseif(percent>=65&&percent<=69){

grade=“B-“;

}

elseif(percent>=70&&percent<=74){

grade=“B”;

}

elseif(percent>=75&&percent<=79){

grade=“B+”;

}

elseif(percent>=80&&percent<=84){

grade=“A”;

}

elseif(percent>=85&&percent<=100){

grade=“A+”;

}

request.setAttribute(“Grade”,grade);

%>

<table>

<tr>

<td><b>AggregateMarks</b></td><td></td>

<tdalign=“center”><%=total%></td>

</tr>

<tr>

<td><b>Grade</b></td><td></td>

<tdalign=“center”><%=grade%></td>

</tr>

</table>

<%

}

%>

</body>

</html>

OUTPUT