# JSP + Java + DBCon: Sehe den Wald vor lauter Bäumen net mehr



## J€ns (20. Mrz 2006)

Halllo Leute,

ich habe da mal ein paar Fragen.

Ich arbeite jetzt schon was mit J2EE, 
aber eins was ich nicht kapiere ist dieses mit den Java Beans.

Ich habe 2 Klassen.(siehe unten)

Nun habe ich eine Anwendung(jsp), in der ich eine laufende Nr habe, die nicht final ist.
also sie ändert sich von Aufruf zu Aufruf.
Diese Nummer brauche ich aber für die DBConnection um die sql abfrage zu starten.
Jetzt sagte man mir das müsste mit Java Beans realisiert werden.
Ich hänge an dem Problem schon länger, habe mir sämtliche JSP:bean sachen angeguckt,
aber ich komme nicht voran =(

Ich hoffe ihr könnt mir helfen, wie ich die Nummer von der JSP in die DBConnection bekomme,
und wie ich die Strings aus MyBeans in die JSP bekommen =(

Ich danke euch schonmal herzlichst 

mfg

ratloser J€ns


1. MyBean.class

```
import java.io.Serializable;
import java.util.*;

public class MyBeans implements Serializable
{
	//Property der Bean
	 private String erw_str_a = "";
	 private String erw_str_b = "";
	 private String erw_str_c = "";
	 private String erw_str_d = "";
	 private String erw_str_nr= "";
	 	 
	MyBeans()
	{
		erw_str_a = "";
		erw_str_b = "";
		erw_str_c = "";
		erw_str_d = "";
		erw_str_bvnr= "";
	}
	
	public String getStr_bvnr() {
		return (erw_str_bvnr);
	}
	public void setStr_bvnr(String str_bvnr) {
		erw_str_bvnr = str_bvnr;
	}
	public String getStr_c() {
		
		return erw_str_c;
	}
	public void setStr_c(String str_c) {
		erw_str_c = str_c;
	}
	public String getStr_d() {
		return erw_str_d;
	}
	public void setStr_d(String str_d) {
		erw_str_d = str_d;
	}
	public String getStr_b() {
		return erw_str_b;
	}
	public void setStr_b(String str_b) {
		erw_str_b = str_b;
	}
	public String getStr_a() {
		return erw_str_a;
	}
	public void setStr_a(String str_a) {
		erw_str_a = str_a;
	}
}
```

2. DBConnection

```
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBConnection
{
	public static final String DRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
	public static final String IPADRESSE = "//***.***.***.***";
	public static final String PORT = "1433";
	public static final String DATABASENAME = "SQL";
	public static final String USER = "***";
	public static final String PASS = "***";
	public static final String PROTOCOL = "jdbc:microsoft:sqlserver:" + IPADRESSE + ";DatabaseName=" + DATABASENAME + ";SelectMethod=Cursor;User=" + USER +";Password=" + PASS;

	public String sql = "";
	public static String str_a = "";
	public String str_b = "";
	public String str_c = "";
	public String str_d = "";
	public static String str_nr="";
	
	MyBeans beans = new MyBeans();
	
	public DBConnection(String nr)
	{
		str_nr = nr;
				
		sql = "SQL Abfrage die einen Parameter aus einer JSP benötigt (nr)";

		try
		{
			Class.forName(DRIVER);
		}

		catch (ClassNotFoundException e)
		{
			System.err.println("Keine Treiber-Klasse!");
			return;
		}

		Connection con = null;

		try
		{
			con = DriverManager.getConnection(PROTOCOL);
			Statement stmt = con.createStatement();
			ResultSet rs = stmt.executeQuery(sql);

			if (rs.next())
			{
				beans.setStr_a(rs.getString(1));	
					
				beans.setStr_b(rs.getString(2));	
				
				beans.setStr_c(rs.getString(3));	
				
				beans.setStr_d(rs.getString(4));             
                
                stmt.close();
			}
		}

		catch (SQLException e)
		{
			// e.printStackTrace();
			return;
		}
		
		finally
		{
			if (con != null)
				try
				{
					con.close();
				}
				catch (SQLException e)
				{
					// e.printStackTrace();
				}
		}
	}

	public static void main(String[] args)
	{
		DBConnection dbcon = new DBConnection(str_nr);
	}
}
```


----------



## Gumble (20. Mrz 2006)

Hier steht alles noetige drin:
http://java.sun.com/javaee/5/docs/tutorial/doc/

<jsp:useBean id="myDataBean" scope="session" class="my.package.name.MyBeans"/>

mit der JSP Expression Language greifst Du drauf zu: "${myDataBean.Str_c}"

paar Anmerkungen: Den Beannamen wuerde ich im Singular lassen "MyBean". Die Attribute und die Getter/Setter sollten einander entsprechen:
private type attributeA;
public void setAttributeA(type value){...}
public type getAttributeA(){...} 

Wenn Du Werte von der Html-Seite (jsp) uebergeben moechtest, dann heftet man die als Parameter ans HTTP-Request.
z.B. Duke aus Suns Tut
	
	
	
	





```
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" 
  prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" 
  prefix="fn" %>
<html>
  <head><title>Hello</title></head>
  <body bgcolor="white">
    [img]duke.waving.gif[/img] 
    <h2>My name is Duke. What is yours?</h2> 
    <form method="get">
      <input type="text" name="username"size="25">
      

</p>
      <input type="submit" value="Submit">
      <input type="reset" value="Reset">
    </form>
    <jsp:useBean id="userNameBean" class="hello.UserNameBean" 
        scope="request"/>
    <jsp:setProperty name="userNameBean" property="name" 
        value="${param.username}" />
    <c:if test="${fn:length(userNameBean.name) > 0}" >
      <%@include file="response.jsp" %>
    </c:if>
  </body>
</html>
```
Man kommt auch so an den Parameter: <%= request.getParameter("username")%> Wirf man die SuMa an, da gibts hier genug gute Beitraege zu dem Thema.


----------



## J€ns (21. Mrz 2006)

Dankeschön,
du hast mir sehr geholfen 

Thx

greetz J€ns

*edit*

Eine Frage hätte ich noch, wie übergebe ich einem Button Parameter? Er soll ein neues Fenster öffnen, in diesem soll dann eine festgelegte Http:// addresse geöffnet werden aber variable Parameter übergeben werden. String a, String b, String c usw.



```
<input type="button" name="butSubmit" value="GIS" style="width: 130px; height: 30px" onClick=window.open('"http://.....<%erw_a%><%erw_b%><%erw_c%><%erw_d%>.de"')>
```

Ich weiß es ist ne Mischung aus HTML, Java Script, aber auch JSP.

Ich hoffe ihr könnt mir helfen.

greetz J€ns


----------



## Gumble (21. Mrz 2006)

url?parameter1Name=parameter1Wert&parameter2Name=parameter2Wert ....
Edit: guck mal in die Adressleiste deines Browsers


----------



## J€ns (21. Mrz 2006)

also nochmal =)

Ich habe eien HTML Button in der JSP.

Den Drücke ich, dann soll er ein neues Fenster öffnen(newWindow)

Nun soll eine Intranetseite (naja so was änliches) aufgerufen werden,

der ich Irgendwie Strings übergeben muss,

diese Anwendung die ich dann öffne ist mit Perl geschrieben.

http:// bla bla bla /cgi-bin/cookie.pl?a=Parameter a & b = Parameter b 

 :bahnhof:


----------



## Gumble (21. Mrz 2006)

Ohne whitespaces. Guck dir doch mal (mit entsprechenden tools) dein http-request plain an, dann siehst du ob die Parameter richtig gesetzt wurden. 
Auf der Perlseite gibts auch Funktionen um an das HttpRequest ranzukommen und dessen Parametermap auszulesen - hab aber lange nix mit Perl mehr gemacht. Googel mal und poste Deine Ergebnisse, so dass alle was davon haben


----------



## J€ns (21. Mrz 2006)

:bahnhof: 

ou mann, werde ich hier falsch verstanden?

ich habe einen Button, der ne HTTP Addresse aufrufen soll,
dieser Addresse muss ich aus der JSP Parameter übergeben.

Diese HTTP Adresse führt zu einer Perl Anwendung, die ich aber nicht umschreiben darf!

Muss irgendwie von Java gehen.


----------



## Gumble (21. Mrz 2006)

achso 
<input type="submit" value="Google" onClick=window.open('http://www.google.de/search?q=<%= request.getParameter("suchmich") %>')>

das waer jetzt ne Parameterweiterleitung - anstatt "request.getParameter("suchmich")" kannst Du auch direkt auf deine Beans zugreifen.

Edit: schicker waere es die Expressionlanguage, wie oben erwaehnt, zu verwenden "#{object.attribute} - kanns nur aber grad nicht testen ob dies auch im javascript geht (sollte aber) und was da gequotet werden muss.


----------

