1 / 85

Modern a tīmekļa programmēšana Java pasaulē

Modern a tīmekļa programmēšana Java pasaulē. Alina Vasiļjeva Latvijas Universitāte Datorikas fakultāte 20 12 .gada 6 . decembris. Plāns. Tīmekļa lietojumprogrammas Arhitektūra Lietojumprogrammas slānis Datu slānis P rezentācijas slānis. Tīmekļa lietojumprogrammas. Pamatjēdzieni.

Download Presentation

Modern a tīmekļa programmēšana Java pasaulē

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. Moderna tīmekļa programmēšana Java pasaulē Alina Vasiļjeva Latvijas Universitāte Datorikas fakultāte 2012.gada 6. decembris

  2. Plāns • Tīmekļa lietojumprogrammas • Arhitektūra • Lietojumprogrammas slānis • Datu slānis • Prezentācijas slānis

  3. Tīmekļa lietojumprogrammas Pamatjēdzieni

  4. gan mazuļi gan vecmammiņas Internets mūsdienās • Mūsdienās VISI zina kas ir Internets un VISI izmanto Internetu • Bet mūs, kā datoriķus, interesē kā veidot tīmekļa lietojumprogrammas

  5. Internets un tīmeklis • Internet ir visā pasaulē izplatīta publiski pieejamo datoru tīklu sistēma, kas pārraida datus izmantojot standartu protokolu IP (Internet Protocol) • World Wide Web (WWW, vai vienkārši Web) ir starp saistīto hiperteksta dokumentu sistēma, kurai var piekļūt pa Internetu • Tīmekļa lietojumprogramma ir tāda programma, kura ir izvietota tīmeklī un kurai var piekļūt pa tīklu

  6. Tīmekļa lietojumprogrammas pazīmes • Klienta/Servera arhitektūra • HTTP protokols • URL adreses • HTML • Lietojum- programmas darbināšanai ir nepieciešams serveris

  7. Tim Berners-Lee Tim Berners-Lee ir • tas cilvēks, kurš izgudroja World Wide Web 1989. gadā • izstrādāja HTTP, HTML un URL specifikācijas • World Wide Web Consortium (W3C) direktors

  8. HTTP - HyperText Transfer Protocol • HTTP ir standarts sazināšanās protokols World Wide Web informācijas pārsūtīšanai • HTTP apraksta ziņojumus (request/response) ar kuriem var apmainīties klienti un serveri • HTTP ir “bezstāvokļa” (stateless) • serveris neglabā informāciju par iepriekšējiem pieprasījumiem

  9. Neobligāts servera ports (default = 80) Servera domēna vārds Ceļš līdz objektam URL - Universal Resource Locators www.someSchool.edu:8080/someDept/pic.gif • URL sastāvdaļas: • servera adrese • (neobligāts) porta numurs • ceļš līdz resursam

  10. HTML - Hypertext Markup Language • HTML ir iezīmēšanas valoda, kas ir izstrādāta tīmekļa lappušu un citas pārlūkprogrammā attēlojamas informācijas glabāšanai <html> <head> <title>My Web Page</title> </head> <body> <p>Hello!</p> </body> </html>

  11. Tīmekļa klienti un serveri • Tīmekļa klientu parasti sauc par user agent un tipiskais piemērs ir pārlūkprogramma (browser) • Chrome, Internet Explorer, Firefox, Opera, Safari • Tīmekļa serveris ir programma, kas ir atbildīga par klientu pieprasījumu saņemšanu un atbildes aizsūtīšanu atpakaļ • Apache, Microsoft IIS, nginx

  12. Tīmekļa lapas • Parasti klienti pieprasa no serveriem tīmekļa lapas • Par tīmekļa lapu sauc World Wide Web informācijas resursu, kuram var piekļūt ar pārlūkprogrammas palīdzību • Šī informācija parasti ir HTML vai XHTML formātā • Katrai tīmekļa lapai ir URL adrese • No vienas tīmekļa lapas var aiziet uz citām lapām izmantojot hiperteksta saites • Tīmekļa lapa sastāv no “objektiem” • teksts, bildes, audio, video

  13. Klienta/servera komunikācijas scenārijs Tīmekļa klientu/serveru komunikācija notiek izmantojot HTTP protokolu Lietotājs norāda tīmekļa lapas URL pārlūkprogrammā Pārlūkprogramma sūta HTTP pieprasījumu serverim Serveris apstrādā pieprasījumu un sūta pieprasītu tīmekļa lapu atpakaļ klientam Pārlūkprogramma rāda tīmekļa lapas saturu lietotājam

  14. Tīmekļa lietojumprogrammuarhitektūra

  15. Augsta līmeņa arhitektūra • Dalīta klienta/servera arhitektūra • Komunikācija notiek pa datortīklu • Datortīklu arhitektūras abstraktais apraksts – TCP/IP modelis (Internet reference model)

  16. TCP/IP modelis IP = Internet Protocol TCP = Transmission Control Protocol

  17. Lietojumprogrammu līmenis • Piedāvā lietotājam noderīgo protokolu kopumu • Klienta/servera sistēmu piemēri un to lietojumprogrammu līmeņa protokoli: • The WorldWide Web (HTTP) • E-mail (SMTP & POP) • Reliable file transfer (FTP) • Internet Domain Name System (DNS)

  18. Tīmekļa lietojumprogrammu arhitektūra Daudzslāņu arhitektūra • Prezentācijas slānis • Lietotāja saskarne • Lietojumprogrammas slānis • Visu slāņu darbību koordinācija • Sistēmas loģikas realizācija, aprēķini, lēmumu pieņemšana • Datu slānis • Datu glabāšana datubāzēs

  19. Model-View-Controller šablons • Model-View-Controller (MVC) ir projektēšanas šablons (aprakstīts 1979. gadā, Smalltalk valodā) • Pamata mērķis: atdalīt datus (Model) no lietotāja interfeisa (View) • MVC atrisina problēmu ieviešot starpnieka komponenti - kontrolieri (Controller)

  20. Lietojumprogrammas (biznesa loģikas) slānis

  21. Lietojumprogrammas kodols • Lietojumprogrammu serveris + Lietojumprogramma • Lietojumprogrammu serveris parasti nodrošina: • Autentificēšana • Drošība • Transakciju pārvaldība • Klasterizācija • Ziņojumu apmaiņa • Lietojumprogramma – servera dinamiskais paplašinājums

  22. Lietojumprogrammu serveru piemēri • Nekomerciāli • Apache Tomcat • Jetty • JBoss • Komerciāli • Sun Java System Application Server • BEA WebLogic Server • Oracle Application Server • WebSphere Un daudzi citi...

  23. Programmēšana Java platformā • Klasika » Java Enterprise Edition • Servleti • JSP (Java Server Pages) • Eksistē liels daudzums ietvaru • JSF (Java Server Faces) • Spring MVC • Play! • Lift Un daudzi citi...

  24. Java Enterprise Edition • Java EE ir vispusīga platforma daudzlietotāju, pārnesamām, spēcīgām, mērogojamām, dalītām, drošām, enterprise-līmeņa lietojumprogrammām • Java EE balstās uz Java SE un pievieno API priekš Internet-balstītas servera puses programmēšanas

  25. Java EE arhitektūra Java EE definē arhitektūru daudzlīmeņu lietojumprogrammu izstrādāšanai izmantojot Java Enterprise Edition serveri un tajā piedāvātus servisus • Biznesaun prezentācijas loģiku ir jāimplementē sistēmas izstrādātājam • Standarta sistēmas servisus nodrošina Java EE platforma

  26. Java EE komponenti • Java EE lietojumprogrammas tiek veidotas no komponentiem • Java komponents ir funkcionālas programmatūras vienība, kas ir ievietota Java EE lietojumprogrammā, kas sadarbojas ar citiem komponentiem un kuru pārvalda Java EE serveris • Komponenti tiek kompilētitādā pašā veidā kā jebkura cita programma, kas ir uzrakstīta Java valodā

  27. Servleti and JSP • Servlets – Java klase, kas dinamiski apstrādā pieprasījumus un atgriez atbildes • JSP lapa – tekstuāls dokuments, kas izpildās kā servlets, bet piedāvā dabiskāku pieeju statisko dokumentu veidošanai • Tipiskā izmantošana • Servleti – serviss-orientētas lietojumprogrammas, kontroles funkcijas • JSP – tekstuāla marķējuma ģenerēšana (HTML, SVG, WML, XML)

  28. Servleti • Apzinoties Java potenciālu kā servera valodas tīmekļa vidē, Sun Microsystems izstrādāja Java Servlet specifikāciju • Specifikācija bija pabeigta 1997. gadā • Servleti ir Java programmas, kuras ir paredzētas izpildīšanai uz tīmekļa serveriem

  29. Kas ir Servlets? • Java objekts, kas balstās uz servletu tehnoloģijas un API, un paplašina HTTP servera funkcionalitāti • Ir piesaistīts pie URL adresēm • Servletus pārvaldaspeciālas arhitektūras konteineris • Ir pieejams un strādājošs uz visiem populārākiem tīmekļa serveriem • Platformu-neatkarīgs un serveru-neatkarīgs

  30. Sadarbības scenārijs • [klients] sūta tīmekļa serverim HTTP pieprasījumu • [serveris] HTTP pieprasījums HTTPServletRequest • Šīs objekts tiek piegādāts komponentam, kurš var sadarboties ar EJB vai ar datubāzi, lai ģenerēt dinamisku saturu • [komponents] ģenerē HTTPServletResponse objektu, vai nodod pieprasījumu citam komponentam • [serveris]HTTPServletResponse HTTP atbilde • [serveris] atgriež HTTP atbildi klientam

  31. Sadarbības diagramma

  32. Java EE tīmekļa programmēšanas tehnoloģijas Java Servlet tehnoloģija ir pamats visām Java EE tīmekļa programmēšanas tehnoloģijām

  33. Vienkāršs Servlets import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class HelloServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponseresponse) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html><body><h1>"+ "Hello World!</h1></body></html>"); out.close(); } ... }

  34. Ko dara Servlets? • Saņem klienta pieprasījumu (parasti HTTP pieprasījuma formā) • Izvelk informāciju no pieprasījuma ziņojuma • Ģenerē saturu vaiizpilda biznesa loģiku (iespējams, piekļūst datu bāzei, izsauc EJB, u.c) • Izveido un nosūta atbildi klientam (parasti HTTP atbildes formā) vai nodod pieprasījumucitam servletam vai JSP lapai

  35. Kas ir JSP? • JSP = Java Server Pages (ieviests 1999. gadā) • JSP ir Java EE tehnoloģija, kas vienkāršo dinamisko tīmekļa lapu izstrādi • JSP lapas ir HTML lapas ariegulto kodu, kas dod iespēju piekļūt datiem no Java koda, kas izpildās uz servera • JSP dod iespēju atdalīt HTML prezentācijas loģiku un lietojumprogrammas loģikas

  36. JSP tehnoloģija • JSP tehnoloģija dod iespēju kombinēt HTML pasauli ar Java servletuprogrammēšanas pasauli • Ideja: • Izmantot parasto HTML lielākai lapas daļai • Atzīmēt servleta kodu ar speciāliem tagiem • JSP lapa pilnība tiek pārveidota (translēta)servletā (vienreiz), un servlets ir tas, kas faktiski tiek izpildīts (katram pieprasījumam)

  37. Piemērs: vienkārša JSP lapa <html> <body> Hello World! <br> Current time:<%= new java.util.Date() %><br> Random number:<%= Math.random() %> </body> </html>

  38. Piemērs: cita vienkārša JSP lapa <html> <body> Current time: <%= new java.util.Date() %><br> Server: <%= application.getServerInfo() %><br> Session ID: <%= session.getId() %><br> Last accessed: <%= session.getLastAccessedTime() %> ms </body> </html>

  39. Demonstrācijas piemērs Java EE tīmekļa lietojumprogramma 5 minūtēs

  40. Maven un Jetty • Ērts veids izstrādāt, būvēt, izvietot un izpildīt tīmekļa lietojumprogrammas ir izmantojot: • Maven projektu pārvaldības rīku http://maven.apache.org/ • Jetty tīmekļa serveri http://www.mortbay.org/

  41. Direktoriju struktūras izveidošana • Maven dod iespēju izveidot pilnu projekta struktūru ar vienas vienkāršas komandas palīdzību • Lai izveidot projekta veidni ir jāizmanto maven-archetype-webapp arhetipu • Komanda: mvn archetype:create -DgroupId=com.maven2example -DartifactId=maven2example_webapp -DarchetypeArtifactId=maven-archetype-webapp

  42. Maven direktoriju struktūra <root>/src/main/webapp/ - direktoriju struktūra WAR failam

  43. Iepakošana (packaging) No projekta saknes izpildīt komandu mvn package Tiks izveidots WAR fails

  44. Izpildīšana ar Jetty • Izpildīt tīmekļa lietojumprogrammas izmantojot Jetty spraudni priekš Maven ir vienkārši ! • Jetty ir atvērta koda tīmekļa serveris, kurš ir pilnīgi realizēts Java valodā un atbalsta visus standartus • Izveidošanas gads: 1995 • Pēdēja versija:8.1.7 / 2012-07-16

  45. Izpildīšana ar Jetty Jetty spraudņa pievienošana pom.xml failā <build> <finalName>maven2example_webapp</finalName> <plugins> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>8.1.7.v20120910</version> </plugin> </plugins> </build>

  46. Izpildīšana ar Jetty • Palaist serveri armvn jetty:runkomandu >mvn jetty:run [INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'jetty'. [INFO] ----------------------------------------------------- --- [INFO] Building maven2example_webapp Maven Webapp [INFO] task-segment: [jetty:run] [INFO] ----------------------------------------------------- ... [INFO] Starting jetty 7.0.0.1beta1... ... [INFO] Started Jetty Server • Apstādināt arCtrl+C

  47. Lietojumprogrammas atvēršana Ierakstīt pārlūkā adresi http://localhost:8080/

  48. Servleta pievienošana • Solis 1 – pievienot Servlet API bibliotēku projekta klašu ceļam (classpath) pom.xml failā <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> </dependency>

  49. Solis 3 – sagatavot projektu darbam Eclipse vidē mvn eclipse:eclipse Servleta pievienošana • Solis 2 – izveidot direktoriju • \maven2example_webapp\src\main\java

  50. Servleta pievienošana • Solis 4 – izveidot servleta klasi @WebServlet("/my-servlet") public class DemoServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println( "<html><body>" + "<h1>Hello DemoServlet!</h1>" + "<h1>Current time: " + new Date() + "</h1>" + "</body></html>"); out.close(); } }

More Related