Java veebitehnoloogiad
This presentation is the property of its rightful owner.
Sponsored Links
1 / 18

Java veebitehnoloogiad PowerPoint PPT Presentation


  • 59 Views
  • Uploaded on
  • Presentation posted in: General

Java veebitehnoloogiad. Jaak Simm. Kava. Veebirakenduste arendamine (põhiideed) Tehnoloogiad: Tavamudel: servletid ja JSP Struts Templatetehnoloogiad (Velocity) XML ja XSLT Cocoon Kokkuvõte. Hea, kui: Eraldatakse disain, sisu ja loogika Ka äri- ja esitlusloogika

Download Presentation

Java veebitehnoloogiad

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Java veebitehnoloogiad

Java veebitehnoloogiad

Jaak Simm


Java veebitehnoloogiad

Kava

  • Veebirakenduste arendamine (põhiideed)

  • Tehnoloogiad:

    • Tavamudel: servletid ja JSP

    • Struts

    • Templatetehnoloogiad (Velocity)

    • XML ja XSLT

    • Cocoon

  • Kokkuvõte


Veebirakenduste arendamine

Hea, kui:

Eraldatakse disain, sisu ja loogika

Ka äri- ja esitlusloogika

Mugav ja läbipaistev andmesisestuse ja veaparandus mudel

Kuidas seda teha?

Veebirakenduste arendamine

  • Veebirakenduse eripärad tavalisest:

    • püsiva seisundi puudumine

    • request-response

    • HTML sisaldab nii andmeid kui nende esitamisviisi


Lihtsad servletid ja jsp

JSP

import javax.servlet.http.*;

import javax.servlet.ServletException;

...

public class Lihtne extends HttpServlet

{

public void doPost(...) {

/// sisendite kontrollimine

...

/// loogika: bean/andmebaas

...

/// väljund:PrintWriter out =

response.getWriter();

out.println(“<html>”);

...

}

}

<html>

<%@ page language=“java”

imports=“veebirakendus.* %>

<H1>Tere</H1>

<P>Täna on</P>

<jsp:useBean id=“clock”

class=“calendar.jspCalendar/>

<ul><li>Päev:<%= clock.getDayOfMonth() %>

<li>Kuu: <%= clock.getYear() %>

</ul>

<% if (Calendar.getInstance().

get(Calendar.AM_PM)==Calendar.AM){

%> Tere hommikust!

<% } else

} %>Tere õhtust!

<%} %>

<%@ include file = “footer.html” %>

</html>

Lihtsad servletid ja JSP

  • Lihtne servlet

  • Kõik küsimused jäetakse arendaja lahendada.


Struts 1

Struts (1)

  • Veebirakenduste tehnoloogia, põhineb Model-View-Control'l (MVC):

    • Model’i kiht sisaldab äriloogikat, klassistruktuure ja andmebaasidega suhtlust

    • View’i kiht määrab, kuidas tulemust esitada.

      • JSP+taglibraries

      • Template’d (Velocity, Tiles)

      • XML+XSL (StrutsCX)

    • Control’i kiht määrab mida teha (Struts ise).

      • Tegevuse juhtimine käib Action klasside kaudu.

      • Sisendi töötlemiseks kasutatakse ActionForm klasse.

      • action’ite ülesehitus ja seosed(mapping’ud) on defineeritud struts-config.xml’s.


Struts 2

Struts (2)

1) millist action’t teha

2) struts-config.xml’s seotakse actioni vastava ActionjaActionForm klassiga.


Struts 3 n iteke

<forward name="welcome“ path="/welcome.do"/>

<forward name=“logon“ path="/logon.do"/>

...

<action

path="/welcome"

type="veebirakendus.ForwardAction">

<forward name=“destination“ path="/veebirakendus/welcome.jsp"/>

</action>

<action path=“/logon” ...>...</action>

...

public final class ForwardAction extends Action {

...

public ActionForward perform (...) {

return mapping.findForward("destination");

}

}

<html><body>

Welcome page

<html:link forward="logon">

Sign in

</html:link>

</body></html>

Struts (3): näiteke

Tuleb päring URL-le “welcome.do”

1. action “welcome”

2. kutsutakse Action klass ForwardAction.perform()

3. welcome.jsp

Kutsutav Action klass

struts-config.xml

view

ForwardAction.java

welcome.jsp


Struts 4 n iteke

...

<form-bean

name="logonForm"

type="veebirakendus.LogonForm"/>

...

<action

path="/logon"

type="veebirakendus.ForwardAction"

name="logonForm"

scope="request"

validate="false">

<forward name=“destination“

path="/veebirakendus/logon.jsp"/>

</action>

...

public final class LogonForm extends ActionForm

{

private String password = null;

private String username = null;

...// get/set meetodid

public void reset (...) {

setPassword(null);

setUsername(null);

}

public ActionErrors validate (...) {

// business logic...

if (ok) return null;

else return errors;

}

}

Struts (4): näiteke

  • Formi kuvamine:

    • actioni jaoks, mis võtab sisendit, määratakse ActionForm bean. ActionFormid on määratud <form-bean>’s

Formi nimi

Bean

(ActionForm)

struts-config.xml

LogonForm.java


Struts 5 n iteke

<%@ page language="java" %>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<html>

<head>

...

</head>

<body>

<html:errors/>

<p>Logige palun sisse!</p>

<html:form action="/logonSubmit" focus="username">

Username: <html:text property="username"/><br/>

Password: <html:password property="password"/><br/>

<html:submit property="submit" value="Submit"/>

<html:reset/>

</body>

</html>

Struts (5): näiteke

logon.jsp


Struts 6 n i t e ke

...

<action

path="/logonSubmit"

type="veebirakendus.LogonAction"

name="logonForm"

scope="request"

validate=“true“

input=“/veebirakendus/logon.jsp”>

<forward name=“success" path="/veebirakendus/logged-in.jsp"/>

</action>

...

Struts (6): näiteke

Sisendit ootav action

struts-config.xml

  • Kuna validate=“true”, siis kutsutakse välja ActionFormi validate() meetod:

    • Kui vigu pole, siis lastakse käima LogonAction.perform()

    • Kui validate() annab vea, siis minnakse tagasi input atribuudiga määratud aadressi. Antud juhul “/veebirakendus/logon.jsp”, milles saab <html:errors> tagiga vigu kuvada.


Template d velocity 1

Template'd: Velocity (1)

  • Lihtne keel dünaamilise sisuga HTML-i esitamiseks.

  • Võimaldab eraldada disaini ja sisu muust.

  • Järgmised võimalused:

    • Kuvada objekte, nende meetodeid/välju

    • Kontrollelemendid (if-else jaloop-id)

    • Lihtsamad operatsioonid: aritmeetika, oma muutujad

    • Makrod


Template d velocity 2

public class MinuServlet

extends VelocityServlet {

...

// kleint on EJB, millel on getName();

Vector petsInStore = getPetsInStore();

...

try {

template = getTemplate("templ.vm");

}

catch( ResourceNotFoundException rnfe ) {

// template'i ei leitud

}

catch( ParseErrorException pee )

{

// süntaksi viga

// template'i parsemine ebaõnnestus

}

catch( Exception e )

{}

return template;

}

<HTML>

<BODY>

Tere $klient.Name!

<table>

#foreach( $pet in $petsInStore )

#if ( $customer.hasNotPurchased($pet) )

<tr>

<td>

$promos.getPromo( $pet )

</td>

</tr>

#end

#end

</table>

Template'd: Velocity (2)

Velocity (templ.vm):

  • Tulemuseks HTML

  • Lihtne luua dünaamilist veebi

  • Kuid sisu ja disain on omavahel segatud

Servlet (MinuServlet):


Xml ja xsl 1

XML ja XSL (1)

  • Idee:

    • salvestada XML formaati puhtad andmed, ilma esitlusviisi sisaldamata.

    • Esitluse määrab ära XSL-i fail, mis kirjeldab, kuidas XML transformeerida HTML-iks (soovikorral mõneks muuks tüübiks)

  • Sisu ja disain on üksteisest lahutatud ja seega saab neid sõltumatult muuta.

  • Laialdane rakenduspind.


Xml ja xsl 2

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="disain.xsl"?>

<leht>

<aknake>

<pealkiri>Teade</pealkiri>

<aknalooja epost="[email protected]">Jaak Simm</aknalooja>

<kuupaev>02.04.2003</kuupaev>

<sisu>See siin on väike teade.</sisu>

</aknake>

</leht>

XML ja XSL (2)

  • Praktikas:

    • Kasutajale saadetav sisu genereeritakse tavalisel meetodil (nt. Servlet, JSP, Struts jne).

    • Disain lisatakse viimases faasis. On ka võimalus sisu ja disain kliendile eraldi saata

  • Näide:

sisu.xml


Xml ja xsl 3

...

<xsl:template match="aknake">

<div style="border-width: …;">

<h3><xsl:value-of select="pealkiri"/>

</h3>

<i>Kuupäev: <xsl:value-of select="kuupäev"/>

</i><br/>

<i>Akna looja: </i>

<xsl:element name="a">

<xsl:attribute name="href">

<xsl:text>mailto:</xsl:text>

<xsl:value-of select="[email protected]"/>

</xsl:attribute>

<xsl:value-of select="aknalooja"/>

</xsl:element>

<br/>

<p style="color: #black;">

<xsl:value-of select="sisu"/></p>

</div>

</xsl:template>

...

...

<div style="border-width: 1px; border-style:solid; padding: 5px;">

<h3>Teade</h3>

<i>Kuup&auml;ev: 02.04.2003</i>

<br>

<i>Akna looja: </i>

<a href="mailto:[email protected]">Jaak Simm</a>

<br>

<p style="color: #black;">

See siin on v&auml;ike teade.</p>

</div>

...

XML ja XSL (3)

tulemus.html

disain.xsl

  • Eriti hea juhtudel, kus sisu on eraldi disainist või juba XML kujul.

  • XML-XSL tehnoloogial on õppimiskõver.


Cocoon 1

Juhtimine

Loogika

Disain

Sisu

Cocoon (1)

  • XML tehnoloogiatel põhinev veebiarenduse raamistik.

  • Loogika eraldataksesisust läbi XSPfailide, missisaldavad koodi.

  • Suhtluse juhtimiseks on Cocoon-s Sitemap ja Action. Idee poolest MVC lähenemine.

  • Sisaldab ka tag-librareid ja formide mugavat töötlemist.


Cocoon 2

<page>

...

<item/>

...

</page>

<xsl:stylesheet ...>

<template match=“page”>

...

<xsp:logic>

...functions...

</xsp:logic>

</template>

<template match=“item”>

<xsp:expr>

...function calls...

</xsp:expr>

</template>

</page>

<xsp>

<xml>

<html>

<xsl>

Cocoon (2)

page-xsp.xsl (loogika)

page.xml (sisu)

disain.xsl (disain)

page.html (tulemus)


Kokkuv te

Kokkuvõte

  • Java veebitehnoloogiate eelised:

    • Arenduse protsessi kiirus ja mugavus

    • Lihtne luua selge struktuuriga rakendusi

    • Pole vaja jalgrattast uuesti leiutada

  • Kuid tehnoloogaid on kallid:

    • Õppimiskõver

    • Ressursinõudlikkus


  • Login