Avatar billede kernelx Juniormester
12. marts 2009 - 18:41 Der er 5 kommentarer og
1 løsning

parse en jsp-fil i en servlet

Hi,

findes der en mulighed at jeg i et servlet kalder en jsp-fil idet jeg får en byte[] eller en String tilbage?

...
HashMap<String,Object> params = new HashMap<String,Object>();
params.put( "name", "TestNavn" );

String jspToParse = "hellotest.jsp";
String viewResponse = JspParser.parse( jspToParse );

out.println( viewResponse );
...


hellotest.jsp:
+++++++++++++++++++++++++++++++
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
  <head>
    <title>Test</title>
  </head>
  <body>
    Navn: ${name}<br/>
  </body>
</html>
+++++++++++++++++++++++++++++++


output (inhold af viewResponse):
+++++++++++++++++++++++++++++++
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: ...

<html>
  <head>
    <title>Test</title>
  </head>
  <body>
    Navn: TestNavn<br/>
  </body>
</html>
+++++++++++++++++++++++++++++++

Jeg vil gerne være i stand til at manipulere output før den bliver sendt tilbage til client.
Er der nogen, som kan hjælpe mig med det?

med venlig hilsen
KernelX
Avatar billede arne_v Ekspert
12. marts 2009 - 18:50 #1
Din platte loesning er at bruge HttpURLConnection til at hente med. Det er nemt, men ogsaa lidt tungt. Og parameterne skal med ind som traditionelle GET/POST parameters.

Den mere avancerede loesning maa vaere ikke at bruge en servlet men et servlet filter og lade det modificere request inden det rammer JSP siden og response efter at JSP siden er koert faerdig.
Avatar billede kernelx Juniormester
12. marts 2009 - 19:08 #2
er der ikke nogen parser som allerede eksisterer i andre projekter som f.eks. Spring, som man eventuelt kunne bruge?
Avatar billede arne_v Ekspert
12. marts 2009 - 19:18 #3
JSP sider fortolkes ikke - de compiles - trippel compiles.

JSP compilerne oversaetter .jsp -> .java
Java compileren oversaetter .java -> .class
JVM JIT compileren oversaette byte Java code (fra .claas) til native kode

Så hvis noget skal kaldes skal man kalde den genererede klasse. Maaske er det muligt. Men jeg ved ikke lige hvordan.
Avatar billede kernelx Juniormester
12. marts 2009 - 19:42 #4
OK, så min løsning må være at jeg selv laver en slags parser, som læser en fil der ligner en *.jsp

Findes der noget standard-java som kan hjælpe mig med det?
Et eller andet som hjælper mig med at parse?
Et Framework eller sådan noget?

Mange tak.
husk at skrive et eller andet som svar.
Avatar billede arne_v Ekspert
12. marts 2009 - 20:19 #5
Jeg kan ikke finde noget paa Google.

Lidt studeren af Java EE API antyder at foelgende er muligt:
* lav en klasse som:
    - implementerer ServletResponse
    - har en getWriter som returnerer en Writer der skriver til memory
    - dispatcher alle andre metoder til en aegte ServletResponse
    - har en metode som henter det skrevne data
* getRequestDispatcher og include med aegte request og en response som er en instans af ovenstaaende wrapper omkring det aegte respons

Men en del arbejde !
Avatar billede arne_v Ekspert
12. marts 2009 - 20:19 #6
Og et svar.
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