Variablenübergabe von Servlet zu JSP

Status
Nicht offen für weitere Antworten.

Heiko

Bekanntes Mitglied
Hallo,

habe ein Problem mit der Übergabe von Variablen.

Folgendes Coding wurde mir vorgeschlagen, es funktioniert aber nicht.

Nun meine Frage:

Liegt einfach ein Verständnisproblem von mir vor, oder ist das die komplett falsche Lösung zu meiner Frage?


Code:
//Servlet
//Hier sende ich den Wert (ergebnis) er ist auch ungleich null, habs in der Konsole überprüft
request.setAttribute(empfang,ergebnis);

Code:
//JSP
//Hier empfange ich den Wert, es wird aber nur null ausgegeben

<%!public String ergebnis;%>
<%! 
public void empfang(HttpServletRequest request){

ergebnis= (String)request.getAttribute("empfang");

}%>

<%=ergebnis%>
 
B

bygones

Gast
meines wissens brauchst du in der jsp gar keine methode....
das sollte reichen:
Code:
<%@ page language="java" %>
hallo - ihre eingabe war <%= request.getAttribute("empfang") %>
oder so
 
B

bygones

Gast
klar - der String empfang muss natuerlich den Inhalt "empfang" haben
 

Heiko

Bekanntes Mitglied
Hat nix genutzt, irgendwie verliert der die Sache auf dem Weg.

Braucht ihr evtl mehr von meinem Coding, es wäre mir sehr wichtig die Sache zu lösen.
 

Heiko

Bekanntes Mitglied
Xenophon hat gesagt.:
Ja, poste mal mehr Code.

Ich habe jetzt knapp die Hälfte meines Codings gepostet, das was nicht zu sehen ist funktioniert und das hier funktioniert auch alles, bis auf die Übergabe an das JSP

OK, zunächst einmal meine JSP:

Code:
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="java.io.*"%>

<HTML>
<HEAD>
<TITLE>Finde RessourceBundles</TITLE>
</HEAD>
<BODY>
<FORM METHOD="post" ACTION="test">
<H3>Bitte w&hlen Sie das Verzeichnis, in dem nach den verwendeten
Ressourceboundles gesucht werden soll. 

</H3>


Bitte bet&tigen Sie danach die Schaltfl&che [B]"Neue
Auswertung starten"[/B]:</P>
<HR>


<INPUT TYPE="radio" NAME="pfad" VALUE="D:/wsad/" />Alle Projekte

<INPUT TYPE="radio" NAME="pfad" VALUE="D:/wsad/TrimzahlenWeb" />TrimzahlenWeb

<INPUT TYPE="radio" NAME="pfad" VALUE="D:/wsad/LeasingEJB" />LeasingEJB

<INPUT TYPE="radio" NAME="pfad" VALUE="D:/wsad/SerfinEJB" />SerfinEJB

<INPUT TYPE="radio" NAME="pfad" VALUE="D:/wsad/BenutzerverwaltungWeb" />BenutzerverwaltungWeb

<INPUT TYPE="radio" NAME="pfad" VALUE="D:/wsad/Heiko1" />Heiko1



<INPUT TYPE="submit" NAME="suche" VALUE="Neue Auswertung starten" /></FORM>


<HR>

<%=(String)request.getAttribute("empfang") %>

</BODY>
</HTML>

und nun etwas von meinem Servlet, das ganze würde sonst den Rahmen hier sprengen, glaube ich:

Code:
package heiko2;

import java.io.IOException;

import java.io.*;
import java.lang.*;
import java.util.*;
import java.awt.Component;
import java.io.DataInputStream;
import java.io.FileWriter;
import java.io.FileOutputStream;
import java.util.Arrays;
import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @version 	1.0
 * @author
 */
public class test extends HttpServlet
{

	private static String dateien, verzeichnis;
	private static int kapazitaet, verz, dat;
	private static Vector vektor = new Vector(100);
	private static String[] nichtenthalten, suffix = { ".java", ".jsp" };
	private static Vector files, datnamen, ungenutzt;
	private static String ergebnis, empfang;

	/**
	* @see javax.servlet.http.HttpServlet#void (javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	*/
	public void doGet(HttpServletRequest req, HttpServletResponse resp)
		throws ServletException, IOException
	{
		dateien = "";
		verzeichnis = "";
		ergebnis = "";
		EmpfangParameter(req, resp);

	}

	/**
	* @see javax.servlet.http.HttpServlet#void (javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	*/
	public void doPost(HttpServletRequest req, HttpServletResponse resp)
		throws ServletException, IOException
	{
		dateien = "";
		verzeichnis = "";
		ergebnis = "";
		EmpfangParameter(req, resp);
	}

	public static void EmpfangParameter(
		HttpServletRequest request,
		HttpServletResponse response)
	{
		String pfadname = request.getParameter("pfad");
		if (null != pfadname && pfadname.length() > 0)
		{
			Vector files = DateiSuche(pfadname, suffix);
			String namen = files.toString();
			File[] datname = (File[]) files.toArray(new File[files.size()]);

			for (int i = 0; i < datname.length; i++)
			{
				//Start der eigentlichen Analyse
				String pfad = datname[i].getAbsolutePath();
				String name = datname[i].getName();
				StreamOeffnen(pfad, name);
			}
			System.out.println(ergebnis);
			request.setAttribute("empfang", ergebnis);
		}
	}

			
	public static void ErstellArray2(Vector ungenutzt)
	{
		int kap = ungenutzt.size() - 1;
		int grwert = Integer.parseInt(ungenutzt.get(kap).toString());
		String[] vektor2 = new String[grwert];
		Vector letzt = new Vector(100);

		for (int i = 0; i < kap; i++)
		{
			int k = Integer.parseInt(ungenutzt.get(i).toString());
			vektor2[k] = ungenutzt.get(i).toString();

		}

		for (int i = 0; i < vektor2.length; i++)
		{
			String temp;
			if (vektor2[i] == null || vektor2[i] == "")
			{
				temp = "" + i;

				//Macht die Ziffernfolgen wieder 4-stellig
				for (int j = 0; j < temp.length(); j++)
				{
					if (temp.length() < 4)
					{
						temp = "0" + temp;
					}
				}

				letzt.add(temp);
			}
		}
		nichtenthalten = new String[letzt.size()];
		for (int i = 0; i < nichtenthalten.length; i++)
		{
			nichtenthalten[i] = letzt.get(i).toString();
		}

	}

	public static String ErstellHTML(String[] array)
	{
		ErstellArray2(ungenutzt);
		String test;
		String rb;
		String datei;
		String mitte = "";
		String ende = "";
		int begrb = 0;
		int enderb = -1;
		int begdat = 0;
		//Durchläuft das Array und erstellt den String mitte
		for (int i = 0; i < array.length; i++)
		{
			if (array[i] != null)
			{
				test = array[i];
				enderb = test.indexOf(" ");
				begdat = test.indexOf(" ");
				rb = test.substring(0, enderb);
				datei = test.substring(begdat);
				rb.trim();
				datei.trim();
				mitte =
					mitte
						+ "<TR><TD WIDTH="
						+ "10%"
						+ ">"
						+ rb
						+ "</TD><TD WIDTH="
						+ "90%"
						+ ">"
						+ datei
						+ "</TD></TR>";
			}

			if (array[i] == null && i == 0)
			{
				mitte = "<TR><TD COLSPAN=2>Keine Werte enthalten</TD></TR>";
			}
		}
		//Durchläuft das Array "nichtenthalten" und erstellt den String ende
		for (int i = 0; i < nichtenthalten.length; i++)
		{
			if (nichtenthalten[i] != null)
			{
				ende = ende + " " + nichtenthalten[i];
			}

		}

		//Erstellt das HTML Grundgerüst. String mitte wird eingefügt
		if (mitte.equals(""))
		{
			mitte = "<TR><TD COLSPAN=2>Keine Werte enthalten</TD></TR>";
		}
		String rueck =
			"<HTML>"
				+ "<HEAD><TITLE>Auswertung</TITLE></HEAD>"
				+ "<BODY>[b]Liste der gefundenen Ressourceboundles[/b]

 "
				+ " Es wurden "
				+ verz
				+ " Verzeichnisse und "
				+ dat
				+ " Dateien dursucht.
"
				+ "

<TABLE WIDTH="
				+ "100%"
				+ " HEIGTH="
				+ "100%"
				+ " BORDER=1>"
				+ "<TR><TD WIDTH="
				+ "10%"
				+ "> [b]Ressourceboundle[/b] </TD><TD WIDTH="
				+ "90%"
				+ ">[b]Datei[/b]</TR>"
				+ mitte
				+ "</TABLE>

</P>"
				+ "<TABLE WIDTH=100% BORDER=1>"
				+ "<TR><TD>[B]Folgende Ressourceboundles wurden nicht verwendet: [/B]</TD></TR>"
				+ "<TR><TD>"
				+ ende
				+ "</TD></TR>"
				+ "</TABLE>"
				+ "</BODY></HTML>";

		ergebnis = ergebnis + rueck;
		return rueck;
	}
}
 

meez

Top Contributor
Tu mir einen Gefallen, und nimm die static Befehle raus...
Zumindest aus den Methoden...
 
B

bygones

Gast
arbeite noch nicht solange mit jsps - daher ohne gewaehr...
aber ich denke du musst deiner jsp auch sagen, dass sie ne java seite ist
also anstatt
Code:
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="java.io.*"%>
Code:
 <%@ page language="java" %> 
<%@page pageEncoding="UTF-8"%>
bzw. den import brauchst du bei der aktuellen jsp nicht - du verwendest ja nirgends eine Java Klasse
ob was im servlet falsch ist weiss ich nicht....
 

Heiko

Bekanntes Mitglied
deathbyaclown hat gesagt.:
arbeite noch nicht solange mit jsps - daher ohne gewaehr...
aber ich denke du musst deiner jsp auch sagen, dass sie ne java seite ist
also anstatt
Code:
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="java.io.*"%>
Code:
 <%@ page language="java" %> 
<%@page pageEncoding="UTF-8"%>
bzw. den import brauchst du bei der aktuellen jsp nicht - du verwendest ja nirgends eine Java Klasse
ob was im servlet falsch ist weiss ich nicht....

Jetzt ist mir gerade der Server abgeschmiert, ich seh das als Zeichen zum Feierabend!

Habe die Änderungen noch durchgeführt.

Bis Morgen zusammen und danke schonmal! :applaus:
 

meez

Top Contributor
Weil es, so wie dus benutzt, total gegen die OO Grundsätze verstösst...;)

btw Variablen, bzw. Objecte zwischen Servlets (JSP wird auch zu einem Servlet) austauschen, würd ich über System-Properties machen...
 

Heiko

Bekanntes Mitglied
meez hat gesagt.:
Weil es, so wie dus benutzt, total gegen die OO Grundsätze verstösst...;)

btw Variablen, bzw. Objecte zwischen Servlets (JSP wird auch zu einem Servlet) austauschen, würd ich über System-Properties machen...

Kein Problem, das static ist gleich entfernt. SystemProperties? Mal sehen ob ich dazu was finde.
 

Heiko

Bekanntes Mitglied
Also die Übergabe funktioniert, musste allerdings das ganze Ding umstrukturieren.

Jetzt habe ich nur eine Frage:

Was ist an folgendem Code falsch?

Hätte euch vielleicht noch sagen sollen, worum es eigentlich genau geht, SORRY!
Mit der EIngabe.jsp wird alles vom user übernommen, dnacah wird im Servlet Analyse.java analysiert (in dem Coding sind wir) und dnach soll die JSP Ausgabe.jsp aufgerufen werden und dann ist das fertig, im Idealfall.

Wäre schön, wenn mir jemand helfen könnte!


Code:
public void doGet(HttpServletRequest req, HttpServletResponse resp)
		throws ServletException, IOException
	{
		System.out.println("System startet");
		RequestDispatcher disp1 =
			getServletContext().getRequestDispatcher("Eingabe.jsp");
		disp1.forward(req, resp);

		System.out.println("Das Formular ist bearbeitet");
		EmpfangParameter(req, resp);

		System.out.println("Die Analyse wurde durchgeführt");

		req.setAttribute("datei", "" + dat);
		req.setAttribute("verzeichnis", "" + verz);
		req.setAttribute("zuHtml", zuHtml);

		System.out.println("Die Attribute sind gesetzt");
		RequestDispatcher disp2 =
			getServletContext().getRequestDispatcher("Ausgabe.jsp");
		disp2.toString();
		System.out.println(disp2.toString());
		

		System.out.println("Ich wäre fertig soweit");

	}

In der Ausgabe meiner Konsole stimmt alles, nur wenn ich beim zweiten Dispatcher forward mache und die Seite aufrufe kommt eine Fehlermeldung, nämlich folgende:

Code:
[14.07.04 10:19:08:731 CEST] 716754bd SystemOut     O Die Attribute sind gesetzt
[14.07.04 10:19:08:746 CEST] 716754bd WebGroup      E SRVE0026E: [Servlet-Fehler]-[Analyse]: java.lang.IllegalStateException: Cannot forward. Response already committed. (Servlet 2.3, SRV 8.4)
	at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:160)
	at heiko2.Analyse.doGet(Analyse.java:57)
	at heiko2.Analyse.doPost(Analyse.java:71)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110)
	at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174)
	at com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycleServlet.java:313)
	at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java:116)
	at com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java:283)
	at com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java:42)
	at com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java:40)
	at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:923)
	at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:528)
	at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:176)
	at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:79)
	at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:201)
	at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71)
	at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:182)
	at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334)
	at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56)
	at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:516)
	at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:362)
	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))
[/i]
 

Heiko

Bekanntes Mitglied
Hab den Eintrag nochmal editiert, hatten einige Angaben gefehlt, die zum Verstehen meines Vorhabens wichtig sind.
 
G

Guest

Gast
Ich seh nicht ganz den Sinn darin Servlets zusammen mit JSPs zu verwenden. Geht das überhaupt?
Entweder nur JSPs + Beans
oder nur
Servlets

Eine Bean kannst du folgendermaßen in die JSP einbinden:

Code:
<jsp:useBean id="beanname" scopse="application" class="packagename.Classname"/>
Für Scopse gibt es unterschiedliche Werte.

So kannst du dann im jsp auf getter und setter zugreifen:

Code:
<%
beanname.setVariableA(666);
out.println(beanname.getVariableA());
%>
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Variablenübergabe über mehrere Klassen Allgemeine Java-Themen 4
T Variablenübergabe liefert immer null Allgemeine Java-Themen 13
S Problem mit Variablenübergabe Allgemeine Java-Themen 4
D HTTP Aufruf einer Methode aus einem Servlet heraus Allgemeine Java-Themen 0
M Parameter auslesen im Servlet Allgemeine Java-Themen 0
E Die if-Anweisung in einer Java Bean bzw. in einem Servlet? Allgemeine Java-Themen 8
A Registrierungs-servlet Allgemeine Java-Themen 0
S Servlet, per URLConnection Mit String Http Parameter mitsenden Allgemeine Java-Themen 3
F Benachrichtigungs-System Webapp Java Servlet Allgemeine Java-Themen 10
B Userdaten in Hashmap speichern - Servlet Allgemeine Java-Themen 6
S Bildaufbau durch Servlet -> Exception Allgemeine Java-Themen 11
N Servlet welches PDF erzeugt Allgemeine Java-Themen 10
U Servlet in Webseite einbinden Allgemeine Java-Themen 1
S Java Servlet Cache + Cache-Management Allgemeine Java-Themen 14
J package javax.servlet does not exist Allgemeine Java-Themen 5
P Servlet Eingaben sicher machen Allgemeine Java-Themen 5
P DocumentBuilder servlet Allgemeine Java-Themen 9
V [solved]Von Java Prog über ein JSP/Servlet auf DB zugreifen Allgemeine Java-Themen 3
M Applet Servlet Kommunikation ein Problem bei externem Server Allgemeine Java-Themen 3
G Servlet über apache Tomcat ansprechen Allgemeine Java-Themen 6
E Servlet wartet auf Thread Allgemeine Java-Themen 2
N Hardware-Webserver mit Java (JSP/Servlet)-Unterstützung? Allgemeine Java-Themen 8
K HTML-Formular findet Servlet nicht Allgemeine Java-Themen 2
K Servlet im Browser aufrufen Allgemeine Java-Themen 3
J einfachster Servlet-Aufruf klappt nicht Allgemeine Java-Themen 3
I Servlet von einem Swing Based GUI aufrufen Allgemeine Java-Themen 5
G Servlet Register/Login-Prozedur Allgemeine Java-Themen 9
T URL in Servlet auslesen? Allgemeine Java-Themen 4
A Was ist bei einem Servlet beim Client notwendig? Allgemeine Java-Themen 22
T Profiler für Servlet Allgemeine Java-Themen 2
T Servlet und JFrame Allgemeine Java-Themen 2
L E-Mail Auswertung mit Servlet (Excel) Allgemeine Java-Themen 3
L String ausgeben in Servlet Allgemeine Java-Themen 2
P Filestream von HTML-Form zu Servlet Allgemeine Java-Themen 6
B Suche Webhoster mit Javaunterstützung (JSP, Servlet) Allgemeine Java-Themen 10
P Was ist der Unterschied zwischen JSP und Servlet ? Allgemeine Java-Themen 4
M Wo krieg' ich die Datei Servlet.jar Allgemeine Java-Themen 3
R Servlet Probleme im Internet Explorer (per LAN) Allgemeine Java-Themen 4
G Servlet - "Client immer am neuesten Stand" Allgemeine Java-Themen 2
N Diagramm beschriften, Servlet Allgemeine Java-Themen 5
R suche servlet.jar Allgemeine Java-Themen 2
P Servlet, Deserialisieren, StreamCorruptedException Allgemeine Java-Themen 9
R Servlet, das File zurückliefert Allgemeine Java-Themen 4
1 Applet soll PDF von Servlet empfangen Allgemeine Java-Themen 3
E Servlet-Beispiel gesucht Allgemeine Java-Themen 3
M Mit HTML in Servlet Daten austauschen Allgemeine Java-Themen 3
H Servlet/Applet Kommunikation Allgemeine Java-Themen 2
M Servlet --> Berechnung --> Timeout vom Proxy oder IE!? Allgemeine Java-Themen 7
A Formular POST übergabe an Servlet Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben