850 likes | 1.13k Views
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.
E N D
Moderna tīmekļa programmēšana Java pasaulē Alina Vasiļjeva Latvijas Universitāte Datorikas fakultāte 2012.gada 6. decembris
Plāns • Tīmekļa lietojumprogrammas • Arhitektūra • Lietojumprogrammas slānis • Datu slānis • Prezentācijas slānis
Tīmekļa lietojumprogrammas Pamatjēdzieni
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
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
Tīmekļa lietojumprogrammas pazīmes • Klienta/Servera arhitektūra • HTTP protokols • URL adreses • HTML • Lietojum- programmas darbināšanai ir nepieciešams serveris
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
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
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
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>
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
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
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
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)
TCP/IP modelis IP = Internet Protocol TCP = Transmission Control Protocol
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)
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
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)
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
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...
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...
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
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
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ā
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)
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
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
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
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
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(); } ... }
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
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
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)
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>
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>
Demonstrācijas piemērs Java EE tīmekļa lietojumprogramma 5 minūtēs
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/
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
Maven direktoriju struktūra <root>/src/main/webapp/ - direktoriju struktūra WAR failam
Iepakošana (packaging) No projekta saknes izpildīt komandu mvn package Tiks izveidots WAR fails
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
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>
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
Lietojumprogrammas atvēršana Ierakstīt pārlūkā adresi http://localhost:8080/
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>
Solis 3 – sagatavot projektu darbam Eclipse vidē mvn eclipse:eclipse Servleta pievienošana • Solis 2 – izveidot direktoriju • \maven2example_webapp\src\main\java
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(); } }