Avatar billede claushelth Nybegynder
09. maj 2003 - 23:05 Der er 19 kommentarer og
1 løsning

JSP og/eller Servlet???

Jeg sidder og skal lave en lille rapport over forskellige serverside script sprog, og har lavet mest i PHP.

Jeg er igang med at undersøge mulighederne inden for JSP/Servlet, men er i tvivl om begreberne.

Er det korrekt hvis jeg har forstået det sådan at JSP kan sidestilles med ASP og man i JSP benytter f.eks. java som man også kan benytte VBS i ASP?

Og hvor kommer servlest ind i billedet?
Hvad er det?

Håber der er nogle der kan give en god forklaring på det.
ps. Det er ikke en diskusion om hvad der er bedst...dem er der så mange af ;-), og vi har vist alle vores kæphest :-)

Claus
Avatar billede bearhugx Nybegynder
09. maj 2003 - 23:11 #1
Jeg ved ikke om det er en _god_ forklaring - men her er en lille en af slagsen...

JSP kan sidestilles med ASP

I JSP er sproget man bruger Java - i ASP er det en afart af VB (Visual Basic)

JSP sider bliver (første gang, de kaldes) konverteret til en servlet (som .class) og det er detefter denne servlet, som bliver eksekveret, når JSP siden kaldes....
Avatar billede arne_v Ekspert
09. maj 2003 - 23:11 #2
Ja. JSP svarer i koncept meget til ASP (og PHP).

Man skriver HTML kode og kan embedde et programmerings-sprog
i det.

Og for JSP er sproget Java.
Avatar billede arne_v Ekspert
09. maj 2003 - 23:14 #3
En Java servlet svarer vel nærmest til hvis man skriver et ISAPI
modul i C++ til IIS.

D.v.s. at det er ren kode.

Der er så den lille finesse at en JSP først compiles til en servlet
af JSP compileren og derefter compiles af Java compileren.

Det betyder at man uden videre kan genbruge de fleste ting man
har lært for servlets i JSP sider.
Avatar billede claushelth Nybegynder
09. maj 2003 - 23:17 #4
arne_v -> dvs at en servlet er ren kode (uden html) eller hvad?

Jeg ved at java er et objektorienteret sprog, men kan man sige at JSP og servlets er objektorienteret også?
Avatar billede arne_v Ekspert
09. maj 2003 - 23:18 #5
Et eksempel på JSP:

<%@page import="java.util.*"%>
Time is <%=(new Date())%>.

Et eksempel på en tilsvarende servlet:

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.net.*;
import java.util.*;

public class HelloWorldServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        response.setContentType("text/html");
        out.println("Time is " + (new Date()));
    }
}
Avatar billede arne_v Ekspert
09. maj 2003 - 23:19 #6
Servlets er ren kode.

Og man outputter eksplicit HTML:

out.println("<H1>Overskrift</H1>");
Avatar billede claushelth Nybegynder
09. maj 2003 - 23:19 #7
arne_v -> Jeg har læst noget om at man kan inkludere noget man kalder java-beans i sine JSP-sider. Som jeg forstå det er disse også en form for servlest så jo. De skulle være med til at opdele sitet i MVC, så kontrolen af data lå i disse java-beans?
Avatar billede arne_v Ekspert
09. maj 2003 - 23:21 #8
Servlets er Java kode og derfor lidt objekt-orienterede. Jeg vil
ikke kalde dem meget objekt-orienterede da man ikke rigtigt kan arve
mellem dem.

Samme med JSP sider.

Det objekt-orienterede komemr ind ved at alle ens utility klasser
kan laves fuldt objekt-orienteret i Java og betyden en høj grad
af genbrug af kode.
Avatar billede claushelth Nybegynder
09. maj 2003 - 23:22 #9
arne_v -> Har jeg forstået der korrekt sådan så du i dit eksempel laver en JSP-side som bliver kaldt at en http request, og JSP-siden så kalder servleten?
Avatar billede arne_v Ekspert
09. maj 2003 - 23:22 #10
Nej - java beans og servlets er to helt forskellige ting.

Java beans er Java klasser (kald dem evt. for utility klasser)
som kan bruges af både JSP sider og servlets.
Avatar billede arne_v Ekspert
09. maj 2003 - 23:23 #11
Nej - det er 2 selvstændige eksempler: en JSP side og en servlet, som bare
gør præcsi det samme.
Avatar billede arne_v Ekspert
09. maj 2003 - 23:24 #12
Der er flere måder at lave MVC på i JSP/servlets, men ener ihverdfald:

M = java beans
V = JSP sider
C = servlets
Avatar billede claushelth Nybegynder
09. maj 2003 - 23:31 #13
jeg er i så tilfælde stadig i tvivl om hvad den store forskel er på jsp og servlets. Jeg kan godt se det syntaksmæssige i det, men i sidste ende laver de det samme. og nu nå jeg bragte beans på banen (...sorry), hvad er det så de kan som servlets ikke kan. For mig ligner sevlets ren java for mig (J2EE), og umiddlebat lyder det til at beans er det samme???

Dit eksempel på en MCV:
dvs, at databasetilgangen forgår fra beans, funktionaliteten i servlets-siderne og resultatet bliver så vist via JSP-siderne?
Avatar billede arne_v Ekspert
09. maj 2003 - 23:34 #14
En servlet er en meget speciel klasse som svarer på en HTTP request.

En JSP side er meget nemmere at vedligeholde en den tilsvarende
servlet (se bare mit lille eksempel).

En java bean er en mere generel klasse f.eks. en klasse som indeholder
noget data.
Avatar billede arne_v Ekspert
09. maj 2003 - 23:36 #15
Ja.

Måske ville jeg omformulere det til at servlets initierer funktionaliteten,
fordi ofte er meget af selve funktionaliteten også flyttet ud i selvstændige
Java klasser.
Avatar billede claushelth Nybegynder
09. maj 2003 - 23:47 #16
okay...lige en sidste ting.

Nu har jeg jo som sagt siddet med php, som jo umiddelbart (i hvert fald i mit tilfælde)er lidt nimmere at gå til. I PHP har jeg fået forståelsen for at der bruger man kun php, dvs. at der kombinere man ikke på samme måde de forskellige værktøjer. Vil det sige at dem som forsøger at have opdelt deres løsning i en MVC, kun gør det i php filer som så inkluderes i hinanden?

Umidelbart er jeg blevet ret glad for php, men det lader til at man har lidt flere muligheder igennem JSP (med brug af servlets, utility klasser og andre værktøjer) alt efter den opgave man nu skal løse!

dvs. JSP-sider kompileres til bytekode første gang den loades, og derefter går det stærkere, hvad med servlest og utility klasserne...fungere disse på samme måde?
Når man siger at de loades første gang, menes der så at hver gang en ny klient loader første gang bliver koden kompileret, eller er det bare den første klient det lige skal igennem det?
Avatar billede arne_v Ekspert
09. maj 2003 - 23:52 #17
Jeg skal ikke udtale mig om PHP - det kender jeg for lidt til PHP til
at kune gøre.

Jeg tror at de fleste synes at PHP og ASP er nemmere at komme igang
med end JSP/servlets.

JSP/servlets begynder først at vise deres styrke ved lidt større
applikationer.

JSP sider compiles til servlets og videre til bytecode første gang
en JSP side vises efter start af serveren.

Servlets og utility klasser compiles af programmøren inden de deployes
på serveren.
Avatar billede claushelth Nybegynder
10. maj 2003 - 00:02 #18
ok...takker for dine svar, du får pointene her.

Jeg er lige ved at have den på plads.
Efter dine eksempler i starten har jeg udledt at de gør det samme og at man kan lave dem på begge måder. Efter den sidste kommentar spiller det ikke rigtig nogen rolle for serveren, da JSP-siden alligevel kompileres til en servlet(...en aha oplevelse).

De servlets (og utility klasser) man selv laver kompilere man selv fra starten, så disse vil ikke blive kompileret ved første load.

Når man siger at en JSP-side kompilere første gang så er det kun den første klient der besøger siden der skal vente i lidt længere tid, da JSP-siden jo selvføgelig ligger på serveren.

Jeg håber at mine udledninger af alle dine svar er korrekte, for så har jeg i hvert fald fået en meget bedre forståelse af hvordan det hele hænger sammen.

Jeg er datamatikerstud på 4. semester og er ved at skrive en synops om dette emne. På skolen undervises der i C++ (+ lidt java på valgfag).
Takker for hjælpen :-)
Avatar billede claushelth Nybegynder
10. maj 2003 - 00:02 #19
ups ...prøver lige igen ;-)
Avatar billede arne_v Ekspert
10. maj 2003 - 00:06 #20
Det lyder som om du har forstået det fint.

At JSP er meget nemmere at udvikle og vedligeholde end servlets
for HTML generering er dog ikke helt uvæsentligt.

Også selvom det i sidste ende bliver til nogenlunde ens
byte kode.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester