/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Struktur spørgsmål
Fra : Michael Sig Birkmose


Dato : 11-07-01 18:27

Hej gruppe..
Jeg står over for en spændende problemstilling med java servlets, og jeg
har fundet en potentiel løsning. Jeg vil dog høre, om der er nogle der
har nogle bedre forslag...

Pointen er at jeg skal lave en servlet, som kan vise html sider fra en
database - både statiske og dynamiske. Det vil sige at en database
indeholder en masse html dokumenter som serlveten skal visses. Dette er
også nemt nok... men hvad gør jeg med dynamiske sider - dvs. sider hvor
der ligger noget java-kode bagved? Mit forslag er at jeg serialiserer
java objekterne og kommer dem i databasen... Så vil jeg have en servlet,
som loader alle objekterne fra hele databasen, når web serveren
initialiseres. Iogmed at det er serialiserede objekter vil
initialiseringen blive langsommere, men når de først er loadet vil der
ikke kunne mærkes forskel.

Lyder dette som en dårlig løsning?

Jeg havde også overvejet at man kunne gemme et filnavn på en klasse i
databasen, men jeg kan ikke rigtig se hvordan det skulle fungere? Det
skulle være noget med:

filNavn=udtræk fra databse;
Object object=voodoo med filNavn

Men hvordan gør man noget lignende?


Hele pointen er at den servlet jeg skal lave, som kan vise både
dynamiske og statiske html sider, ikke skal hardcodes og dermed ændres
hver gang en dynamisk side tilføjet.

Jeg ser frem til at høre nogle spændende inputs....
--
Michael Birkmose
Department of Control Engineering
Fr. Bajersvej 7 - C4-221.

 
 
Carsten (11-07-2001)
Kommentar
Fra : Carsten


Dato : 11-07-01 21:04

Michael Sig Birkmose <msbi00@control.auc.dk> wrote in message
news:3B4C8C5B.C41BFFC6@control.auc.dk...
> Pointen er at jeg skal lave en servlet, som kan vise html sider fra en
> database - både statiske og dynamiske. Det vil sige at en database
> indeholder en masse html dokumenter som serlveten skal visses. Dette er
> også nemt nok... men hvad gør jeg med dynamiske sider - dvs. sider hvor
> der ligger noget java-kode bagved? Mit forslag er at jeg serialiserer
> java objekterne og kommer dem i databasen...

Hvad er der i vejen med JSP sider ? Dem kan du (gælder for de fleste
Java web servers) godt addere til serveren uden at den skal genstartes.

Alternativ: hvad med at du gemmer de dynamiske sider i databasen som
JSP sider og så blot loader dem fra servletten når de requestes. Servletten
skal så blot gemme JSP'en på et fast defineret sted og så redirect'e
browseren dertil.

Jeg er nu stadig ikke helt sikker på hvad det er for nogle dynamiske sider
du har ?!

Carsten




Michael Sig Birkmose (11-07-2001)
Kommentar
Fra : Michael Sig Birkmose


Dato : 11-07-01 21:32

> Hvad er der i vejen med JSP sider ? Dem kan du (gælder for de fleste
> Java web servers) godt addere til serveren uden at den skal genstartes.

Hmmm nu er jeg ikke vildt meget inde i JSP, men oversættes JSP ikke bare
til en servlet?

>
> Alternativ: hvad med at du gemmer de dynamiske sider i databasen som
> JSP sider og så blot loader dem fra servletten når de requestes. Servletten
> skal så blot gemme JSP'en på et fast defineret sted og så redirect'e
> browseren dertil.

Det er ikke helt den løsning jeg er ude efter. At redirecte synes jeg
heller ikke er kønt :)

> Jeg er nu stadig ikke helt sikker på hvad det er for nogle dynamiske sider
> du har ?!

Okay pointen er at jeg vil lave et content management system, som kan
hive hjemmesider ud fra en databse. Statiske sider er bare xml, som skal
oversættes til html.

Men jeg har jo også nogle dynamiske sider - et spørgeskema kunne være et
eksempel.
Jeg har brug for et smart interface som kan håndtere begge dele - her
forestiller jeg mig noget ala et interface xmlPage med to metoder -
sendParm og getXml.

Hvis man vil have en statisk side har jeg en klasse staticPage
implements xmlPage
Og så konstruktor man bare staticpage med et id på en statisk side i
databasen.

Men tricket kommer med de dynamiske sider.... min ide er at jeg vil
gemme java objekter i databasen, som implementer dette xmlPage
interface. Så man henter bare objektet ud fra databsen, typecaster det
til xmlPage, sender eventuelle parametre med ind og kører derefter
getXml().

På den måde har man den samme api både til statiske sider og dynamiske
sider.... Det vil sige, at content management systemmet er så generelt,
at det ikke behøver at skelne mellem dynamiske og statiske sider....

Det synes jeg er smart :)

Lars Hansen (11-07-2001)
Kommentar
Fra : Lars Hansen


Dato : 11-07-01 22:09

Jo, jsp bliver compileret til en servlet, men hvis noget af indholdet ændres
bliver den compilet påny.

Jsp er ikke en svær teknologi, og jeg tror også den vil tjene formålet
bedst.

/Lars
"Michael Sig Birkmose" <msbi00@control.auc.dk> wrote in message
news:3B4CB7B4.EBB2355E@control.auc.dk...
> > Hvad er der i vejen med JSP sider ? Dem kan du (gælder for de fleste
> > Java web servers) godt addere til serveren uden at den skal genstartes.
>
> Hmmm nu er jeg ikke vildt meget inde i JSP, men oversættes JSP ikke bare
> til en servlet?
>
> >
> > Alternativ: hvad med at du gemmer de dynamiske sider i databasen som
> > JSP sider og så blot loader dem fra servletten når de requestes.
Servletten
> > skal så blot gemme JSP'en på et fast defineret sted og så redirect'e
> > browseren dertil.
>
> Det er ikke helt den løsning jeg er ude efter. At redirecte synes jeg
> heller ikke er kønt :)
>
> > Jeg er nu stadig ikke helt sikker på hvad det er for nogle dynamiske
sider
> > du har ?!
>
> Okay pointen er at jeg vil lave et content management system, som kan
> hive hjemmesider ud fra en databse. Statiske sider er bare xml, som skal
> oversættes til html.
>
> Men jeg har jo også nogle dynamiske sider - et spørgeskema kunne være et
> eksempel.
> Jeg har brug for et smart interface som kan håndtere begge dele - her
> forestiller jeg mig noget ala et interface xmlPage med to metoder -
> sendParm og getXml.
>
> Hvis man vil have en statisk side har jeg en klasse staticPage
> implements xmlPage
> Og så konstruktor man bare staticpage med et id på en statisk side i
> databasen.
>
> Men tricket kommer med de dynamiske sider.... min ide er at jeg vil
> gemme java objekter i databasen, som implementer dette xmlPage
> interface. Så man henter bare objektet ud fra databsen, typecaster det
> til xmlPage, sender eventuelle parametre med ind og kører derefter
> getXml().
>
> På den måde har man den samme api både til statiske sider og dynamiske
> sider.... Det vil sige, at content management systemmet er så generelt,
> at det ikke behøver at skelne mellem dynamiske og statiske sider....
>
> Det synes jeg er smart :)



Ole Nielsby (12-07-2001)
Kommentar
Fra : Ole Nielsby


Dato : 12-07-01 00:28


Michael Sig Birkmose <msbi00@control.auc.dk> skrev:

> Okay pointen er at jeg vil lave et content management system,
> som kan hive hjemmesider ud fra en databse. Statiske sider er
> bare xml, som skal oversættes til html.
>
> Men jeg har jo også nogle dynamiske sider - et spørgeskema
> kunne være et eksempel.
> Jeg har brug for et smart interface som kan håndtere begge dele - her
> forestiller jeg mig noget ala et interface xmlPage med to metoder -
> sendParm og getXml.

Jeg ved ikke hvilken metode du bruger for at konvertere XML til
HTML, men hvis du ikke allerede har gjort det, så sæt dig ind i
XSLT-stylesheets. Det er et stærkt redskab til at flikke dynamiske
websider sammen, og det er integreret i JEE, så du kan kalde
Javakode fra XSLT-stylesheets og omvendt.

XSLT er et sjovt lille programmeringssprog der er specialiseret
til at omstrukturere XML-dokumenter, og ganske stærkt på det
punkt.

Du opbygger de data der skal indflettes i en dynamisk hjemmeside,
som et simpelt lille DOM-træ. Det kører du så igennem et XSLT-
stylesheet - som du henter fra databasen og compilerer når du
får brug for det første gang - de compilerede stylesheets cacher
du i en Hashtable, som du tømmer når du lægger nye eller ændrede
stylesheets ind i databasen.

De klasser du skal bruge for at lave XSLT-transformationer,
er samlet i JEE2-betaen.

Læs "The XSL companion", 2000, Neil Bradley, forlag: Addison-Wesley

Jeg fiskede lige titel på bogen fra en servlet-baseret bogdatabase
med XSLT-baseret brugerflade. Du får en stump kode med - den
dims der hedder resolveTemplate(String path), henter templaten
fra en URL; du kan nok modificere den til at hente fra databasen.


public class CachingTransformManager ...
{
/* This class is a singleton */

private static TransformManager single;

public static TransformManager singleton()
{
if (single==null) single=new CachingTransformManager();
return single;
}

/* Reservoir for compiled templates */

private final Hashtable templateReservoir=new Hashtable();

private final TransformerFactory
factory=TransformerFactory.newInstance();

public synchronized Transformer getTransformer(String path)
throws Exception
{
Templates t=(Templates)templateReservoir.get(path);

/* Get and compile template if not present in reservoir */

if (t==null)
{
t=factory.newTemplates(resolveTemplate(path));
templateReservoir.put(path,t);
}

/* Return instance of compiled template */

return t.newTransformer();
}

public Source resolveTemplate(String path)
{
return new StreamSource(path);
}
}

ON/***Fjern sneglen fra min svaradresse***



Michael Sig Birkmose (12-07-2001)
Kommentar
Fra : Michael Sig Birkmose


Dato : 12-07-01 18:59

> Jeg ved ikke hvilken metode du bruger for at konvertere XML til
> HTML, men hvis du ikke allerede har gjort det, så sæt dig ind i
> XSLT-stylesheets. Det er et stærkt redskab til at flikke dynamiske
> websider sammen, og det er integreret i JEE, så du kan kalde
> Javakode fra XSLT-stylesheets og omvendt.

Jeg har for nyligt lært hvad XSLT-stylesheets er, og de virker for seje!
Pt laver jeg et større projekt i php, som spytter XML ud og som
oversættes til html gennem XSLT. Det er dog en anden person i projektet
som står for dette :(

Det kunne være meget cool hvis du havde et links til noget hello world
xml/html/xslt - i java..

Og også gerne et hello world eksempel til noget caching :)

Det er den fedeste måde at adskille kontekst og gui på :) Og man
begrænser sig ikke kun til html. Det lugter jo langt væk af struktur...
(puhadada :)

Morten Primdahl (16-07-2001)
Kommentar
Fra : Morten Primdahl


Dato : 16-07-01 08:37

Michael Sig Birkmose wrote:

> Det kunne være meget cool hvis du havde et links til noget hello world
> xml/html/xslt - i java..

Brug Cocoon fra http://xml.apache.org/ - den indeholder alle de
facetter du efterlyser.

Mvh Morten

--
Morten Primdahl Caput A/S Tel +45 70 12 24 42
morten@caput.com Nygade 6 Fax +45 70 11 24 42
http://www.caput.com/ DK-1164 Kbh K

Kasper Nielsen (14-07-2001)
Kommentar
Fra : Kasper Nielsen


Dato : 14-07-01 00:39

Kig på http://jakarta.apache.org/turbine/index.html der er bl.a. et
persistenslag som hedder som ordner alt for dig.
du definere dine tabeller i et xml-format, og Turbine (persistenslaget
hedder nu Torque) sørger så for at generere et klasse udfra hvert object.
F.eks.
public class Customer
{
private String name;
private int numberOfOrders;
public String getName()
{
return name;
}
public int getNumberOfOrders()
{
return numberOfOrders;
}
......
}

Så trækker du data ud med f.eks. List allCustomers=CustomerPeer.doSelect(new
Criteria()); (tager alle customers).

Hvis du så bruger velocity som er det fortrukne 'view' sprog med turbine
(kunne også være jsp) laver du f.eks.en .vm side med det her indhold
<html>
#foreach($customer in $allCustomers)
$customer.Name har fortaget $customer.NumberOfOrders indkøb
#next
</html>

Måden din model og dit view kommunikere er via en context. I det her
eksempel ville du f.eks. have brugt context.put("allCustomer",allCustomers)
i din java kode.

- Kasper


"Michael Sig Birkmose" <msbi00@control.auc.dk> wrote in message
news:3B4C8C5B.C41BFFC6@control.auc.dk...
> Hej gruppe..
> Jeg står over for en spændende problemstilling med java servlets, og jeg
> har fundet en potentiel løsning. Jeg vil dog høre, om der er nogle der
> har nogle bedre forslag...
>
> Pointen er at jeg skal lave en servlet, som kan vise html sider fra en
> database - både statiske og dynamiske. Det vil sige at en database
> indeholder en masse html dokumenter som serlveten skal visses. Dette er
> også nemt nok... men hvad gør jeg med dynamiske sider - dvs. sider hvor
> der ligger noget java-kode bagved? Mit forslag er at jeg serialiserer
> java objekterne og kommer dem i databasen... Så vil jeg have en servlet,
> som loader alle objekterne fra hele databasen, når web serveren
> initialiseres. Iogmed at det er serialiserede objekter vil
> initialiseringen blive langsommere, men når de først er loadet vil der
> ikke kunne mærkes forskel.
>
> Lyder dette som en dårlig løsning?
>
> Jeg havde også overvejet at man kunne gemme et filnavn på en klasse i
> databasen, men jeg kan ikke rigtig se hvordan det skulle fungere? Det
> skulle være noget med:
>
> filNavn=udtræk fra databse;
> Object object=voodoo med filNavn
>
> Men hvordan gør man noget lignende?
>
>
> Hele pointen er at den servlet jeg skal lave, som kan vise både
> dynamiske og statiske html sider, ikke skal hardcodes og dermed ændres
> hver gang en dynamisk side tilføjet.
>
> Jeg ser frem til at høre nogle spændende inputs....
> --
> Michael Birkmose
> Department of Control Engineering
> Fr. Bajersvej 7 - C4-221.



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste