1 / 25

Conectarea aplet-servlet

Conectarea aplet-servlet. Etape parcurse de aplet: Construirea URL-ului servletului din URL-ul aplicatiei web si numele servletului: URL url = new URL(this.getDocumentBase().toString()+"NumeServlet"); Construirea conexiunii URL URLConnection con = url.openConnection();

Download Presentation

Conectarea aplet-servlet

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. Conectarea aplet-servlet Etape parcurse de aplet: Construirea URL-ului servletului din URL-ul aplicatiei web si numele servletului: URL url = new URL(this.getDocumentBase().toString()+"NumeServlet"); Construirea conexiunii URL URLConnection con = url.openConnection(); Crearea fluxurilor de citire/scriere din aplet: InputStream in = con.getInputStream(); ObjectInputStream fin = new ObjectInputStream(in); OutputStream out = con.getOutputStream(); ObjectOutputStream fout = new ObjectOutputStream(out); Construirea fluxurilor de catre servlet prin parametrii request si response: OutputStream fo1 = response.getOutputStream(); ObjectOutputStream fo2 = new ObjectOutputStream(fo1); InputStream fin1 = request.getInputStream(); ObjectInputStream fin2 = new ObjectInputStream(fin1);

  2. Legaturi Servlet - Applet. API Sarcini aplet: public URL(String serverSpec); // identificare Servlet public URLConnectionopenConnection() throws IOException; // metoda URL pentru crearea unei conexiuni catre URL-ul respectiv public InputStreamgetInputStream() throws IOException; // metoda URLConnection prin care se obtine flux de comunicare public OutputStreamgetOutputStream() throws IOException; //idem Sarcini servlet: public ServletOutputStreamgetOutputStream() throws java.io.IOException; // metoda HttpServletResponse pentru obtinere flux raspuns public ServletInputStreamgetInputStream() throws java.io.IOException; // metoda HttpServletRequest pentru obtinere flux de intrare (cerere)

  3. Integrarea applet-urilor in aplicatii web prin NetBeans IDE Pentru integrarea unui aplet intr-o aplicatie Web dezvoltata in Netbeans sunt parcursi pasii: Se creaza un proiect Java Netbeans desktop care include clasa JApplet (Applet) (vezi proiectul AppletLib din exemple) Se creaza fisierul jar al aplicatiei (Build Project) Se creaza aplicatia web (vezi AppletWeb din exemple) Se insereaza tagul plugin de applet in fisierul index.jsp al aplicatiei web Se integreaza apletul in aplicatia Web: Click dreapta proiect web + Properties +Packaging + AddProject (se alege proiectul care contine apletul)

  4. Java Server Pages (JSP) JSP = o pagina Web care contine cod HTML combinat cu elemente de scripting Java si care se compileaza pe server sub forma unui servlet

  5. Directive JSP <%@ directiva [...] %> • page pentru importul pachetelor Java sau alte informatii directive: • import - importul pachetelor Java • errorPage - URL-ul paginii intoarse in caz de eroare • isErrorPage - daca exista pagina de eroare • contentType - tipul documentului returnat • include includerea unui alt fisier in pagina JSP directive: • file - fisierulinclus

  6. Directive JSP • taglib ofera posibilitatea crearii tagurilor personalizate atribute: • uri - stabileste fisierul care contine definitia tagurilor • prefix - stabileste un prefix unic pentru libraria de taguri Declaratii JSP Permit specificarea de atribute si metode pentru clasa Servlet generata <%! declaratii %> <jsp:declaration> declaratii </jsp:declaration>

  7. Expresii, scripleturi Expresiile - permit utilizarea unor valori rezultate prin evaluare de expresii Java <%= expresieJava %> <jsp:expression> expresieJava </jsp:expression> Scriplet-urile - permit utilizarea de cod java instant <% codJava %> <jsp:scriplet> codJava </jsp:scriplet>

  8. Obiecte implicite • PrintWriter out; obiect utilizat pentru scrierea in documentul de raspuns • HttpServletRequest request; obiectul care contine informatii privind cererea formulata • HttpServletResponse response; obiectul care contine informatii privind raspunsul construit • HttpSession session; obiectul care contine informatii referitoare la sesiunea curenta • Object page; obiectul referinta la pagina curenta • ServletContext application; contine informatii despre aplicatie • Throwable exception; obiectul care contine informatii privind eroarea aparuta

  9. Componente JavaBeans Reguli de construire a componentelor JavaBeans utilizate in aplicatii Web: • Constructor fara parametrii • Membrii nestatici private sau protected • Acess prin metode set si get Taguride utilizare: <jsp:useBean atribute /> Atribute: • id - identificatorul de componenta • scope - domeniul de vizibilitate • class - numele complet al clasei Stabilirea proprietatilor: <jsp:setProperty atribute /> Atribute: name - numele componentei, property - numele proprietatii, value - valoarea proprietatii, param - stabilirea proprietatii ca parametru al paginii JSP curente

  10. Includerea apleturilor in pagini JSP <jsp:plugin atribute /> <jsp:fallback> mesaj </jsp:fallback> </jsp:plugin> Atribute: • type - tipul de componenta (applet) • archive – fisierul jar (cand appletul este atasat prin arhiva) • code - numele clasei aplet • codebase - calea clasei aplet • width , height - dimensiuni

  11. Framework-uri Java Struts

  12. Arhitectura aplicatiilor Web • Framework – construcții standard reutilizabile și extensibile care includ elemente de arhitectură • Avantaje • Productivitate • Arhitectura multistrat • Utilizarea arhitecturii MVC • MVC2 este varianta Web a arhitecturii MVC din Swing • Vizualizarea: JSP-urile • Controlul: Servlet-urile • Modelul: componente JavaBeans

  13. Arhitectura MVC

  14. Structura unei aplicatii Struts • Efectuarea cererii catre servletul central • Controllerul detecteaza actiunea cu ajutorul fisierului de configurare struts-config.xml • Popularea unui obiect ActionForm cu elementele cererii si distribuirea lui catre un obiect de tip Action • Obiectul Action populeaza un model (obiect bean) cu datele corespunzatoare • Asezarea modelului pe request sau session • Servletul central da controlul unei pagini JSP pentru a afisa raspunsul • Pagina este returnata browserului utilizator

  15. Arhitectura unei aplicatii Struts

  16. Parametrizarea servletului central - web.xml <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </servlet>

  17. struts-config: Configurarea obiectelor ActionForm (bean) Definire directa in struts-config. Se folosește o clasă predefinită DynaActionForm. <form-bean name="NumeActionForm" type="org.apache.struts.action.DynaActionForm" > <form-property name="nume_1" type="clasa_1" /> ... <form-property name="nume_n" type="clasa_n" /> </form-bean> Creare programatica- se creaza o clasa extensie a clasei ActionForm. In struts-config există doar o intrare cu numele obiectului de tip ActionForm si numele clasei create: <form-bean name="NumeActionForm" type="ClasaActionForm" />

  18. struts-config: Configurarea obiectelor Action <action name="NumeActionForm"// Numele de ActionForm prin care sunt primiti parametrii input="/formularInput.jsp" // Formularul din care provine cererea validate="true/false"// Invocarea sau nu a metodei validate din ActionForm path="/NumeAction" // Numele de action provenit din formular (de exemplu parametrul action din form). Acest nume se obtine dupa eliminarea sufixului .do din formular type="ClasaAction"> <forward // este specificata o resursa utilizata de action pentru tratarea cererii name="nume_1" path="/formular_1.jsp" /> ... <forward name="nume_n" path="/formular_n.jsp" /> </action>

  19. struts-confic.xml: definitii forward Elementele forward sunt obiecte returnate de un action, prin care se realizeaza maparea la o anumita resursa (fisier jsp). Sunt locale si globale. Cele locale sunt legate de un action specific, si sunt descrise prin tagul corespunzator de action (vezi pagina precedenta). Cele globale sunt disponibile oricarui action si in general sunt utilizate in redirectarea spre anumite resurse. Tagul global-forwards contine numele logic si calea spre resursa (url-ul de action) Exemplu: <global-forwards> <forward name="welcome" path="/Welcome.do"/> </global-forwards> <action-mappings> <action path="/Welcome" forward="/welcomeStruts.jsp"/> </action-mappings>

  20. Struts API. Crearea obiectelor ActionForm Clasa de baza: public abstract class ActionForm extends java.lang.Object implements java.io.Serializable Pachet: org.apache.struts.action Metode: public ActionErrorsvalidate(ActionMapping mapping, javax.servlet.ServletRequest request); // Metoda utilizata pentru validarea datelor din formular. Intoarce o lista de erori. Daca lista este null sau nu are elemente este predat controlul obiectului Action. Metoda se executa daca formularul validat are inclus tagul <html:errors/> si daca parametrul validate pentru Action din struts-config este true

  21. Structuri de gestionare a erorilor/mesajelor Crearea unui mesaj public class ActionMessage extends java.lang.Object implements java.io.Serializable; // clasa utilizata pentru crearea mesajelor individuale create prin metoda validate a ActionForm. Constructor: public ActionMessage(java.lang.String key); // construieste un mesaj de eroare pe baza cheii specificate. Mesajele sunt specificate in fisierulApplicationResource.properties Exista constructori care dau posibilitatea inlocuirii valorilor invalide cu valori specificate Crearea unei liste de mesaje public class ActionMessagesextends Objectimplements Serializable; public void add(String property, ActionMessage message); // Adauga un mesaj asociat cu proprietatea specificată. Dacă property este ActionMessages.GLOBAL_MESSAGE, mesajul este unul general public int size(); // intoarce numarul de mesaje public int size(java.lang.String property); // intoarce numarul de mesaje inregistrate sub acelasi nume

  22. Crearea unei liste de erori public class ActionErrors extends ActionMessages implements Serializable; Listele de erori sunt create de metodele validate din ActionForm dar si prin metode ale clasei Action. Au aceeasi functionalitate ca listele de mesaje.

  23. Crearea obiectelor Action public class Action extends java.lang.Object Servletul central declanseaza tratarea cererii prin invocarea metodei execute a obiectului Action. Aceasta primeste informatiile de configurare a Action-ului conform struts-config (mapping), o referinta la obiectul ActionForm cu parametrii cererii si obiectele request si response: public ActionForwardexecute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException public class ActionMapping extends ActionConfig; // contine informatii despre configurarea unui obiect Action conform struts-config public ActionForwardfindForward(java.lang.String name); // metodă ActionMaping care identifica prin name un formular pentru finalizarea tratării cererii. Valoarea lui name trebuie sa se regaseasca in tagul Action-ului curent, subtagul forward, parametrul name

  24. Metode Action protected void saveMessages(javax.servlet.http.HttpServletRequest request, ActionMessages messages); // sunt salvate mesajele memorate in structura ActionMessages si transmise prin request protected void saveMessages(javax.servlet.http.HttpSession session, ActionMessages messages); //idem, dar sunt transmise prin session Aceste mesaje pot fi utilizate in formularele de raspuns in taguri <html:messages>. Urmatoarele metode sunt utilizate pentru salvare de erori prin request si session si afisate apoi in formularele de raspuns prin taguri <html:errors> protected void saveErrors(javax.servlet.http.HttpServletRequest request, ActionMessages errors); protected void saveErrors(javax.servlet.http.HttpSession session, ActionMessages errors);

  25. Utilizarea tagurilor Struts pentru procesarea erorilor/mesajelor Biblioteca de taguri Struts are trei componente, importate astfel: <%@taglib prefix="struts" uri="http://struts.apache.org/tags-html" %> <%@taglib prefix="logic" uri="http://struts.apache.org/tags-logic" %> <%@taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %> Afisarea unui mesaj de eroare general: <struts:errors/> Afisarea mesajelor din stratul de logica (Business Logic), memorate prin request sau session sub forma de lista: <logic:present name="msgList"> <logic:iterate id="m" name="msgList"> <bean:write name="m"/><br> </logic:iterate> </logic:present> Afisarea mesajelor memorate in liste ActionMessages, si trimise prin metode saveMessages: <struts:messages id="msgList" message="true"> <bean:write name="msg"/><br> </struts:messages>

More Related