# JSP Parameter übergeben



## McCoy (25. Jun 2010)

Heya,

ich möchte über einen link die gleiche seite nocheinmal aufrufen und dabei parameter übergeben.

Bsp. test.jsp

```
<%!
  String lstrName ="";
%>
[...]
<a href="test.jsp?lstrName=true">Name</a>
[...]
<%
				if (lstrName.equals("true")){
				%>
					<p>yeeeeeeeeeeeeeeeea</p>
				<%
				}else{%>
					ooooooooooooooooooo :(
				<%}
```

Mein Problem ist nun, dass lstrName beim erneuten Aufrufen durch den link wieder initialisiert wird und nie den String "true" annimmt.

Gibt es eine *einfache* Möglichkeit lstrName so zu initialisieren, dass es beim neu laden einer seite auch einen anderen Wert annehmen kann ?

Greetz


----------



## Antoras (25. Jun 2010)

McCoy hat gesagt.:


> Gibt es eine *einfache* Möglichkeit


Ja, Servlets verwenden. In JSPs kommt kein Java-Code. Aber wenn du dich steif gegen Servlets stellst: Initialisiere den String mit dem Übergabeparameter...


----------



## McCoy (25. Jun 2010)

Antoras hat gesagt.:


> Ja, Servlets verwenden. In JSPs kommt kein Java-Code. Aber wenn du dich steif gegen Servlets stellst: Initialisiere den String mit dem Übergabeparameter...



Hat nichts damit zu tun, dass ich mich steif gegen servlets stelle. Habe einfach meine Gründe dafür.

Habe es bereits versucht den parameter im a-tag zu intitialsieren und bekommen "cannot be resolved".
Bzw kannst du mir ein Bsp-Code zeigen ? (falls es möglich ist)


----------



## knoppers (25. Jun 2010)

Wenn ich das richtig verstehe müsstest du eigentlich am Anfang schreiben


```
<% String lstrName = request.getParameter("parametername");%>
```

Danach kannst du den Parameter auf "true" oder "false" prüfen.
Wenn es über die ganze Session lessbar sein sollte dann musst du.


```
[code=Java]<% String lstrName = (String)session.getAttribute("parametername");%>
```
[/code]


----------



## McCoy (25. Jun 2010)

@knoppers: Danke das wär's gewesen. 

Parameter wird jetzt übergeben und variable kann auch anderen wert annehmen, aber jetzt funktioniert ein anderer Code nicht wenn ich eine test-if-abfrage vor anderen Code stelle.

Ich *liebe *JSP !!


----------



## Antoras (25. Jun 2010)

McCoy hat gesagt.:


> Parameter wird jetzt übergeben und variable kann auch anderen wert annehmen, aber jetzt funktioniert ein anderer Code nicht wenn ich eine test-if-abfrage vor anderen Code stelle.


Du behebst ein Problem durch einen hack und schon tut sich ein zweites Problem auf. Das behebst du auch durch einen hack und schon funktioniert der erste hack nicht mehr und du musst diesen wieder durch einen neuen hack ausbessern, was aber dazu führt, dass der zweite hack nicht mehr funktioniert und dieser wiederum durch einen hack ausgebessert werden muss, der wieder mit einem anderen hack in Konflikt gerät, der ...
Verstehst du was ich sagen will?

Für kleinere dynamische Seiten reichen JSPs, sobald du aber mehr als ein paar hundert Zeilen Code hast bekommst du durch sie mehr Probleme als sie dir helfen.

Wenn du vorhast etwas größeres zu entwickeln, dann nimm Servlets und JSPs. Dann musst du nicht in ein paar Wochen/Monaten feststellen, dass du den Code in die Tonne kippen kannst und alles von Grund auf neu machen musst, weil nichts so funktioniert wie du dir das vorgestellt hast.

Der Mehraufwand am Anfang ist es wert ...


----------



## knoppers (25. Jun 2010)

McCoy hat gesagt.:


> @knoppers: Danke das wär's gewesen.
> 
> Parameter wird jetzt übergeben und variable kann auch anderen wert annehmen, aber jetzt funktioniert ein anderer Code nicht wenn ich eine test-if-abfrage vor anderen Code stelle.
> 
> Ich *liebe *JSP !!



Wie meinst du das genau.


----------



## McCoy (25. Jun 2010)

Antoras hat gesagt.:


> Du behebst ein Problem durch einen hack und schon tut sich ein zweites Problem auf. Das behebst du auch durch einen hack und schon funktioniert der erste hack nicht mehr und du musst diesen wieder durch einen neuen hack ausbessern, was aber dazu führt, dass der zweite hack nicht mehr funktioniert und dieser wiederum durch einen hack ausgebessert werden muss, der wieder mit einem anderen hack in Konflikt gerät, der ...
> Verstehst du was ich sagen will?
> 
> Für kleinere dynamische Seiten reichen JSPs, sobald du aber mehr als ein paar hundert Zeilen Code hast bekommst du durch sie mehr Probleme als sie dir helfen.
> ...


Ich hab bereits bei deinem ersten Post voll und ganz verstanden was du mir sagen wolltest. Also erkläre ich mich: In weniger als einer Woche darf ich ein kleines JSP-Datenbank Projekt als "Mini-Projekt" meiner Uni vorstellen. Der Prof. der die Vorlesung hält ist nicht gerade auf dem neusten Stand was heutige Web-Techniken angeht. Ich würde da auch gerne etwas mehr reinstecken, leider habe ich noch genug andere Dinge die meine Aufmerksamkeit benötigen. Ohne die *richtige* verwendung von servlet+jsp+mysql je gelernt zu haben mache ich es jetzt einfach schnell und schmutzig - hatte zu Anfang genug Probleme für die ich 2 Tage ohne Erfolg geopfert hatte.

Nun zu seinem weiteren Problem das ich gerade zu "lösen" versuche ...

Ich übergebe param den String wert true und rufe die selbe Seite noch einmal auf.

```
String sortieren = "false";
...
<a href="test.jsp?param=true">Name</a>
```
hole mir sortieren mit request.getParameter.

```
sortieren = request.getParameter("param");
			if(sortieren.equals("true")){
				%>
					<p>weeeeeeeeeeee</p>
				<%
			}
			else{
				%>
					<p>AAAAAAAAAAAAARGH</p>
				<%
			}
```
Wurde der linkt geklickt wird die if-bedingung .equals("true") erfüllt. Wird sie nicht erfüllt geht JSP überhaupt nicht in den else-zweig. Stattdessen wird einfach nur null angezeigt.

ein _else if(sortieren == null){...}_ging auch nicht.

Die einfachen Dinge funktionieren nicht und darum liebe ich JSP. Werde jetzt weiter probieren ob ich noch irgendwas hinbekomme das funktioniert. Für hinweise in JSP-Code bin ich sehr dankbar


----------



## Antoras (25. Jun 2010)

McCoy hat gesagt.:


> Der Prof. der die Vorlesung hält ist nicht gerade auf dem neusten Stand was heutige Web-Techniken angeht.


Ok, hab verstanden. 

Zu deinem Problem: Da wird wahrscheinlich eine Exception geworfen. Da ich schon ewig nicht mehr mit JSPs gearbeit hab weiß ich grad nicht ob die ohne try-catch-Block einfach nur geschluckt werden. Aber ich glaube schon.
request.getParameter() liefert null zurück wenn der Parameter nicht existiert. Im folgenden fliegt dann die Exception weil du auf einen String zugreifst, der null ist.
Du musst jetzt entweder abfragen ob der String null ist oder du musst das equals() umschreiben:

```
"true".equals(sortieren)
```
wenn equals() null übergeben wird fliegt keine Exception, es wird aber false zurückgegeben.

Falls das nicht der Fehler war musst du noch mehr Code zeigen, damit wir hier den Ablauf des Codes besser nachvollziehen können.



McCoy hat gesagt.:


> Die einfachen Dinge funktionieren nicht und darum liebe ich JSP.


Hä? Du magst es lieber schwer und kompliziert? Warum?


----------



## McCoy (26. Jun 2010)

Das war sarkastisch gemeint. Und das hier sollte noch einfacher Code sein, der übrigens funktioniert. Kann's aber kaum abwarten bis es wieder nicht funktioniert.

```
[...]

	<body>
	<h1>~~~~~~~~~Test</a></h1>
	<%!
		Connection connection = null;
		ResultSet resultSet = null;
		Statement statement = null;
		String sortieren = "name";
	%>
	
	<%
		try{
			Class.forName("org.gjt.mm.mysql.Driver");
			connection = DriverManager.getConnection("...");
			statement = connection.createStatement();
			
			statement.executeUpdate("drop table if exists test;");
			statement.executeUpdate("create table test (name char(25),nalter int(2));");
			statement.executeUpdate("insert into test values ('Hugo',12);");
			[...]
			
			String test = request.getParameter("param");
			if(test !=null){
				sortieren = request.getParameter("param");
			}
			
			
				if(sortieren.equals("name")){
					resultSet = statement.executeQuery("select * from test ORDER BY name;");
				}
				else{
					resultSet = statement.executeQuery("select * from test ORDER BY nalter;");
				}
			
			%>
			<table>
				<tr id="head">
					<td><a href="test.jsp?param=name">Name</a></td>
					<td><a href="test.jsp?param=alter">Alter</a></td>

				</tr>
			<%
			while(resultSet.next()){
			%>	
			
				<tr>
					<td><%=resultSet.getString(1)%></td>
					<td><%=resultSet.getString(2)%></td>
				</tr>
			<%
			}
			%>
			</table>
			<%			
		}
		
		catch(Exception e){
			out.println(e.getMessage());
			e.printStackTrace();
		}
	%>
  </body>
</html>
```


----------

