1 / 127

Programmēšana datortīklu vidē

Programmēšana datortīklu vidē RTU studiju programmas “Datorsistēmas” pilnveidošana absolventu profesionālās konkurētspējas paaugstināšanai Līguma Nr. 200 6 /02 38 /VPD1/ES F /PIAA/0 6 /APK/3.2.3.2./00 15 /0007. Programmēšana datortīklu vidē. Lekciju materiāls.

dennis
Download Presentation

Programmēšana datortīklu vidē

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programmēšana datortīklu vidēRTU studiju programmas “Datorsistēmas”pilnveidošanaabsolventuprofesionālās konkurētspējaspaaugstināšanaiLīguma Nr.2006/0238/VPD1/ESF/PIAA/06/APK/3.2.3.2./0015/0007

  2. Programmēšanadatortīklu vidē Lekciju materiāls Pieteicējs: ass. profesore Eleonora Latiševa Docētājs: lektors Aloizs Ratnieks Rīgas Tehniskā universitāteDatorzinātnes un Informācijas Tehnoloģijas fakultāte Informātikas un Programmēšanas katedra

  3. Tēmas • IEVADS: tehnoloģijas J2EE priekšrocības, arhitektūra MVC, lietojumprogrammas J2EE līmeņi, tehnologijas J2EE interfeisi. • TEHNOLOĢIJA JAVA SERVLET: servleta funkcijas, klienta un servera mijiedarbība, klienta pieprasījumu apkalpošana, servleta dzīves cikls, Multi – MIME tipi, seansa vadība, pieprasījumu dispetčerizācija. • TEHNOLOĢIJA JAVA SERVER PAGES: komentāri, direktīvas, definīcijas, skriptleti, izteiksmes, darbības, kļūdu apstrāde, lietotāja tagu bibliotēkas, tagu bibliotēkasa deskriptors. • TEHNOLOĢIJA ENTERPRIZE JAVABEANS: seansu un objektu komponenti, komponentu dzīves cikls, attālināta metožu izsaukšana (Remote Method Invocation). • INTEGRĒTĀS IZSTRĀDES VIDES: Borland JBuilder, IBM WebSphere.

  4. IEVADS(1) Tehnoloģijas J2EE priekšrocības: • vienkārša pielikumu mēroga izmainīšana atkarībā no pieprasījuma; • viegla integrācija ar esošām informācijas sistēmām; • elastīgs drošības modelis; • serveru un komponentu brīva izvēle; • vienkārša arhitektūra un izstrādes modelis, kurš dod iespēju noteikt uzvešanos pielikuma piegādes laikā un atbalsta darba dalīšanu.

  5. IEVADS(2)

  6. IEVADS(3) Lietojumprogrammas J2EE līmeni: • klientu līmenis; • Web līmenis; • biznesa līmenis; • datu līmenis.

  7. IEVADS(4) Tehnologijas J2EE interfeisi: • JDBC - darbam ar datu bāzēm; • Java Transaction API - transakciju vadībai; • Java Naming and Directory Interface (JNDI) - dažādu objektu meklēšanai; • Java Message Service(JMS) - ziņojumu sūtīšanai un saņemšanai; • JavaMail - pasta ziņojumu sūtīšanai un saņemšanai; • JavaIDL - mijiedarbībai ar CORBA dienestiem.

  8. TEHNOLOĢIJA JAVA SERVLET (1) Servleta funkcijas. Servleti tika radīti, lai paplašinātu Web serveru iespējas. Tie organizē klienta un servera mijiedarbību, apstrādā klientu pieprasījumus,vada seansu un pieprasījumu dispetčerizāciju, izpilda ievadītu datu pārbaudi un citas funkcijas. Servleta izpildes beigu posmā tas ģenerē atbildi pārlūkprogrammai.

  9. TEHNOLOĢIJA JAVA SERVLET (2) Klienta un servera mijiedarbība. Pēc pieprasījuma saņemšanas servletu konteineris izsauc metodi service(), kura noskaidro pieprasījuma tipu un izsauc metodi doGet() GET pieprasījuma gadījumā un metodi doPost() POST pieprasījuma gadījumā. Šo metožu pirmais HttpServletRequest tipa parametrs satur visu informāciju par klienta pieprasījumu, bet otrais HttpServletResponse tipa parametrs ir paredzēts atbildes izvietošanai, kura tiks pārraidīta pārlūkprogrammai (klientam).

  10. TEHNOLOĢIJA JAVA SERVLET (3) Interfeisa Servlet metode service. Metode service() tiek izsaukta katram pieprasījumam: public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException; Klasē HttpServlet šī metode realizēta kā dispetčeris, kurš atkarībā no pieprasījuma tipa izsauc vienu speciālu metodi: • doGet – GET pieprasījumam; • doPost – POST pieprasījumam; • doPut – PUT pieprasījumam; • doDelete – DELETE pieprasījumam. Servlets var izpildīt dažas metodes service() vienlaicīgi.

  11. TEHNOLOĢIJA JAVA SERVLET (4) Klienta pieprasījumu apkalpošana. Lai apkalpotu klienta pieprasījumu teorētiski var pārlādēt metodi service(), bet ir ieteikts pārlādēt metodi doGet(), vai metodi doPost(), vai abas šīs metodes. Dažos gadījumos ir vienādi jāapstrādā POST un GET pieprasījumi. Šajā gadījumā ir jāizsauc metodi doGet no metodes doPost vai otrādi: protected void doPost(httpServletRequest req, HttpServletResponse res) throws ServletEXception, IOException {doGet(req, res); }

  12. TEXNOLOĢIJA JAVA SERVLET (5) Atbildes pārraidīšana klientam. Lai pārraidītu atbildi klientam, var ģenerēt HTML lappusi un izvietot to tieši izejas plūsmā. Atbildes pārraidīšanai var izmantot plūsmu ServletOutputStream, kuru var izveidot veidā: ServletOutputStream out = res.getOutputStream(); vai plūsmu PrintWriter, kuru var izveidot veidā: PrintWriter out = response.getWriter(); Izmantojot iegūto atsauci, HTML lappusi var izvietot izejas plūsmā: out.println(“<HTML><HEAD><TITLE>”); ...Pēc lappuses izvietošanas izejas plūsmā PrintWriter, to ir jāaizver: out.close();

  13. TEHNOLOĢIJA JAVA SERVLET (6) Vienkārša servleta piemērs. import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloServlet extends HTTPServlet { public void doGet(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException { PrintWriter out = null; res.setContentType(“text/htnl”); out = res.getWriter(); out.println(“<html>”); out.println(“<head><title>Sample</title></head>”); out.println(“<body>”); out.println(“Hello World!”); out.println(“</body>”); out.println(“</html>”); } }

  14. TEHNOLOĢIJA JAVA SERVLET (7) Multi – MIME tipi.Daudzmērķīgs pasta paplašinājumu Internet protokols (Multipurpose Internet Mail Extension – MIME) tiek izmantots lai pārsūtītu binārus un multimedia datus un datus, kas sastāv no dažādām daļām, kas ir attēlotas dažādos formātos. Web pārlūks izmanto MIME – tipus, lai noskaidrotu datu attēlošanas veidu. Pirms atbildes izvietošanas izejas plūsmā ir jānorāda atbildes MIME – tipu veidā: response.setContentType(“text/html”);

  15. TEHNOLOĢIJA JAVA SERVLET(8) Dažu dokumentu MIME – tipi: • teksts vai HTML fails – text/html; • pasta ziņojums vai ziņas – text/plain; • attēls fofmātā gif – Application/gif; • worda dokuments – Application/msword; • mūzikas faili MIDI – audio/midi; • nezināmais tips,baitu plūsma – Application /octed – stream.

  16. TEHNOLOĢIJA JAVA SERVLET (9) Servleta dzīves cikls. Pirms pirmā pieprasījuma apstrādes serveris izsauc interfeisa Servlet metodi init(): Public void init(ServletConfig config) throws ServletException {...} Klase HttpServlet satur šīs metodes realizāciju, kas der vienkāršu servletu vairākumam: tā saglabā informāciju par servleta konfigurāciju un apstiprina inicializācijas faktu darba protokolā. Pēc servleta inicializācijas tas ir gatavs apkalpot klienta pieprasījumus. Metode service() tiekizsauktakatra pieprasījuma apkalpošanai. Lai atbrīvotu resursus pēc pieprasījuma apkalpošanas, tiek izsaukta metode public void destroy().

  17. TEHNOLOGIJA JAVA SERVLET (10) Interfeis ServletConfig. Metodes init() parametru ServletConfig piedāvā servletu konteineris pēc servleta klases apstrādes. Ar metodi ServletConfig sc = getServletConfig(); var saņemt atsauci, kas norāda uz interfeisa ServletConfig realizācijas objektu. Ar šīs atsauces palīdzību var saņemt informāciju par servleta inicializācijas parametriem un piekļūt pie objekta ServletContext: • String s = sc.getInitParameter(String param) ; • ServletContext cont = sc.getServletContext();

  18. TEHNOLOĢIJA JAVA SERVLET (11) Metode init(). Jā ir nepieciešams nodibināt sakarus ar datu bāzi, izveidot jaunu objektu seansa laikā, sameklēt objektu nosaukumu dienestā un t.t., metodi init() var pārlādēt. Šajā gadījumā servleta metodes init() pašā sākumā ir jāizsauc metodi super.init(config). Atšķirībā no metodes service(), metodes init() sinhronizācijas jautājumi nav būtiski, tāpēc ka serveris izsauc metodi init() pirms servleta izmantošanas. Visi servleti parasti tiek izpildīti daudzplūsmu vidē. Ja tas nav vēlams, servleti var realizēt arī interfeisu SingleThreadModel. Šajā gadījumā serveris nevarēs iedarbināt vairākas metodes service() plūsmas.

  19. TEHNOLOĢIJA JAVA SERVLET (12) Seansa vadība Protokols HTTP nesaglabā savu stāvokli. Tāpēc Web serverim nav jāsaglabā informācija par iepriekšējiem pieprasījumiem. Bet dažos gadījumos, piemēram komercijas lietojumprogrammās, ir jāglabā informācija par iepriekšējiem pieprasījumiem. Pretējā gadījumā pircējam būtu jāievada savs loģiskais vārds un parole pirms katra pieprasījuma, ja pieprasījuma garums pārsniedz vienas lappuses garumu. Par seansu sauc viena lietotāja pieprasījumu secību, kas tika pārraidīta no tās pat pārlūkprogrammas.

  20. TEHNOLOĢIJA JAVA SERVLET (13) Seansa vadības līdzekļiLai saglabātu seansa stāvokli, var izmantot sekojošus līdzekļus: • formas noslēptus laukus; • URL modifikāciju; • nemainīgus cookies; • seansu kontroles API. Noslēptu lauku izmantošanas gadījumā servlets var ierakstīt informāciju par seansa stāvokli Web – lappusē , kura tiks atgriezta klientam pēc iepriekšējā pieprasījuma apstrādes. Kad lietotājs pārraida nākošo pieprasījumu jaunā Web – lappusē, visa formas informācija, ieskaitot noslēptos laukus, tiek pārraidīta serverim.

  21. TEHNOLOĢIJA JAVA SERVLET (14) Seansu vadības līdzekli Iepriekšējā paņēmiena trūkums: lietotājs var apskatīt lappuses kodu un noskaidrot informāciju, kas ir ierakstīta noslēptos laukos. URL modifikācijas gadījumā servlets papildina visu hiperatsauču pieprasījumus, kur lietotājs var izdarīt peles klikšķi, ar parametriem. Piemēram, lietotājam var nozīmēt identifikācijas numuru 673, papildinot hiperatsauču URL ar parametru ID= 673: http://myServer/servlets/app?ID=673&... Šī panēmiena trūkumi: • Lietotājs var apskatīt UTL; • Pieprasījuma GET garums ir ierobežots.

  22. TEHNOLOĢIJA JAVA SERVLET (15) Nemainīgie cookiesCookies – tie ir nelieli tekstveida informācijas bloki, kurus Web – serveris pārraida pārlūkam, bet pārlūks atgriež tos neizmainītā veidā serverim, kad apmeklē to pašu Web – saitu vai domenu. Neizmainītais cookies liecina par to, ka tas pieder iepriekš reģistrētām lietotājam un serveris atļauj tā piekļūšanu neuzrādot reģistrācijas vārdu un paroli. Cookies neapdraud sistēmas drošību, bet tie ievērojami apdraud informācijas konfidencialitāti. Tāpēc cookies nedrīkst izmantot slepenai informācijai.

  23. TEHNOLOĢIJA JAVA SERVLET (16) Nemainīgie cookies Izveidot cookie var ar konstruktoru Cookie cookie = new Cookie(“nosaukums”,“teksts”); Lai papildinātu atbildes virsrakstu ar cookie, vispirms jāpapildina atbilde ar cookie izmantojot operatoru response.addCookie(cookie); un tikai pēc tam atbildē var izvietot datus. Fragmenta piemērs: res.addCookie(new Cookie(“c1”,“ My first cookie”)); res.addCookie(new Cookie(“c2”, “My second cookie”)); PrintWriter out = res.getWriter(); 0ut.println(“<html>”); ...

  24. TEXNOLOĢIJA JAVA SERVLET (17) Nemainīģie cookies Lai saņemtu informāciju par cookie, no sākuma ir jāizveido visu cookie masīvu: Cookie [] cookies = request.getCookies(); Pēc tam var saņemt cookie nosaukumu un tā vērtību ar indeksa palīdzību: For(int i = ; i < cookies.length; i++) { String name = cookies[i].getName(); String value = cookies[i].getValue(); } Cookies trūkumi: • Dažas pārlūkprogrammas neatbalsta Cookie; • Lai neapdraudētu informācijas konfidencialitāti, daži lietotāji aizliedz cookies izmantošanu.

  25. TEHNOLOĢIJA JAVA SERVLET (18) Seansu kontroles APISeansu kontroles API ir realizēts interfeisā HttpSession. Sesijas organizācijai šis interfeis izmanto scookie vai URL modifikāciju. URL modifikācija tiek izmantota, kad pārlūks neatbalsta cookies vai tie ir aizliegti. Interfeisa HttpSession izmantošanas gadījumā programmētājam nav jāiedziļinās šī mehanisma sīkumos. Sesiju var izveidot ar operatoru: HttpSession session = request.getSession(true); Pēc sesijas objekta izveidošanas tajā var ierakstīt informāciju ar metodi setAttribute(String, Object), nolasīt informāciju ar metodi getAttribute(String), kura dod atpakaļ null, ja neeksistē objekts ar tādu nosaukumu.

  26. TEHNOLOĢIJA JAVA SERVLET (19) Seansu kontroles API Saņemt visu parametru nosaukumus var ar metodi getAttributeNames(). Metode getId() dod atpakaļ unikālo tekošā seansa identifikatoru. Metode getServletContext() dod atpakaļ kontekstu, kuram pieder tekošais seans. Metode setMaxInactiveInterval(int) uzdod maksimālo laiku sekundēs starp klienta pieprasījumiem, pēc kura servletu konteinerim ir jāaizver tekošais seans. Metode invalidate() aizver seansu un atbrīvo visus saistītos ar seansu objektus.

  27. TEHNOLOĢIJA JAVA SERVLET (20) . Pieprasījumu dispetčerizācija Parasti pieprasījums tiek pārraidīts servletam, tāpēc ka pieprasījuma parametru pārbaudei un bean – komponentu iestatīšanai jāizmanto programmēšanas līdzekļus, kurus ērtāk izmantot servletā. Pēc tam pieprasījums tiek pāradresēts JSP lappusei. Tā atvieglo HTML atbildes ģenerāciju. Bet JSP lappusei atbilst vienīgs rezultējošs priekšstats. Tāpēc dažāda tipa pieprasījumus ir jāpāradresē atbilstošām JSP lappusēm. Pieprasījumu pāradresēšanai ir paredzēta interfeisa RequestDispatcher metode forward. RequestDispatcher objekta atsauci var saņemt ar metodes getRequestDispatcher() palīdzību.

  28. TEHNOLOĢIJA JAVA SERVLET (21) Pieprasījumu dispetčerizācija Metode getRequestDispatcher() ir kā objektā ServletContext, tā arī objektā ServletRequest. Šīs metodes atšķirās ar to,ka metodei ServletContext.getRequestDispatcher() ir jānorāda maršruts attiecīgi konteksta saknes katalogam,bet metodei ServletRequest.getRequestDispatcher() ir jānorāda maršruts attiecīgi tekošā pieprasījuma saknes katalogam. Piemērs: Ja servletTest ir definēts veidā: public class servletTest extends HttpServlet{ public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{

  29. TEHNOLOĢIJA JAVA SERVLET (22) Pieprasījumu dispetčerizācija Pēc dažu darbību izpildes mēs varam pāradresēt pieprasījumu citam servletam vai JSP lappusei: ServletContext sc = this.getServletContext(); RequestDispatcer rd = sc.getRequestDispatcher(“/jspFile.jsp”); If(rd != null){ try{ rd.forvard(req, res); } catch(Exception e){//iznēmuma apstrāde} Interfeisā RequestDispatcher ir vēl viena ļoti lietderīga metode – include(). Šī metode dod iespēju iekļaut atbildē resursa kontekstu ( servletu, JSP – lappusi, HTML – failu).

  30. TEHNOLOĢIJA JAVA SERVLET (23) Pieprasījumu dispetčerizācija Piemērs: iekļaut servletā JavaScript scenāriju, kas ir izvietots ārējā failā. ServletContext sc = this.getServletContext(); RequestDispatcher rd = sc.getRequestDispatcher(“/javascriptFile.js”); If(rd != null) { try{rd.include(req, res);} catch(Exception e){System.out. ptintln(“Exception: “+e.getMessage()); } }

  31. TEHNOLOĢIJA JAVA SERVLET (24) Pieprasījumu dispetčerizācija Piemērs: no viena servleta izsaukt citu servletu ar parametru nodošanu. import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SourceServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse rezult) throws ServletException,IOEsception { request.getSession().setAttribute( “rezultString”, “Hello, World!”); getServletContext().getRequestDispatcher( “/servlet/DestServlet”).forward(request,result); } }

  32. TEHNOLOĢIJA JAVA SERVLET (25) Pieprasījumu dispetčerizācija Izsaucamais servlets: import java .io.*; import javax.servlet.*; import javax.servlet.http.*; public class DestServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out. Println(“<html><head>” + “<title> Target Servlet </title></head>” + “<body bgcolor = #fff1df>” + “<h1> Called Servlet </h1>” + request.getSession().getAttribute(“rezultString”) + “</body></html>”); out.close(); } }

  33. TEHNOLOĢIJA JAVA SERVLET (26) Pieprasījumu dispetčerizācija Iepriekšējā piemēra izpildes rezultāts: Called Servlet Hello, World ! Parametru nodošanai var izmantot konstrukciju: session.setAttribute(“Name”, “Value”); Bet parametra saņemšanai var izmantot konstrukciju: HttpSession session = request.getSession(); String value = session.getAttribute(“Name”);

  34. TEHNOLOĢIJA JAVASERVER PAGES (1) JavaServer Pages raksturojums JSP lappuses izskatās kā HTML lappuses, kas ir papildinātas ar jauniem tagiem, kuros tiek izvietoti dinamiski dati. Pēc JSP lappuses kompilācijas tiek iegūts servlets, kas ģenerē HTMLatbildi klientam. Šīs atbildes dinamisko datu kpmplekts ir atkarīgs no konkrētā pieprasījuma.

  35. TEHNOLOĢIJA JAVASERVER PAGES(2) JSP tagu saraksts • <! - - HTML komentārs [<% = izteiksme %>] - - > • <% - - JSP komentārs - - %> • <%@ direktīva %> • <%! definīcija %> • <% skriptlets %> • <%= izteiksme %> • <jsp:darbība /> HTML komentārus klienti redz kā HTML tekstu. JSP komentārs nav redzams HTML lappusē.

  36. TEHNOLOĢIJA JAVASERVER PAGES (3) Direktīvas Direktīvas ir ziņojumi JSP konteinerim. Tās var ietvert dažus parametrus. Piemērs: <%@ page • [ language = “java” ] • [ extends = “klases nosaukums” ] • [ import = “resurs” ] • [ session = “false” vai “true” ] • [ buffer = “none” vai “izmērs kb” ] • [ autoFlush = “false” vai “true” ] • [ isThreadSafe = “false” vai “true” ] • [ info = “informācija” ] • [ errorPage = “ziņojuma lappuses URL” ] • [ isErrorPage = “false” vai “true” ] • [ contentType = “satura tips” ] • % >

  37. TEHNOLOĢIJA JAVASERVER PAGES (4) Direktīvas Iekļaut statiskus datus LSP lappusē var ar direktīvu: <%@ include file = “Iekļaujamas lappuses URL” %> Pievienot tagu biblioteku var ar direktīvu: <%@ taglib uri = “tagu deskriptoru bibliotekas faila izvietošanas vieta” prefix = “tagu deskriptoru bibliotekas prefiks” %> Šis prefiks ir jānorāda pirms jebkura taga nosaukuma, kas ir definēts tagu deskriptoru bibliotekas failā TLD (tag libraru descriptor). Piemēram, ja failā TLD ir definēts tags ar nosaukumu tag1 un parametra prefix vērtība ir test, tad HTML failā ir jāizmanto taga nosaukums test:tag1. Šo taga nosaukumu var izmantot vienkārši veidā <test:tag1/> vai veidā: <test:tag1> Patvaļīgs JSP – kods </ test:tag1>, ja tags ir definēts kā konteineris, kurš atļauj izmantot taga ķermeni. Direktīvas neko neizvada plūsmā OUT.

  38. TEHNOLOĢIJA JAVASERVER PAGES (5) DefinīcijasDefinīcijās tiek definētas metodes un mainīgie, kas turpmāk tiks izmantoti JSP lappusē. Definīciju piemēri: <%! int i = 42; %> <%! public int add(int x, int y) { return x + y ; } %> Definīcijas neko neizvada plūsmā out.

  39. TEHNOLOĢIJA JAVASERVER PAGES (6) Skriptleti Skriptleti var ietvert jebkuru koda fragmentu, kas atbilst valodai, kas tika norādīta direktīvā language. Tekstu, HTML – tagus un JSP – elementus nedrīkst izvietot skriptletos. Piemērs: <% if(Calendar.getInstance().getCalendar(). AM_PM == Calendar. AM) { %> Labrīt! <% } else { %> Labvakar! <% } %> Skriptletu fragmentiem, apvienotiem norādītajā secībā, ir jāizveido pareizā programma. Ja lietotājs vēlās izmantot simbolu secību %> skriptleta iekšpusē, bet nevis kā nobeiguma tagu, tad viņam ir jāizmanto simbolu secība %\>.

  40. TEHNOLOĢIJA JAVASERVER PAGES (7) Izteiksmes Izteiksmes tiek izmantotas, lai izvietotu aprēķinātās vērtības tieši izvades plūsmā. Pirms izvietošanas plūsmā aprēķinātās vērtības tiek pārveidotas tekstveida rindā. Ja vērtību nav iespējams pārveidot tekstveida rindā, tiek ģenerēts izņēmums ClassCastEXception. Izteiksmes izmantošanas piemērs: Tagadējais laiks: <% = new java.util.Date() %>

  41. TEHNOLOGIJA JAVASERVER PAGES (8) DarbībasJSP darbības ietver failu dinamisku iestarpināšanu, ievadītu parametru pārbaudi ar komponentu JavaBeans palīdzību, pieprasījumu pāradresēšanu un citas darbības. Darbību sintakse balstās uz XML valodas. Darbību tagu saraksts: • < jsp : useBeans > • < jsp : getProperty > • < jsp : setProperty > • < jsp : include > • < jsp : forward > • < jsp : plugin >

  42. TEHNOLOĢIJA JAVASERVER PAGES (9) Darbība < jsp : useBean > Specifikācijā JavaBeans komponents (Bean) ir definēts kā atkārtoti izmantojams programmatūras komponents, kuru var vadīt ar integrētās vides instrumentiem. Klasei, kura tiks izmantota kā bean – komponents, ir jāatbilst sekojošām prasībām: • klases konstruktorā nedrīkst izmantot parametrus; • Klasē nedrīkst izmantot mainīgos, definētus ar atslēgvārdu public; • Klases mainīgā nosaukums jāsāk ar mazo burtu; • Lai piekļūtu pie vērtībām, kas tiek glabātas klasē, jāizmanto metodes getXxx() (vai isXxx()) un setXxx(). Šajos metožu nosaukumos mainīgā nosaukums jāsāk ar lielo alfabēta burtu.

  43. TEHNOLOĢIJA JAVASERVER PAGES (10) Darbība <jsp:useBean> Piemērs: dota java klase UserInfo. package jsparbeanparametrasanemsanu; public class UserInfo { private String name = “Ozols”; public String getName() { return name; } } Jāizveido JSP lappuse, lai saņemtu klases UserInfo lauka name vērtību.

  44. TEHNOLOĢIJA JAVASERVER PAGES (11) Darbība <jsp:useBeans> Saņemt lauka name vērtību. <html> <head> <jsp:useBean id = “user” scope = “request” class = “jsparbeanparametrasanemsanu.UserInfo”/> <title> JSP ar Bean parametra saņemšanu </title> </head> <body> bgcolor = “ffffff” > <h2><jsp:getProperty name = “user” property = “name” /></h2> </body> </html>

  45. TEHNOLOĢIJA JAVASERVER PAGES (12) Darbībā <jsp:useBean> Parametrs id = “user” norāda bean komponenta nosaukumu JSP – lappusē, līdzīgi tam, kā faila mainīgais norāda to failu, no kura tiks nolasīta vai kurā tiks ierakstīta informācija. Ja Bean komponents jau bija izveidots ar citu tagu <jsp:useBean>, tad id vērtībai ir jāsakrīt ar to vērtību, kas tika izmantota pirmajā tagā. Parametrs scope = “[page] | [request] | [session] | [ application]” norāda redzamības apgabalu, kurā eksistē bean komponents un kurā ir pieejama parametra id vērtība. Pēc noklusēšanas – page. Parametrs class = “pakete.klase” izveido bean – komponentu ar vārdu new un klases konstruktoru. Papildus tagā <jsp:useBean> var izmantot sekojošus parametrus:

  46. TEHNOLOĢIJA JAVASERVER PAGES (13) Taga <jsp:useBean> parametri: • type = “pakete.klase”. Ja Bean komponents jau eksistēredzamības apgabalā, tad parametrs nozīmēs bean – komponentam datu tipu, kas atšķiras no tā, pēc kura tas tika izveidots. Par type vērtību var būt klases class superklase vai interfeis, kas tika realizēts klasē class. Ja parametrs type tiek izmantots bez parametra class vai beanName, tad Bean komponenta eksemplārs netiks izveidots; • Class = “pakete.klase” type = “pakete.klase” izveido norādītās klases Bean eksemplāru un nozīmē tam norādīto datu tipu; • beanName = “{ pakete.klase | <% = izteiksme %>}” type = “pakete.klase” /> ķermenis </ jsp:useBean> izveido Bean komponenta eksemplāru no klases, serializēta šablona vai izteiksmes, kuras rezultāts ir klase vai šablons.

  47. TEHNOLOĢIJA JAVASERVER PAGES (14) Taga <jsp:useBean> parametriParametra beanName izmantošanas gadījumā Bean komponentu izveido metode java.bean.Beans.instantiate(). Metode pārbauda,vai klase ir šablons. Šablona gadījumā metode Beans.instantiate() nolasa serializētu formu (ar nosaukumu, līdzīgu package.class.ser) ar klašu ielādes programmu. Tādejādi darbība <jsp:useBean> tiek izmantota, lai sameklētu vai izveidotu JavaBean komponentu, kurš tiks izmantots lappusē. No sākuma Web konteineris mēģina sameklēt Bean komponentu pēc tā atribūtiem id un scope. Ja tāds bean – komponents nav sameklēts, tad konteineris izveido tā eksemplāru no klases vai serializēta šablona.

  48. TEHNOLOGIJA JAVASERVER PAGES (15) Darbības <jsp:useBean> raksturojumsIr jāatzīmē, ka tags <jsp:useBean> neatbalsta Enterprize JavaBeabs. Bet lai piekļūtu pie Enterprize Java Beans ar tagu <jsp:uzeBean> var izsaukt standarta JavaBean komponentu, kurš savkārt var izsaukt Enterprize JavaBeans. Var arī izveidot tādu lietotāja tagu, kurš tieši izsauks Enterprize JavaBeans. Lai nomainītu java klases mainīgā vērtību, JSP lappusē ir jāizmanto sekojoša konstrukcija: <jsp:setProperty name =“klases identifikātors id” property = “mainīga nosaukums” value = “mainīga vērtība” />

  49. TEHNOLOĢIJA JAVASERVER PAGES (16) Darbība <jsp:getProperty> Tags <jsp:getProperty> saņem Bean komponenta īpašību, pārveido to tekstveida rindā un izvieto to izejas plūsmā out. Piemērs: <jsp:useBean id = “saletax” scope = “page” class = “beans.tax” /> <H2> Nodoklis:<jsp:getProperty name = “saletax” Property = “curr_tax” /> </H2>

  50. TEHNOLOĢIJA JAVASERVER PAGES (17) Darbība <jsp:setProperty>Tags <jsp:setProperty> iestata vienu vai vairākas bean komponenta īpašības. Taga <jsp:setProperty> parametra name vērtībai ir jāsakrīt ar taga <jsp:useBean> parametra id vērtību. Taga sintakse: <jsp:setProperty name = “bean komponenta nosaukums jsp lappusē” {property = “*” | property = “īpašības_nosaukums” [param = “parametra_nosaukums] | property = “īpašības _nosaukums” value = {rinda | <% = izteiksme %> }“ } />

More Related