Getting Started with Java Servlets: A Simple Guide

ඔයා අන්තර්ජාලයේ සැරිසරද්දී දකින වෙබ් අඩවි, ෆේස්බුක් වගේ දේවල් කොහොමද වැඩ කරන්නේ කියලා හිතලා තියෙනවද? අන්න ඒ රහස් ටිකක් තමයි මේ ලිපියෙන් අපි කතා කරන්න යන්නේ, විශේෂයෙන්ම ජාවා (Java) වලින් වෙබ් දේවල් හදනකොට වැදගත් වෙන 'සර්ව්ලට්' (Servlet) ගැන.

ඔයා දන්නවද, ඔයා දවස ගානේ පාවිච්චි කරන වෙබ්සයිට්, ඇප්ස් (අපි මේවට කියන්නේ Web Applications කියලා) හරිම සුපිරි විදිහට වැඩ කරනවා. ඒත් ඒවා හැදිලා තියෙන්නේ කොහොමද? වැඩ කරන්නේ කොහොමද? බය වෙන්න එපා, අපි මේ ඔක්කොම හරිම ලේසියෙන් තේරුම් ගමු.

1. Client-Server කතාව සහ Web Servers වල වැඩේ

මේක හරියට රෙස්ටුරන්ට් එකකට ගිහින් කෑම ඕඩර් කරනවා වගේ වැඩක්.

  • Client (සේවාග්‍රාහකයා): හිතන්නකෝ ඔයා තමයි Client. ඔයාගේ ෆෝන් එකේ හරි කම්පියුටර් එකේ හරි තියෙන Chrome, Firefox වගේ බ්‍රව්සර් එක තමයි මෙතනදී Client වෙන්නේ. ඔයා මොකක් හරි වෙබ් පේජ් එකක් බලන්න ඕන කියලා "ඉල්ලීමක්" කරනවා (Request).

  • Server (සේවාදායකයා): රෙස්ටුරන්ට් එකේ කිචන් එක වගේ තමයි Server එක. ඔයාගේ ඉල්ලීම අහගෙන ඉඳලා, ඔයාට ඕන කරන දේ (වෙබ් පේජ් එක, පින්තූරයක් වගේ) හදලා "පිළිතුරක්" (Response) විදියට ඔයාට එවන කෙනා තමයි Server.

Web Server කියන්නේ මොකක්ද?: මේකත් Server එකේ ඉන්න කෙනෙක් වගේ. එයාගේ ප්‍රධානම ජොබ් එක තමයි ඔයාගේ බ්‍රව්සර් එකෙන් එන ඉල්ලීම් අරගෙන, ඒකට අදාළ හදලා තියෙන වෙබ් පිටු (HTML වගේ හෙලවෙන්නේ නැති, Static Files) ආපහු ඔයාට දෙන එක. Apache, Nginx කියන්නේ ජනප්‍රිය Web Server වර්ග.

Web Application Server කියන්නේ? සමහර වෙලාවට ඔයාට ඕන වෙන්නේ හැමෝටම එකම විදියට පේන පිටුවක් නෙවෙයි, ඔයාට විතරක් විශේෂ දෙයක් (Dynamic Content) පේන්න. උදාහරණයක් විදියට ඔයා ලොග් වුණාම ඔයාගේ නම පේනවා වගේ. අන්න ඒ වගේ වැඩ කරන්න පුළුවන් විශේෂ Server එකකට තමයි Web Application Server කියන්නේ. මේකට කලින් කියපු Web Server එකේ වැඩ වලට අමතරව, අපේ කතා නායකයා වෙන 'සර්ව්ලට්' වගේ දේවල් පාවිච්චි කරලා සුපිරි වැඩ කරන්න පුළුවන්. Tomcat කියන්නේ ඒ වගේ ජනප්‍රිය එකක්.

2.HTML සහ HTTP යාළුවෝ දෙන්නා

වෙබ් එකේ වැඩ හරියට වෙන්න නම් මේ දෙන්නා නැතුවම බෑ.

  • HTML (HyperText Markup Language): මේක හරියට ලෙගෝ සෙල්ලම් බඩු වගේ. වෙබ් පේජ් එකක තියෙන ඔක්කොම දේවල් (ලොකු අකුරු - Headings, කතන්දර - Paragraphs, පින්තූර, ලින්ක්ස්, ෆෝම්ස්) හදන්නේ, ඒ කියන්නේ පිටුවේ "ඇටසැකිල්ල" හදන්නේ HTML වලින්. මේක Programming Language එකක් නෙවෙයි, පිටුව හදන්න ලකුණු (Markup) දාන භාෂාවක්.

    • මෙන්න පොඩි උදාහරණයක්:

        <!DOCTYPE html>
        <html>
        <head>
            <title>මගේ සුපිරි පේජ් එක</title>
        </head>
        <body>
            <h1>හායි යාලුවනේ!</h1>
            <p>මේක HTML වලින් හදපු පොඩි පේජ් එකක්.</p>
        </body>
        </html>
      
  • HTTP (HyperText Transfer Protocol): මේක තමයි බ්‍රව්සර් එකයි (Client) සර්වර් එකයි (Server) කතා කරන "භාෂාව" හෙවත් නීති ටික (Protocol). ඔයා බ්‍රව්සර් එකේ address එකක් ගහලා Enter කරාම, බ්‍රව්සර් එක HTTP Request එකක් Server එකට යවනවා. Server එක ඒකට උත්තරේ HTTP Response එකක් විදියට එවනවා. අපි දත්ත "ගන්න" (GET) සහ දත්ත "යවන්න" (POST) මේ භාෂාවේ විශේෂ වචන දෙකක් පාවිච්චි කරනවා.

3. කවුද මේ Servlet කියන්නේ? (What is a Servlet?)

හරිම සරලව කිව්වොත්, Servlet කියන්නේ ජාවා (Java) වලින් ලියපු, Web Application Server එක ඇතුළේ දුවන (run) පොඩි ප්‍රෝග්‍රෑම් කෑල්ලක්. එයා හරියට සර්වර් එකේ ඉන්න දක්ෂ සහායකයෙක් වගේ.

එයාගේ ප්‍රධාන වැඩ ටික තමයි:

  1. ඔයා බ්‍රව්සර් එකෙන් එවන ඉල්ලීම් (Requests), විශේෂයෙන්ම ඔයා පුරවන ෆෝම්ස් (Forms) වලින් එන දත්ත, බාරගන්න එක.

  2. ඒ ඉල්ලීමට අනුව වැඩ ටික කරන එක (උදා: Database එකකට කතා කරන එක, මොනාහරි ගණන් හදන එක).

  3. ඔයාගේ ඉල්ලීමට අනුව වෙනස් වෙන (Dynamic) උත්තරයක් (Response) හදලා (ගොඩක් වෙලාවට HTML පිටුවක් විදියට) ආපහු ඔයාගේ බ්‍රව්සර් එකට යවන එක.

නිකන් HTML පිටුවක් වගේ නෙවෙයි, Servlet එකකට පුළුවන් ඔයා කවුද, ඔයා ඉල්ලන්නේ මොකක්ද කියලා බලලා, ඒ වෙලාවට ගැලපෙන උත්තරයක් හදලා දෙන්න. හරියට මැජික් වගේ නේද? මේකෙන් සර්වර් එකට සුපිරි බලයක් ලැබෙනවා.

4. HTML Forms එක්ක වැඩ කරමු (Processing HTML Forms)

ඔයා වෙබ්සයිට් වල register වෙද්දී, ලොග් වෙද්දී පුරවන්නේ HTML Forms තමයි (<form> tag එක).

  • ඔයා ෆෝම් එක පුරවලා "Submit" කලාම, බ්‍රව්සර් එක ඒ දත්ත ටික HTTP Request එකක් එක්ක Server එකට යවනවා.

  • Server එක ඒ Request එක අදාළ Servlet එකට පාස් කරනවා.

  • Servlet එක ඇතුළේ තියෙන විශේෂ විධාන වලින් (request.getParameter("user_name") වගේ) ඔයා එවපු දත්ත (උදා: user_name එක) අල්ලගන්නවා.

  • ඊට පස්සේ ඒ දත්ත පාවිච්චි කරලා වැඩේ කරලා (උදා: ඔයාව ලොග් කරලා), උත්තරයක් (උදා: "ආයුබෝවන් [ඔයාගේ නම]!" කියලා පේජ් එකක්) හදලා ආපහු බ්‍රව්සර් එකට එවනවා. හරිම ලේසියි නේද?

5. Servlet එකේ ජීවිත කතාව (Servlet Life Cycle)

හැම Servlet එකකටම එයාගේ ජීවිතේ යම් කිසි පිළිවෙලක් තියෙනවා. ඒකට තමයි Life Cycle එක කියන්නේ. ප්‍රධාන අදියර තුනයි තියෙන්නේ:

  1. init() (වැඩට ලෑස්ති වීම): Servlet එක Server එකට මුලින්ම load කරනකොට, ජීවිතේට එකම එක පාරක් මේ method එක වැඩ කරනවා. මෙතනදි තමයි Servlet එක එයාගේ වැඩ ටිකට ලෑස්ති වෙන්නේ (උදා: Database connection හදාගන්නවා).

  2. service() (ජොබ් එක කිරීම): ඔයාගෙන් හරි වෙන කෙනෙක්ගෙන් හරි Request එකක් ආපු හැම සැරේකම මේ method එක වැඩ කරනවා. Request එක මොකක්ද (GET ද, POST ද) කියලා බලලා අදාළ වැඩේ කරන්නේ මෙයා තමයි. Servlet එකේ ප්‍රධානම රාජකාරිය සිද්ධ වෙන්නේ මෙතන.

  3. destroy() (වැඩ ඉවරවෙලා අස් කිරීම): Server එකෙන් Servlet එක අයින් කරනකොට හරි Server එක නවත්තනකොට හරි, ජීවිතේට එකම එක පාරක් මේ method එක වැඩ කරනවා. මෙතනදි තමයි init() එකේදී ගත්ත දේවල් අස්පස් කරලා දාන්නේ (උදා: Database connection අයින් කරනවා).

වැදගත්ම දේ: Server එක ගොඩක් වෙලාවට එක Servlet එකකින් එක copy එකයි හදන්නේ. එන හැම Request එකටම ඒ copy එකම තමයි පාවිච්චි කරන්නේ (service() method එක ආයේ ආයේ වැඩ කරනවා).

6. Request එක පාස් කිරීම (Forwarding) vs අලුත් පාරක් කීම (Redirection)

සමහර වෙලාවට එක Servlet එකකට ආපු Request එකක් එයාටම තනියම handle කරන්න බෑ, නැත්නම් එයාගේ වැඩේ කොටසක් කරලා ඉතුරු ටික කරන්න වෙන කෙනෙක්ට (වෙන Servlet එකකට, JSP එකකට) පාස් කරන්න ඕන වෙනවා. ඒකට ක්‍රම දෙකක් තියෙනවා:

  1. Request Forwarding (ඉල්ලීම අතින් අත පාස් කිරීම):

    • හිතන්න ඔෆිස් එකක් ඇතුළේ එක මේසෙකින් අනිත් මේසෙට ලියුමක් පාස් කරනවා වගේ. Servlet එක එයාට ආපු Request එක ඒ විදියටම, ඒ Server එක ඇතුළෙම ඉන්න වෙන කෙනෙක්ට දෙනවා.

    • මේක වෙන්නේ Server එක ඇතුළෙම නිසා, ඔයාගේ බ්‍රව්සර් එක මේ ගැන දන්නේ නෑ. බ්‍රව්සර් එකේ උඩ තියෙන Address (URL) එක වෙනස් වෙන්නෙත් නෑ.

    • RequestDispatcher එකේ forward() method එකෙන් තමයි මේක කරන්නේ.

    • එක Servlet එකකින් data ටික අරන්, ඒ ටික ලස්සනට පෙන්නන්න වෙන JSP එකකට Request එක forward කරන එක උදාහරණයක්.

  2. Response Redirection (වෙන පාරකින් යන්න කියන එක):

    • මේක හරියට, ඔයා එක තැනකට ගියාම, එතන ඉන්න කෙනා ඔයාට "ආහ්, ඔයා යන්න ඕන අතනට" කියලා වෙන Address එකක් දෙනවා වගේ. Servlet එක ඔයාගේ බ්‍රව්සර් එකට කියනවා "හරි, දැන් ඔයා මේ අලුත් Address එකට අලුත්ම Request එකක් යවන්න" කියලා.

    • බ්‍රව්සර් එක ඒ අලුත් Address එකට අලුත්ම Request එකක් යවනවා. ඒ Address එක ඒ Server එකේම වෙන්නත් පුළුවන්, සම්පූර්ණයෙන්ම වෙන Server එකක වෙන්නත් පුළුවන්.

    • ඔයාගේ බ්‍රව්සර් එකේ Address (URL) එක අලුත් එකට වෙනස් වෙනවා.

    • response.sendRedirect("අලුත්_URL") method එකෙන් තමයි මේක කරන්නේ.

    • ඔයා ෆෝම් එකක් submit කරාට පස්සේ, "ස්තූතියි" පේජ් එකකට ඔයාව redirect කරන එක උදාහරණයක්. මේකෙන් වැරදිලා ආයේ ආයේ ෆෝම් එක submit වෙන එකත් නවතිනවා.

සරලව වෙනස:

  • Forward: Server එක ඇතුළේ පාස් කිරීමක්, පරණ Request එකමයි, URL වෙනස් වෙන්නේ නෑ.

  • Redirect: බ්‍රව්සර් එකට අලුත් තැනකට යන්න කියලා අලුත් Request එකක් යවන්න සලස්වනවා, URL වෙනස් වෙනවා.

7. පොඩ්ඩක් අහගෙන ඉන්න Helpers ලා: Servlet Listeners

මේකත් හරිම සරල දෙයක්. Servlet Listeners කියන්නේ හරියට Web Application එකේ වැදගත් සිදුවීම් වෙනකන් අහගෙන ඉඳලා, ඒ සිදුවීම වුණ ගමන් මොකක් හරි වැඩක් කරන පොඩි Helpersලා වගේ අය.

මොනවද මේ වැදගත් සිදුවීම්?

  • App එක පණ ගැන්වීම / නතර වීම: Web Application එක Server එකේ පටන් ගන්නකොට / නවතිනකොට. (ServletContextListener කියන Helper තමයි මේක අහගෙන ඉන්නේ). App එක පටන් ගද්දිම Database connection හදාගන්න, settings ලෝඩ් කරගන්න මේක පාවිච්චි කරන්න පුළුවන්.

  • කවුරුහරි User කෙනෙක් ආවම / ගියාම: අලුතෙන් User කෙනෙක් වෙබ් එකට සම්බන්ධ වුණාම (Session එකක් හැදුණම) / User කෙනෙක් ගියාම (Session එක නැතිවුණාම). (HttpSessionListener කියන Helper මේක බලාගෙන ඉන්නේ). එකපාර කී දෙනෙක් සයිට් එකේ ඉන්නවද කියලා ගණන් කරන්න මේකෙන් පුළුවන්.

  • Request එකක් ආවම / ගියාම: බ්‍රව්සර් එකකින් Request එකක් ලැබුණම / ඒ Request එකට අදාළ වැඩේ ඉවර වුණාම. (ServletRequestListener Helper මේක අහගෙන ඉන්නේ). Request එකකට කොච්චර වෙලා ගියාද කියලා බලන්න වගේ දේවල් කරන්න පුළුවන්.

Listeners ලා ඉන්න නිසා, මේ හැම සිදුවීමකටම අදාළ කෝඩ් එක එක එක Servlet එක ඇතුළේ ලියලා අවුල් කරගන්නේ නැතුව, ඒ වැඩ ටික පිළිවෙලකට එක තැනකින් කරන්න පුළුවන්.

අවසාන වශයෙන්, අපි අද Client-Server කතාව, HTML, HTTP, අපේ කතා නායකයා Servlet, එයාලගේ ජීවිත කතාව, Request පාස් කරන හැටි සහ අහගෙන ඉන්න Helpersලා (Listeners) ගැන සරලව කතා කළා. මේ දේවල් දැනගත්තම ඔයාට ජාවා වලින් සුපිරි වෙබ් යෙදුම් හදන්න ලොකු උදව්වක් වේවි. මේක ඔයාගේ වෙබ් සංවර්ධන ගමනේ නියම ආරම්භයක් වේවා කියලා අපි ප්‍රාර්ථනා කරනවා!

0
Subscribe to my newsletter

Read articles from Uthsara Basnayake directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Uthsara Basnayake
Uthsara Basnayake