სერვლეტები. Java აპლიკაციების აგება Servlets Servlet საფუძვლებით

სერვლეტი - არის Java-nporpaMMa, რომელიც იყენებს კლასს HttpServiet. სერვლეტი გამოიყენება არსებული სერვერის, კერძოდ კი ვებ სერვერის შესაძლებლობების გასაფართოებლად. როგორც წესი, servlet მუშაობს სპეციალურ სერვერზე. ამ სერვერებს უწოდებენ Java Application Servers. Java აპლიკაციის სერვერი მოიცავს ვებ სერვერს, როგორც სამშენებლო ბლოკს (ზოგჯერ არა ერთს, არამედ რამდენიმეს), ასევე სერვერებს, რომლებიც მუშაობენ სერვერის კომპონენტებთან, სერვერებზე დამხმარე სერვისებისთვის და ა.შ. სერვლეტი მუშაობს სერვერის მიერ მოწოდებულ გარემოში. სერვერის ნაწილს, რომელიც ეძღვნება სერლეტების მომსახურებას, ეწოდება servlet კონტეინერი. servlet სპეციფიკაცია ვარაუდობს, რომ servlet კლასს აქვს სტანდარტული მეთოდები, რომლებიც შესრულებულია servlet-ის სასიცოცხლო ციკლის გარკვეულ მომენტში. ამ მეთოდებს უწოდებენ servlet კონტეინერს. სერვლეტის სპეციფიკაციის იმპლემენტაცია შედის სტანდარტული Java ენის პაკეტების კომპლექტში.

ეს წიგნი ფოკუსირებულია Java აპლიკაციის სერვერზე, სახელად Blazix. Blazix სერვერი უზრუნველყოფს სერვლეტის შესაძლებლობების სრულ კომპლექტს. გარდა servlet კლასის (ან კლასების) შექმნისა, ასევე შექმნილი servlet პროგრამის კონფიგურაციისა და სერვერზე ინსტალაციისა, თქვენ უნდა შეცვალოთ ვებ სერვერის კონფიგურაციის ფაილი. ძირითადი მნიშვნელობები მითითებულია კონფიგურაციის ფაილში შემდეგნაირად: servlet.name: myservlet

servlet.myservlet.className: mypackage.MyServletClass servlet.myservlet.url: /mysrvlet

თითოეულ სერლეტს უნდა ჰქონდეს სახელი(servlet.name), რომლითაც ის იდენტიფიცირებულია სერვერზე. ეს სახელი გამოიყენება სერვლეტის თვისებების დასაყენებლად, კერძოდ, იმ კლასის სახელის მითითებისთვის, რომელშიც ინახება სერვლეტის პროგრამა (შემდეგი სტრიქონი), ასევე მისამართი, რომელზედაც ამ სერლეტს ეწოდება (მესამე ხაზი).

კლიენტი სთხოვს ვებ სერვერს მისამართს, სადაც სერვლეტი მდებარეობს (მისამართი უნდა იყოს მითითებული, როგორც servlet.myservlet.url მნიშვნელობა ვებ სერვერის კონფიგურაციის ფაილში). სერვერი გადასცემს მოთხოვნას და მონაცემებს (ასეთის არსებობის შემთხვევაში) სერვლეტს, იღებს პასუხს სერვლეტიდან და უგზავნის მას კლიენტს.

ამ განმარტებით, თუ რა არის სერვლეტი, შეიძლება დასრულდეს. თუმცა ბევრი საინტერესო და სასარგებლო დეტალია, რომელსაც ყურადღება უნდა მიაქციოთ და უფრო დეტალურად შეისწავლოთ.

განსაკუთრებით მნიშვნელოვანია გვახსოვდეს, რომ ცვლადში უნდა იყოს მითითებული servlet კლასის გზა ciasspath, ან შეიძლება განთავსდეს C:\Blazix\classes დირექტორიაში ან ვებ სერვერის კონფიგურაციის ფაილში მითითებულ დირექტორიაში, როგორც server.ciassDir მნიშვნელობა. მას შემდეგ, რაც კონფიგურაციის ფაილი შეიცვლება, რათა შეიცავდეს ინფორმაციას ახალი servlet-ის შესახებ, სერვერი უნდა შეჩერდეს და გადატვირთოთ. სერლეტი ასევე შეიძლება განთავსდეს გაშვებულ სერვერზე ადმინისტრაციული უტილიტის გამოყენებით, მაგრამ ამისათვის სერლეტი უნდა იყოს შეფუთული WAR ვებ არქივის ფაილში. თუ servlet კლასის ფაილი შეიცვალა, არ არის საჭირო სერვერის შეჩერება და ხელახლა გაშვება. ნაგულისხმევად, სერვერი კონფიგურირებულია ისე, რომ სერვერის გამოძახება http://localhost:81/_reload იწვევს ყველა კლასის გადატვირთვას და შეცვლილი servlet კლასი ხელმისაწვდომი გახდება კლიენტის მოთხოვნებისთვის (სურათი 4-1). ეწვიეთ ამ გვერდს მას შემდეგ, რაც servlet კლასის ფაილი შეიცვლება. სერვერის გაჩერება უბრალოდ არ არის საჭირო.

თუ მკითხველს უკვე ჰქონდა გარკვეული გამოცდილება სერლეტებთან, ისინი დააფასებენ Blazix სერვერის სიმარტივეს სხვა Java სერვერებთან შედარებით, როგორიცაა Tomcat სერვერი.

ბიზნესის დასაწყებად, განიხილეთ მარტივი მაგალითი, სერვლეტიზოგიერთი სერვლეტი (ჩამონათვალი 4.1).

ჩამონათვალი 4.1. Servlet SomeServlet.java I

java.io.* იმპორტი; იმპორტი javax.servlet.*; იმპორტი javax.servlet.http.*;

საჯარო კლასი SomeServlet აფართოებს HttpServlet ( public void doGet(HttpServletRequest მოთხოვნა,

HttpServletResponse პასუხი) აგდებს ServletException, IOException ( Printwriter out = answer.getWriter(); out.println("Hello World");

ვებ სერვერის კონფიგურაციის ფაილში ჩაწერეთ შემდეგი:

servlet.name: პირველი

servlet.first.className: SomeServlet

servlet.first.url: /dofirst

შემდეგ ბრაუზერიდან სერვლეტზე ზარი მიიღებს ფორმას http://localhost:81 /dofirst (სურათი 4.2).

Java სერლეტები უზრუნველყოფენ პლატფორმისგან დამოუკიდებელ მეთოდს ვებ აპლიკაციების შესაქმნელად (ეს არ არის გარკვეული, მაგრამ ჩვენ არ ჩავუღრმავდებით ამ საკითხს, რადგან მაშინ დაგვჭირდება განვსაზღვროთ რას გულისხმობს ვებ აპლიკაციაში, რომელიც არ შედის დაფარული თემების სია), და ბევრი აპლიკაცია სწრაფად მუშაობს და არ გააჩნია CGI აპლიკაციების შეზღუდვები. სერლეტი მუშაობს ვებ სერვერის ქვეშ და, აპლეტისგან განსხვავებით, არ საჭიროებს მომხმარებლის გრაფიკულ ინტერფეისს. სერვლეტი ურთიერთობს სერვერთან მასთან მოთხოვნისა და პასუხების გაცვლით. კლიენტის პროგრამა მოთხოვნებს უგზავნის სერვერს. მოთხოვნას ამუშავებს სერვერი, გადაეცემა სერვლეტს, სერვლეტი უგზავნის პასუხს სერვერის მეშვეობით კლიენტს. Servlets დღეს ძალიან პოპულარულია ინტერაქტიული ვებ აპლიკაციების შესაქმნელად. არსებობს მრავალი ვებ სერვერი, რომელსაც შეუძლია მუშაობა სერლეტებთან, როგორიცაა Tomcat, iPlanet ვებ სერვერი (ყოფილი Netscape

Enterprise Server), Blazix. J Builder Enterprise იყენებს Borland Enterprise სერვერს (BES), რომელიც შედის პაკეტში და ასევე მხარს უჭერს ვებ სერვერები Logic, WebSphere და iPlanet. J Builder Enterprise სერვერი მოიცავს Tomcat სერვერს, რომელიც გამოიყენება "ნაგულისხმევად".

ბრინჯი. 4.2. სერვლეტის გამოძახება

სერლეტების ერთ-ერთი მნიშვნელოვანი უპირატესობა მათი სიჩქარეა. CGI აპლიკაციებისგან განსხვავებით, სერლეტები მხოლოდ ერთხელ იტვირთება მეხსიერებაში და შემდეგ სრულდება უშუალოდ მეხსიერებიდან. სერვლეტები არსებითად მრავალძაფიანი აპლიკაციებია. გარდა ამისა, ისინი დამოუკიდებელნი არიან პლატფორმაზე, რადგან ისინი Java-ზეა დაწერილი.

JSP ტექნოლოგია რომელსაცთავი 3, არის სერვლეტ ტექნოლოგიის გაფართოება, JSP-ში Განსაკუთრებული ყურადღებაფოკუსირებულია HTML და XML დოკუმენტებთან მუშაობაზე. როგორც HTML და XML კოდის ნაწილი, JSP ფრაგმენტები ყველაზე ხშირად გამოიყენება. როგორ გავაკეთოთ არჩევანი და გადაწყვიტოთ რა გამოვიყენოთ: სერლეტები თუ სერვერის გვერდები? Servlets უფრო შესაფერისია დაბალი დონის პროგრამირების ამოცანების გადასაჭრელად და ნაკლებად შესაფერისი აპლიკაციის პრეზენტაციის ლოგიკის შექმნის ამოცანების გადასაჭრელად. მეორეს მხრივ, სერვერის JSP-ები, ძირითადად, ორიენტირებულია იმაზე, თუ როგორ წარუდგინოს შედეგი მომხმარებელს ყველაზე მოსახერხებელი გზით. სერვერის გვერდები იქმნება HTML კოდით, HTML დოკუმენტის ავტორის სტილის გამოყენებით. JSP ტექნოლოგია უზრუნველყოფს ბევრად უფრო მდიდარ ფუნქციებს, ვიდრე უბრალო HTML. JSP-ებს შეუძლიათ უზრუნველყონ აპლიკაციის ლოგიკის განხორციელების შესაძლებლობა მარტივი Java ლობიოს, ასევე სერვერის მხარეს EJB-ების გამოყენებით მორგებული მალსახმობების ბიბლიოთეკების შექმნით. თავისთავად, Java სერვერის გვერდები შეიძლება იყოს მოდულარული, მრავალჯერადი გამოყენების კომპონენტები, რომლებიც მუშაობენ პრეზენტაციის ლოგიკით და შეიძლება გამოყენებულ იქნას სხვადასხვა შაბლონებთან და ფილტრებთან ერთად. JSP-ები გარდაიქმნება სერლეტებად, ასე რომ თქვენ შეგიძლიათ თეორიულად გამოიყენოთ მხოლოდ სერლეტები. თუმცა, JSP ტექნოლოგია შექმნილია ვებ დოკუმენტების შექმნის პროცესის გასამარტივებლად, განაცხადის პრეზენტაციის ლოგიკის გამოყოფით დოკუმენტის შინაარსისგან. უმეტეს შემთხვევაში, კლიენტისთვის გაგზავნილი პასუხი შედგება როგორც დოკუმენტის პრეზენტაციის შაბლონებისგან, ასევე მონაცემებისგან, რომლებიც ავტომატურად გენერირდება შაბლონის შევსებით. ამ სიტუაციებში, JSP-ებთან მუშაობა ბევრად უფრო ადვილია, ვიდრე სერლეტებთან.

ჯავის ერთ-ერთი ყველაზე სასიამოვნო თვისება მისი მრავალმხრივი ბუნებაა. რა თქმა უნდა, ტრადიციული დესკტოპის შექმნა და კიდევ მობილური აპლიკაციები- Მაგარია. მაგრამ რა მოხდება, თუ გსურს გამოხვიდე ტრასიდან და შეხვიდე Java ვებ განვითარების ტერიტორიაზე? შენთვის იქ კარგი ამბავი: ენას გააჩნია სრული Servlet API, რომელიც საშუალებას გაძლევთ შექმნათ ძლიერი ვებ აპლიკაციები ზედმეტი პრობლემების გარეშე.

Java აპლიკაციების აგება Servlets-ით

ასე რომ, ჩვენ უკვე შევქმენით აპლიკაციის კონფიგურაციის ფაილები. თუმცა, ამჟამინდელ მდგომარეობაში ის ფაქტიურად არაფერს აკეთებს. ჩვენ გვინდა, რომ კლიენტებს შეეძლოთ დარეგისტრირება HTML ფორმით, ასე რომ, შემდეგი რაც უნდა გავაკეთოთ არის JSP ფაილების შექმნა, რომლებიც ასახავს ზემოთ მოცემულ ფორმას და კლიენტის დეტალებს რეგისტრაციის წარმატებით დასრულების შემდეგ. ეს არის ის, რასაც ჩვენ ახლა გავაკეთებთ.

გარეგნობაზე მუშაობა

აპლიკაციის გარეგნობა განისაზღვრება ორი JSP ფაილით - MVC-ის კონტექსტში მათ ხედებს უწოდებენ. პირველი პასუხისმგებელი იქნება სარეგისტრაციო ფორმის ჩვენებაზე და შესაძლო შეცდომებიგამოიძახეს შეყვანილი მონაცემების დამოწმების შემდეგ. მეორე იქნება ნორმალური მისასალმებელი გვერდი, რომელიც აჩვენებს მომხმარებლის მიერ შეყვანილ მონაცემებს რეგისტრაციის პროცესის წარმატებით დასრულების შემდეგ.

აქ არის პირველი JSP ფაილი:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> რეგისტრაცია

რეგისტრაცია

$ (დარღვევა).