05.Servlet
Servlet
How servlet works
Client sends the request to the server to get html
page it can be a dynamic page or static page. Dynamic page කියන්නේ
ඒවා run time එකේදී තමා අවශ්ය data process කරලා page එකට bind කරලා
හදන්නේ.ඒත් static page එකක් කියන්නේ, කලින්ම හදල තියෙන page එකක්. එකේ වෙනස්කම් වෙන්නේ නෑ.ඉතින් මෙහෙම එකක්
ඉල්ලුවොත් කෙලින්ම ඒ page එක server එකට පුළුවන් client ට යවන්න..ඒත් client ඉල්ලන page එක static
එකක් නෙවෙයිනම් server එකට ඒ request
එක යවනවා , web container එක ඒ ඉල්ලන dynamic
page එකට හදන්න පුලුවන්නම් එක හදලා response එක විදිහට දෙනවා.හදන්න පුළුවන් කියන එකෙන් කියන්නේ එවන request එකට ගැලපෙන්න developer
ලියල තියනවනම් මෙහෙම request එකකට මේ
වගේ page එකක් හදන්න ඕනේ කියන එක.එහෙම ලියල නැත්තම් 404-page
not found වගේ error එකක් තමා server
එක දෙන්නේ.web container එකක් කියන්නේ
එක්කෝ tomcat, weblogic, glassfish, websphere, jbos වගේ
එකක්.ඒ කියන web container එක ඇතුලෙදි වෙන්නේ මෙහෙම එකක් , එකේදී developer
ලියනවා මෙහෙම request එකක් අවොත් මොන servlet
(java class එකක් ) එකට call
වෙන්න ඕනේ කියලා.එකට කියනවා
deployment descriptor එක කියලා(web.xml) .මේක XML file එකක් .මේකේ servlet
class එක මොකද්ද සහ එක identify කරගන්න
පාවිච්චි වන නම සහ මොන url එක අවොත්ද එකට map වෙන්නේ කියන විස්තර ටික තමා
ලියන්නේ .Servlet එකක් කියන්නේ normal java
class එකක්ම තමා..එට් විශේෂත්වය වෙන්නේ , එක http class එක extend කරගෙන තම හදන්නේ.ඒ http class එකේ තමා ඔය request
handle කරන්න ඕනේ ඒවා තියෙන්න.ඒ කියනේ request එක identify කරගන්න ඒ request එක process කිරීම , e request එකට අදාලව බලාපොරොත්තු වන response
එක යැවීම වගේ ඒවා තමා.ඒ යවන response එක විවිද විදිහට යවන්න
පුළුවන් .එක්කෝ HTML page or HTML div එකක් විදිහට , නැත්තම්
XML format එකෙන් , එහෙමත්
නැත්තම් JSON කියන
format එකෙන්.එත්
page එකක් ඉල්ලපු වේලාවකදී ඒ page එක html
page එක response object එකක් කියන format
එකෙන් server එකෙන් client machine එකට යවනවා. ඒක client machine එකේ browser එකෙන් display කරගන්නවා .
ඉතාකොට
මේ ටික කෙටියෙන් කිවුවොත් client එවනවා request එකක් මේ page එක ඕනි කියලා.ඉතින් server එක බලනවා මේක static page එකක්ද
කියලා.ඔව් නම් එක server එක client වෙත යවනවා .නැත්තන් එය static එකක්නම් එක යවනවා web container එකට.
එකේ තියනවා deployment descriptor කියන එක. එකෙන් අදාළ servlet
එකට map කරගන්නවා.ඊට පස්සේ එකේදී response
එක generate කරලා server එක client ට යවනවා .එත් මේකෙදි deployment
descriptor එක XML format එකෙන් තමා
තියෙන්නේ .නමුත් java වගේ language එකක් XML වගේ language එකක් සමග බාවිතා කරද්දී කරදර නිසා
servlet 3.0 වලින් පස්සේ annotation based
configurations හදුන්වලා දුන්නා.ඉතින් XML එක වෙනුවට annotation පාවිච්චි කරලා දැන් mapping part එක
කරන්නත් පුළුවන්.
In the spring all requests are redirect to
DispatcherServlet. That configuration is done in web.xml. Spring is collection
of controllers but one controller can handle multiple URLs. Within the
dispatcher servlet we have to configure which controller should have been
called for which URLs.
web.xml
Servlet
Web
page ගැන බලද්දී…web
server එකෙන් web
page එකක් ඉල්ලනවා..එක තියවන්ම් client ට දෙනවා නැත්තන් error message එකක් web
server එකෙන්
client ට return කරනවා…but web server එක වැඩ කරන්නේ html
එක්ක. ඒවගේ logic
ලියන්න බෑ.එහෙනම් logic
ලියන්න පුළුවන් language එකක් පාවිච්චි කරන්න වෙනවා dynamic web pages හදන්න නම්(number
දෙකක් add
කරනවා ,
data base එකක් එක්ක වැඩ කරනවා
වගේ ඒවාට) .එකට අපිට server side language එකක් හා ක්රමයක් පාවිච්චි කරනන් වෙනවා….එක නිසා
තමයි servlet ඕනේ වෙන්නේ . Servlet යනු client එවන request එකක් අරන්ගෙන එක process කරලා (dynamic data generate කරලා web
page එකට bind කරනවා) response දෙන්න පුළුවන් java class එකකි.
අපි request කරනවා server
එකෙන් මොකක් හරි resource
එකක් ඕනේ කියලා.ඒක
image එකක් text එකක් html
page/div එකක් හෝ
වෙනත් data set එකක් වෙන්නත් පුලුවන්.JSON
,XML වැනි format
එකකින් server එකෙන් response එවන්නවා.server
එකට request කරද්දී යොදාගන්න URL එකත්
එක්ක parameter එහෙම pass කරගන්න පුළුවන් .Response
එක resource
එකක් වගේම status
code එකක්ද වෙන්න පුළුවන්.
URL-
Uniform Resource Locater
200-request
is accepted and it is getting ready.
404-we
are accessing a page which is not available.
Client
ගෙන් එන request
එක web
server එකට තමා යන්නේ.ඒ page එක dynamic එකක් නම් request
එක web
container ට යවනවා.එක JVM
එකක්.ඊට පස්සේ අදාළ servlet එකට යවලා page එක generate කරනවා .එහිදී ගොඩාක් request
එකම servlet
එකකට අවොත් එක ප්රශ්නයක් වෙනවා.ඒ නිසා ඒවා handle කරන්න
සිදුවෙනවා server එකට. ඒකට web
container එක,
එක එක request එකකට වෙන වෙනම threat
හදලා multiple
thread run කරවනව හැම request එකක්ම parallel
run වෙන විදිහට..මෙහිදී servlet එක execute වෙන්න ඕනේ නම් servlet
හි service
method එකට call
කල යුතු අතර පසුව එය doGet or DoPost method වලට call කරලා
තමා execute වෙන්නේ.ඊට පස්සේ එන response
එක web server හරහා client
ට යවනවා …
Web
container ගෙන් සුදුවන කාර්යන් කීපයක් පහතින් දැක්වේ…….
01.
Communication
support
Multiple
thread වලට එකෙනේකා අතර communicate
කිරීමේ හැකියාව ලබාදෙනවා.
02.
Life
cycle Management
Servlet
එකක් හදන්න ඕනෙනම් init method එකට
ගිහිල්ලා service
method එක හරහා distry
method එකෙන් ඒක ඉවර කරනවා.. Creating and distry the servlet.
03.
Multi-threading
support
04.
Security
Servlet
largely use කරනවා ඒවගේ තියන
security
feature නිසා …එක provide කරන්නෙත් web
container තමයි.
05.
JSP
support
අපි get method හරහා data යවන විට servlet
එක ඒ data URL එකෙන් ගන්නවා නමුත් post
එකේදී URL
එකත්
එක්ක ඒ data යවන්නේ නැ.අපි data send කරන විට එක කොහේ හරි local
storage එකක තියාගන්නවා..එකෙන් තමා post method එකේදී data ගන්නේ …ඒවා තමා cookies
කියන්නේ .Get
එකේදී කෙලින්ම data URL එකෙන් ගන්න හින්ද speed
වන නමුත් security
නෑ..එත් post
එකේ secure
උනාට cookies
වලින් data
ගන්න one
නිසා get
එකට වඩා slow
වෙනවා.
Get
request එකකට response
කරන්න doGet()
method එකක්ද Post
request එකකට response
කරන්න doPost()
method එකක්ද තියනවා servlet
එකක …නමුත් user ට ඕන method
එකක් පාවිච්චි කරන්න නිදහස දෙන්නනම් අපිට ඒ method
දෙකම override
කරන්න වෙනවා ..සහ කරන්නේ එකම වැඩේනම් එකම code
එකේ ඒ method දෙකම repeat වෙනවා
..එකට තමා processRequest()
කියලා වෙනම method
එකක් හදලා එම method
එකේ code …. අර method 2 ඇතුළේදී මේක call
කරන්නේ .
Servlet
එක refresh
වෙද්දී ඒ ගාන count
වන code
එක..
අපි servlet එකකට call කරන්නේ අපිට මොකක් හරි service එකක් one උනාම.
මෙහිදී
අපි ඉල්ලන දේ ඒ servlet
එකට විතරක් කරලා දෙන්න පුළුවන් නම් එයා ඒ වැඩේ කරලා
අපිට response එක දෙනවා…
අනෙත්
එක තමා එය දන්නේ නෑ ඒ
වැඩේ කරන්න ඒත් වෙන servlet එකකට කතා කරලා wade
කරනවා. ඒක එයා කළා වගේ client
ට දෙනවා.Client
හිටන්නේ පලවෙනි servlet
එකම තමා ඒ වැඩේ
කලේ කියලා.
අනෙත්
එක තමා servlet එක දන්නේ නෑ වැඩේ කරන්න
හැබැයි දන්නවනම් ඒ වැඩේ කරවගන්න පුළුවන් වෙනත් servlet එකක්, එයා එක client ට response
එකක් විදිහට දෙනවා ඒ
servlet එකට යන්න කියලා ..ඉතාකොට client ඒ
දෙවැනි servlet එකට ගිහින් වැඩේ කරවගන්නවා.
Calling
another servlet from a servlet.
මේකෙදි එකම request
object එක දෙවැනි servlet
එකට pass
වෙන නිසා client
එවන data
අනෙත් servlet
එකේදී පාවිච්චි කරන්න පුළුවන්. එම නිසා ප්රශ්නයක් වෙන්නේ නෑ.
response.sendRedirect("Two?t1="+st);
මේ වෙලවෙදී පලවෙනි sevlet එක ඒ request object එක ගත්තද, නැවත client ට කියනවා එය කියන servlet එකට යන්න කියලා.ඉතාකොට client අයෙමත් අලුත් request එකක් හදලා තමා දෙවැනි එකට request එකක් යවන්නේ …මේ අවස්ථවෙදී client ගේ කලින් data නෑ …ඒ නිසා ඒ data තියාගන්න different data scope එකක් පාවිච්චි කරන්න වෙනවා…(request, session, cookie).
Request
එකකින් request
එකකට data
තියාගන්න session,
cookie බාවිතා කරනවා.
තව url එකත්
එක්ක set කරලත් data යවන්නත් පුළුවන්.උඩ example එක වගේ.(cookie-bus
ticket example එක .
///////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
Servlet
Configure – ServletContext and ServletConfig
Within
class
ServletContext
object එකක්,ඒක හැම
servlet එකකටම share
වෙනවා..Different
configuration for different servlet නම් තමා ServletConfig object ඕනේ වෙන්නේ.
x
Comments
Post a Comment