JSPs richtig includen

Status
Nicht offen für weitere Antworten.

coolex

Mitglied
Hallo!

Ich versuche eine JSP in einer anderen zu inluden.
Aus Erfahrungen, weiß ich, dass ich das unter PHP ganz einfach mit "include 'datei.php'" machen kann und dann auf alle Variablen und Methoden der anderen php Datei zugreifen kann. Dabei muss die andere php vorher nichts angeben bzw. für das Includen vorbereiten.

Wie ist das aber bei JSPs?
Ich habe eine JSP erstellt, die folgenden Code enthält:
Code:
<jsp:include page="includeMe.jsp" />
Dabei bin ich davon ausgegangen, dass ich auf die Variablen und Methoden der "includeMe.jsp" problemlos zugreifen kann. Leider ist das nicht der Fall.

Wie kann man auf die Methoden und Variablen einer includierten JSP nun zugreifen?

Danke für eure Hilfe im voraus!
 

ms

Top Contributor
Mit
Code:
<%@ include file="..."%>
wird eine jsp statisch inkludiert.

ms
 

coolex

Mitglied
Hi!

Danke für die schnelle Antwort.
Wie kann ich aber an der Stelle file="xxx" eine Java Variable einfügen?
Also statt "xxx" soll eine String Variable stehen.
 

coolex

Mitglied
Kann man das dynamische Includen irgendwie mit
Code:
<jsp:include page="xxx" flush="true">
lösen?
Dabei möchte ich, wie oben schon erwähnt, auch die Variablen includen. Leider funktioniert das nicht.
 

ms

Top Contributor
coolex hat gesagt.:
Kann man das dynamische Includen irgendwie mit
Code:
<jsp:include page="xxx" flush="true">
lösen?
Dabei möchte ich, wie oben schon erwähnt, auch die Variablen includen. Leider funktioniert das nicht.
Nein, mit jsp:include inkludierst du das Ergebnis einer anderen Seite, nicht dessen JSP-Code.
Zusammen mit flush() ist das ein eigener HttpRequest.

ms
 

ms

Top Contributor
Üblicherweise werden Variablen, die in JSPs verwendet werden, in einem Servlet erzeugt und im Request- oder Sessionscope abgelegt. Wenn eine JSP eine andere inkludiert, dann soll an dieser Stelle das Ergebnis dieser JSP eingefügt werden. Du kannst auch einen Include wie einen Methodenaufruf sehen. Nach dem Aufruf kannst du auch nicht auf die definierten Variablen aus der Methode zugreifen.
Dein ganzer Aufbau mag in php gut funktionieren, bei Java/Jsp läuft das ein wenig anders/organisierter.

ms
 

coolex

Mitglied
Ok, das kann ich gut nachvollziehen und finde es sehr gut, dass das organisierter ist. Deswegen beschäftige ich mich nun mit JSPs.
Aber leider habe ich immer noch keinen Weg gefunden, der mein Problem löst. Kann mir jemand ein Bsp. zeigen, wie ich das nun letztendlich machen kann?
 

ms

Top Contributor
Zeig doch mal (in gekürzter form) was du bisher hast und was du machen willst.

ms
 

coolex

Mitglied
Gut.
Also ich habe hier eine index.jsp Datei:
Code:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<jsp:include page="includeMe.jsp"  />
<%= exampleVar %>

</body>
</html>
Und hier ist die "includeMe.jsp":
Code:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    
<%!
	public String exampleVar = new String("Hallo Alexandro!");
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
</body>
</html>

Also die Variable in "includeMe.jsp" "exampleVar" soll verfügbar sein in der index.jsp.
Dabei soll das Einfügen der "includeMe.jsp" dynamisch erfolgen, weil ich später meine index.jsp erweitern möchte und das Includen der jsps eben dynamisch machen will. Also der Name der zu includierten Datei wird dann dynamisch zusammengestellt.
 

ms

Top Contributor
Gutes Beispiel wie man es nicht macht.

Wie schon gesagt, am besten du schreibst ein Servlet, definierst die Variable und legst sie im RequestScope ab und leitest dann an die JSP weiter. In der JSP wird dann auf die Variable zugegriffen.

Schau dir dazu mal diverse Servlet/JSP-Tutorials an bzw. gibt auch genug Bücher dazu.
Oder http://java.sun.com/javaee/5/docs/tutorial/doc/bnadp.html von Sun.

ms
 

coolex

Mitglied
Geht das nicht einfacher und schneller ohne dass ich Servlets schreiben muss? JSPs sind ja letztendlich auch Servlets. Kann man das nicht irgendwie mit Hilfe von <jsp:param> Tags lösen?
 

ms

Top Contributor
Du kannst einer JSP, die du inkludieren willst, Parameter mitgeben.
Das sind aber wie bei einem Methodenaufruf nur Parameter für die Methode, also in deinem Fall für die inkludierte JSP.

Der umgekehrte Weg, dass du Variablen in der inkludierten JSP definierst und in der aufrufenden JSP verwendest geht nicht.

ms
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben