1 / 55

Modernās Programmēšanas Tehnoloģijas (Advanced Programming Technologies )

Modernās Programmēšanas Tehnoloģijas (Advanced Programming Technologies ). Edgars Celms, Mārtiņš Opmanis (askola@mii.lu.lv). Latvijas Universitātes Matemātikas un informātikas institūts 200 7, Rīga, Latvija. Serversīklietotņu ( servlets ) programmēšana.

elma
Download Presentation

Modernās Programmēšanas Tehnoloģijas (Advanced Programming Technologies )

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. Modernās Programmēšanas Tehnoloģijas(Advanced Programming Technologies) Edgars Celms, Mārtiņš Opmanis (askola@mii.lu.lv) Latvijas Universitātes Matemātikas un informātikas institūts 2007,Rīga, Latvija

  2. Serversīklietotņu (servlets) programmēšana • “Java™ How to Program, Sixth Edition” • Chapter 26. Servlets • Servleti un to arhitektūra • Servlet interfeiss un Servletu dzīves cikls • Klase HttpServlet • HttpServletRequest un HttpServletResponse interfeisi • Apache Tomcat serveris • HTTP ...Requests apstrādāšana • Vairāklīmeņu (multitier) lietojumprogrammas • JDBC lietojums servletos

  3. Ievads • Tīklošanās iespējas valodā JAVA • Socket-basedunpacket-basedkomunikācija • Package java.net • Remote Method Invocation (RMI) • Package java.rmi • The RMI packages allow Java objects running on separate JVMs (normally on separate computers) to communicate via remote method calls. Such calls appear to invoke methods on an object in the same program, but actually have built-in networking (based on the capabilities of package java.net) that communicates the method calls to another object on a separate computer. • Common Object Request Broker Architecture (CORBA) • Package org.omg • A key difference between RMI and CORBA is that RMI can only be used between Java objects, whereas CORBA can be used between any two applications that understand CORBAincluding applications written in other programming languages. • Remote Method Invocation over the Internet Inter-Orb Protocol (RMI-IIOP) • RMI-IIOP enables the integration of Java with non-Java distributed objects by using CORBA IIOP

  4. Ievads • Klienta-servera attiecība • Servlets(serversīklietotnes) unJavaServer Pages (JSP) • Pieprasījuma-atbildes modelis (request-response model) • Pakotnesjavax.servlet javax.servlet.http javax.servlet.jsp javax.servlet.tagext • Populārākā pieprasījuma-atbildes modeļa implementācija • tīmekļa pārlūkprogrammas (web browsers) un tīmekļa serveri (web servers) • Ir par pamatu J2EEWeb komponentēm • Servleti un “tievais” klients (thin client) • Nodrošina prezentācijas līmeni • Neapstrādā datus • Nepieciešami mazāki datora resursi • Apache Jakarta projekti un Tomcat Server • Tomcat • Jakarta projekts • Oficiālo servletu un JSP standartu implementācija

  5. Servleti un to arhitektūra • Servleti • Servlets ir Javas programma, kura atrodas un izpildās serverī un sūta informāciju klientam • Piemēram, tīmekļa serveris sūta HTML pārlūkprogrammai • HTML var nākt no reāla faila uz servera vai arī to var sūtīt (izveidot) programma, piemēram, Javas servlets. • JavaServer Pages (JSP) • Servletu tehnoloģijas paplašinājums • Vienkāršo lapu izveidošanas procesu atdalot prezentācijas daļu no satura daļas • Parasti JSP izmanto, ja informācija ko sūta klientam pārsvarā ir statiskas daba un tikai neliela daļa no šī sūtījuma tiek ģenerēta dinamiski izmantojot Javas kodu • Servletukonteineris (servlet container (engine)) • Serveris kurš spēj izpildīt servletus • Tīmekļa serveri un aplikāciju serveri, kuri var darboties kā konteineri servletiem • Sun Java System Application Server, Microsoft’s Internet Information Server (IIS), Apache HTTP Server, BEA’s WebLogic Application Server, IBM’s WebSphere Application Server, World Wide Web Consortium’s Jigsaw Web Server, …

  6. Servleti un to arhitektūra

  7. Servlet interfeiss un servletu dzīves cikls • Servletinterfeiss • Visiem servletiem ir jāimplementē šāds interfeiss • Servletinterfeisa metodes izsauc servlet konteineris • Pakotnes kuras tiek izmantotas darbam ar servletiem • Pakotnē javax.servlet – definēta klase GenericServlet, kura ir protokolu neatkarīga (protocol-independent). • Pakotnē javax.servlet.http – definēta klase HttpServlet, kura izmanto HTTP protokolu • Servleta dzīves cikls • Servletakonteineris izsauc servleta initmetodi • Servletaservicemetode apstrādā pieprsījumu • Servletadestroymetode atbrīvo servletaresursus, ja konteineris beidz (terminates)servletu

  8. Servlet interfeiss

  9. Servlet interfeiss un servletu dzīves cikls • Servletinterfeisa implementācija • GenericServlet • Abstrakta klase • Pakotnejavax.servlet • Protokola neatkarīgs servlets • HttpServlet • Abstrakta klase • Pakotnejavax.servlet.http • Lai apmainītos ar informāciju izmanto HTTP protokolu • Parasti izmanto, lai paplašinātu tīmekļa servera funkcionalitāti

  10. Klase HttpServlet • Klase HttpServlet pārimplementē (overrides)service metodi • Nevajadzētu pārimplementēt servicemetodi klasesHttpServletapakšklasēs. Radīs problēmas servletam atšķirt pieprasījuma tipus. • Divi biežāk lietotie HTTP pieprasījuma veidi • getpieprasījums • Get/retrieveinformāciju no servera • postpieprasījums • Post/senddatus uz servei • MetodedoGetreaģē uz getpieprasījumu • MetodedoPostreaģē uz postpieprasījumu • MetodesdoGetun doPostkā parametrus saņem HttpServletRequestunHttpServletResponseobjektus

  11. Dažas citas HttpServlet klases metodes

  12. HttpServletRequestinterfeiss • Servletakonteineris • izveidoHttpServletRequestobjektu • nodod to kā parametru servletaservicemetodei • HttpServletRequestobjekts • satur klienta pieprasījumu • nodrošina metodes lai servlets varētu apstrādāt šādu pieprasījumu

  13. HttpServletRequestmetodes

  14. HttpServletResponse interfeiss • Servletakonteineris • izveidoHttpServletResponseobjektu • nodod to kā parametru servleta service metodei • HttpServletResponseobjekts • nodrošina metodes lai servlets varētu noformēt atbildi klientam

  15. HttpServletResponse metodes

  16. Apache Tomcat serveris • Kā strādāt un instalēt Tomcat serveri šajā kursā sīkāk neapskatīsim. • Informācija tīklā par Tomcat • http://www.apache.org/ • http://tomcat.apache.org/

  17. HTTP getpieprasījumuapstrādāšana • HTTP getpieprasījums • Sagaida kā atbildi URL saturu • Piemērs, WelcomeServlet • Servlets kurš apstrādā HTTP getpieprasījumus

  18. Import the classes and interfaces in the javax.servlet and javax.servlet.http packages Extends HttpServlet to handle HTTP get requests and HTTP post requests Override method doGet to provide custom get request processing Uses the response object’s setContentType method to specify the content type of the data to be sent as the response to the client Uses the response object’s getWriter method to obtain a reference to the PrintWriter object that enables the servlet to send content to the client Create the XHTML document by writing strings with the out object’s println method

  19. Closes the output stream, flushes the output buffer and sends the information to the client

  20. WelcomeServlet.html The form’s action attribute (/jhtp6/welcome1) specifies the URL path that invokes the servlet The form’s method attribute indicates that the browser sends a get request to the server, which results a call to the servlet’s doGet method Create a button, when clicked, the form’s action is performed

  21. Programmas darbības rezultāts

  22. Web lietojumprogrammu izvietošana serverī • Tīmekļa lietojumprogrammas • JSP, servleti un ar tiem saistītie faili • Tīmekļa lietojumprogrammu izvietošana (deploying) • Folderu struktūra • Context root • Tīmekļa lietojumprogrammuarhīva fails (WAR file) • Izvietošanas deskriptors (deployment descriptor) • web.xml

  23. Web lietojumprogrammu izvietošana serverī • Tīmekļa lietojumprogrammu standarta forlderi

  24. Element web-app defines the configuration of each servlet in the Web application and the servlet mapping for each servlet. Element display-name specifies a name that can be displayed to the administrator of the server on which the Web application is installed. Element description specifies a description of the Web application that might be displayed to the administrator of the server. Element servlet describes a servlet. Element servlet-name is the name for the servlet. Element description specifies a description for this particular servlet. Element servlet-class specifies compiled servlet’s fully qualified class name.

  25. Web lietojumprogrammu izvietošana serverī Element servlet-mapping specifies servlet-name and url-pattern elements. Element url-pattern helps the server determine which requests are sent to the servlet

  26. Web lietojumprogrammu izvietošana serverī • Invoke WelcomeServlet example • /jhtp6/welcome1 • /jhtp6 specifies the context root • /welcome1 specifies the URL pattern • URL pattern formats • Exact match • /jhtp6/welcome1 • Path mappings • /jhtp6/example/* • Extension mappings • *.jsp • Default servlet • /

  27. Tādu HTTP getpieprasījumuapstrādāšana, kuri satur datus • Pieprasījums serverim var saturēt arī datus. • Dati tiek uzdoti kā parametri. • Parametri ir vārds-vērtība pāris, kurš tiek norādīts aiz URL beigās aiz jautājuma zīmes • Piemēram:http://localhost?firstname=Jon • Ja ir vairāki parametri – jālieto &.

  28. The request object’s getParameter method receives the parameter name and returns the corresponding String value

  29. Uses the result of line 17 as part of the response to the client

  30. Get the first name from the user.

  31. form data specified in URL’s query string as part of a get request

  32. Dažas piezīmes I (Software Engineering Observation) • If an error occurs during the servlet invocation, the log files in the logs directory of the Tomcat installation can help you determine the error and debug the problem. • A get request is limited to standard characters, which means that you cannot submit any special characters via a get request. The length of the URL in a get request is limited. For example, the maximum URL length in Internet Explorer is 2,083 characters. Some Web servers might restrict this even more. • A get request should not be used for sending sensitive data (e.g., a password) because the form data is placed in a query string that is appended to the request URL as plain text and can be intercepted.

  33. HTTP postpieprasījuma apstrādāšana • HTTP postpieprasījums • Nosūta (post) datus no HTML formas uz server-sideformu apstrādātāju kurš šos datus apstrādā • Tīmekļa pārlūkprogrammas kešo (cache) apskatītās tīkla lapas • Atbildes uz post pieprasījumiem parasti netiek saglabātas • ServletsWelcomeServlet3 • Reaģē uz postpieprasījumu • Piemērs ir ļoti līdzīgs iepriekšējam (doGet() metodes vietā tiek izmantota metodedoPost()) • Tā tas ir jo izmantotajās klasēs tiek paslēpta atšķirība starp divu veidu pieprasījumiem

  34. Declare a doPost method to responds to post requests The request object’s getParameter method receives the parameter name and returns the corresponding String value

  35. Provide a form in which the user can input a name in the text input element firstname, then click the Submit button to invoke WelcomeServlet3

  36. Pieprasījumu redirektēšana (redirecting requests) • Dažreiz pieprasījumus ir nepieciešams pārsūtīt tālāk uz citu vietu. Piemēram, citu serveri vai citu tīmekļa lapu. • To var realizēt lietojot HttpServletResponseobjectasendRedirectmetodi. • ServletsRedirectServlet • Pārsūta pieprasījumu uz citu resursu

  37. Obtains the page parameter from the request. Determine if the value is either “deitel” or “welcome1” Redirects the request to www.deitel.com. Redirects the request to the servlet WelcomeServlet.

  38. Provide links that allow the user to invoke the servlet RedirectServlet

  39. Vairāklīmeņu (multitier) lietojumprogrammas • Programmatūra varētu sastāvēt no GUI interfeisa, pieprasījumu apsrādes loģikas un pastāvīgas datu glabātuves (datu bāzes) • Divu līmeņu arhitektūra (two-tier architecture) • GUI un programmas loģika ir vienā līmenī un datu bāze otrā • “Resnais” klients. DB Client Fat client

  40. Vairāklīmeņu (multitier) lietojumprogrammas • Trīs līmeņu arhitektūra (three-tier architecture) • Ja “resno” klientu sadalām divās daļās, tad varam runāt par programmatūras trīs līmeņu arhitektūru. • “Tievais” klients • Pamatuzdevums ir datu reprezentācija un GUI • Satur ļoti nelielu apstrādes loģikas daļu • Aplikācijas loģikas daļa šādā arhitektūras modelī parasti ir implementēta servera pusē. DB Client Logic Thin client

  41. Vairāklīmeņu (multitier) lietojumprogrammas • Trīs līmeņu arhitektūra (three-tier architecture) • Tīmekļa serveri parasti reprezentē vidējo līmeni • Trīs līmeņu arhitektūras piemērs • Tīmekļa lapa, kura sadarbojas ar servletu, kurš savukārt izmanto JDBC, lai nodrošinātu darbu ar datubāzi. • SurveyServlet • Survey.html • MySQL database

  42. Import interfaces and classes for database manipulation Declare a Connection to manage the database connection Declare a Statement for updating the vote count, totaling all the votes and obtaining the complete survey result

  43. Loads the database driver, which is specified in the initialization parameter “databaseDriver” Attempt to open a connection to the animalsurvey database, the database name, username and password are specified in the initialization parameters Create Statement to query database.

  44. Obtain the survey response

  45. Create sql to update total for current survey response Execute sql statementto update total for current survey response Create query to get total of all survey responses Execute queryto get total of all survey responses Create query to get survey results Execute query to get survey results

  46. Loop through all records in resultsRS Obtain the value of the first column from the current record Obtain the value of the second column from the current record

More Related