JSP mit java Bean

Status
Nicht offen für weitere Antworten.

chipmount

Aktives Mitglied
hi,
ich möchte folgendes tun:
JSP die nach eingabe einer BestNR uf einer html seite dazugehörige positionen(name. preis etc) auf dem browser anzeigt.
dazu habe ich eine Java Bean angelegt(JDBC-anbindung):

Code:
import java.sql.*; 

public class Bean { 
   private String inout; 
   public Bean(){} 
   public String getinout(){ return inout;} 
    
public  void setinout (String in) 
  { 
    Connection c = null; 
    PreparedStatement p = null; 
    
    
  String sql="SELECT bestnr,bestelldatum,bestsum FROM Bestellung WHERE name =?"; 
    
  String answer="<table style= \"width: 450px\">"+ 
     "<tr><td>bestnr</td><td>bestelldatumr</td><td>bestsum</td></tr>"; 
    try 
    { 
      Class.forName ("oracle.jdbc.driver.OracleDriver"); 
      c = DriverManager.getConnection("jdbc:oracle:thin:@alwina:1521:ALWINA", "scott", "tiger"); 
      PreparedStatement ps = c.prepareStatement(sql); 
        
         Statement s = c.createStatement(); 
         ps.setString(1, in); 
      ResultSet rs = ps.executeQuery(); 
            
      while (rs.next()) 
      { 
         answer = answer +"<tr>"+ 
         "<td>" + rs.getString("bestnr") +"</td>"+ 
         "<td>" + rs.getString("bestelldatum") +"</td>"+ 
         "<td>" + rs.getString("bestsum") +"</td>"+ 
         "</tr>"; 
               
         }//end while 
         c.close(); 
         answer = answer + "</table>"; 
    } 
    catch (Exception e) 
    { 
      e.printStackTrace(); 
      answer = e.toString(); 
    } 
     inout=answer; 
  } 
}

diese klasse hab ich unter Tomcat5/webapps/root/web-inf/classes gespeichert

meine html seite sieht so aus:
Code:
html>
<head>
<title>Servlet-Aufruf</title>
</head>

<body>



<FORM ACTION="http://localhost:8081/jsp.jsp" METHOD=GET >
<INPUT name=inp>
<INPUT TYPE=SUBMIT VALUE="Suchen">

</FORM>
</P>
</body>
</html>

meine frage wie füttere ich meine jsp.jsp mit diesen daten und wie binde ich meine bean ein??

danke
 

foobar

Top Contributor
Du brauchst keine HtmlSeite, denn deine Jsp ersetzt die statische HtmlSeite. Warum willst du umbedingt aus der JDBC-Klasse eine Java Bean machen?
 

foobar

Top Contributor
Dann mußt du aber erstmal folgende Fehler bereinigen:
- deine Bean muß serializable implementieren
- der Getter und der Setter entsprechen nicht der Namenskonvention
 

chipmount

Aktives Mitglied
wo muss denn die bean.class hin damit die ..jsp die findet muss ich das der ..jsp mitteilen wo die classe liegt???
kennt jemand ein gutes tutorial???
 

chipmount

Aktives Mitglied
also das java bean mit jsp geht jetzt
nur habe ich ein kkleines problem

wie übergebe ich meine variable(bestnr) von einer html seite zur ..jsp

meine html
Code:
<html>
<head>
<title>Servlet-Aufruf</title>
</head>

<body>



<FORM ACTION="http://localhost:8081/dbjsp.jsp" METHOD=GET >
<INPUT inout=inout>
<INPUT TYPE=SUBMIT VALUE="Suchen">

</FORM>
</P>
</body>
</html>


meine ...jsp:

Code:
<html>
<head>
<title> Bestellung jsp</title>
</head>
<jsp:useBean id="Bean" scope="page" class="jsp.Bean"/>
<% String param = request.getParameter("param");
	int inout = (param==null) ? 0: Integer.parseInt(param);
%>
<jsp:setProperty name="Bean" property="inout" value="<%=inout%>"/>
<body>
 
Ergebniss:<jsp:getProperty name="Bean" property="bean"/>
</body>
</html>

und wie komme ich wieder ins eingabe menü "SUCHEN"???
 

foobar

Top Contributor
Das ergibt alles überhaupt keinen Sinn, was du das machst.

Code:
<INPUT inout=inout>
Es gibt kein Attribut mit dem Namen inout.

Die Htmlseite sollte ungefähr so aussehen:
Code:
<html>
<head>
<title>Servlet-Aufruf</title>
</head>
<body>



<FORM ACTION="http://localhost:8081/dbjsp.jsp" METHOD="GET" >
<INPUT type="text" name="inout" value="23">
<INPUT TYPE="SUBMIT" VALUE="Suchen">
</FORM>
</P>
</body>
</html>

Guck dir mal diese Seite an http://www.jsp-develop.de/, da findest du viele Informationen zum Thema Jsp und Servlets.
 

foobar

Top Contributor
aber wie komme ich von der ...jsp wieder auf die html(anfang) seite drauf
Ich hab es in einem meiner vorherigen Posts schon geschrieben, ersetz die Htmlseite durch eine JSP, damit hast du viel mehr Möglichkeiten.
 

chipmount

Aktives Mitglied
dass kann ich dir leider auch nicht sagen :?: :?:

hab jetz diesen gemacht (ist das unsauber??)

Code:
<FORM ACTION="http://localhost:8081/myjsp.html" METHOD="GET" > 

<INPUT TYPE="SUBMIT" VALUE="Zurück">
 

chipmount

Aktives Mitglied
danke

kannst du mir noch einen tipp geben wie ich aus diesem beispiel eine eigene Customer Tag Library(die einen gezielten zugriff auf die DB Tabelle ermöglicht) erstelle
 

foobar

Top Contributor
kannst du mir noch einen tipp geben wie ich aus diesem beispiel eine eigene Customer Tag Library(die einen gezielten zugriff auf die DB Tabelle ermöglicht) erstelle
Meinst du einen Universal-Tag mit dem man DB-Abfragen absetzen kann?
 

foobar

Top Contributor
Code:
package forum;

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


public class DBUtil 
 {
	private Connection con;
	private DBConnectionPool pool;
	private Statement stmt;
	
	public DBUtil()
	{
		this.pool = DBConnectionPool.getConnectionPool();
		this.con = this.pool.getConnection();
	}
	
	public ResultSet fireSql(String sql_stmt)
	{
		try 
		{
			this.stmt = this.con.createStatement();
			if (stmt.execute(sql_stmt))
			{
				return stmt.getResultSet();
			}
		}
		catch (SQLException e) 
		{
			e.printStackTrace();
		}
		catch (NullPointerException e)
		{
			try 
			{
				if (this.con != null)
				{
					this.stmt = this.con.createStatement();
					if (stmt.execute(sql_stmt))
					{
						return stmt.getResultSet();
					}
				}
			}
			catch (SQLException e1) 
			{
				e1.printStackTrace();
			}
		}
		return null;
	}
	
	public String fireSqlGetSingleValue(String sql)
	{
		ResultSet rs  =  this.fireSql(sql);
		try
		{
			while (rs.next())
			{
				return rs.getString(1);
			}
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		return null;
	}
	
	public void closeConnection()
	{
		this.pool.returnConnection(this.con);
	}	
}

Code:
package forum;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;
import java.util.Iterator;

public class DBConnectionPool
{
	private static DBConnectionPool pool;
	private HashMap connections;
	private final int MAX_CONNECTIONS = 30;
	private final int INCREMENT 				  = 1;
	private final String JDBC = "jdbc:mysql://127.0.0.1:3306/forum";
	private DBConnectionPool()
	{
			this.connections = new HashMap();
			this.fillPool(MAX_CONNECTIONS);
	}

	private Connection createConnection()
	{
		Connection con = null;
		try 
		{
				Class.forName("org.gjt.mm.mysql.Driver");
				con = DriverManager.getConnection(JDBC,Config.DB_USERNAME,Config.DB_PASSWD);
		}
		catch (Exception e) 
		{
				e.printStackTrace();
		}
		return con; 
	}
	
	private void fillPool(int size)
	{
		for (int i =0; i <= size;i++)
		{
			this.connections.put(this.createConnection(), Boolean.FALSE);
		}
	}
	
	public synchronized Connection getConnection()
	{
		Iterator it = this.connections.keySet().iterator();
		while (it.hasNext())
		{
			Connection con = (Connection)it.next();
			if ((Boolean)this.connections.get(con) == Boolean.FALSE)
			{
				try
				{
					con.setAutoCommit(true);
				}
				catch (Exception e)
				{
					con = this.createConnection();
				}
				this.connections.put(con,Boolean.TRUE);
				return con;
			}
		}
		this.fillPool(INCREMENT);
		return this.getConnection();
	}

	public void returnConnection(Connection returncon)
	{
		Iterator it = this.connections.keySet().iterator();
		while (it.hasNext())
		{
			Connection oldcon = (Connection)it.next();
			if (oldcon == returncon)
			{
				this.connections.put(oldcon,Boolean.FALSE);
				break;
			}
		}
	}

	public static DBConnectionPool getConnectionPool()
	{
		if (pool == null) pool = new DBConnectionPool();
		return pool;
	}
}

Code:
package forum.tags.db;

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;

import forum.DBUtil;



public class DBOutputTag extends BodyTagSupport 
{
	String ident, name;
	JspWriter out;
	ResultSet rs;
	private DBUtil dbu;
	public String getIdent() 
	{
		return ident;
	}

	public String getName() 
	{
		return name;
	}

	public JspWriter getOut() 
	{
		return out;
	}
	
	public void setIdent(String string) 
	{
		ident = string;
	}

	public void setName(String string) 
	{
		name = string;
	}

	public void setOut(JspWriter writer) 
	{
		out = writer;
	}

	public int doStartTag() throws JspException
	{
		this.rs   = (ResultSet) pageContext.findAttribute(this.name);
		this.dbu = (DBUtil) pageContext.findAttribute("dbutil");
		this.pageContext.setAttribute(this.ident,rs);
		return EVAL_BODY_AGAIN;		
	}
	
	
	public int doAfterBody() throws JspException
	{
		try 
		{
			BodyContent myBody = getBodyContent();
			myBody.writeOut(getPreviousOut());
			myBody.clearBody();
			return rs.next() ? EVAL_BODY_AGAIN : SKIP_BODY;
		}
		catch (IOException e) 
		{
			e.printStackTrace();
		}
		catch (SQLException e) 
		{
			e.printStackTrace();
		}
		
		return 0;
	}

	public int doEndTag() throws JspException
	{
		this.dbu.closeConnection();
		return EVAL_PAGE;
	}
	
	public ResultSet getRs() {
		return rs;
	}

	public void setRs(ResultSet set) {
		rs = set;
	}

}

Code:
package forum.tags.db;

import javax.servlet.jsp.tagext.TagData;
import javax.servlet.jsp.tagext.TagExtraInfo;
import javax.servlet.jsp.tagext.VariableInfo;

public class DBOutputTei extends TagExtraInfo 
{
	public VariableInfo[] getVariableInfo(TagData tag) 
	{
		return new VariableInfo[]{new VariableInfo(tag.getAttributeString("ident"), 
													"java.sql.ResultSet", 
													true, 
													VariableInfo.NESTED)};
	}

}

Code:
package forum.tags.db;
import java.sql.ResultSet;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;

import forum.DBUtil;


public class DBQueryTag extends BodyTagSupport
{
	private String indent;
	private JspWriter out;
	private DBUtil dbu;
	
	
	public void setIdent(String string) 
	{
		indent = string;
	}


	public int doStartTag() throws JspException
	{
		this.dbu = new DBUtil();
		return EVAL_BODY_BUFFERED;
	}
	
	public int doAfterBody() throws JspException
	{
		String sql = getBodyContent().getString();
		getBodyContent().clearBody();
		ResultSet rs = this.dbu.fireSql(sql);
		pageContext.setAttribute(this.indent, rs);	
		pageContext.setAttribute("dbutil", this.dbu);		
		return SKIP_BODY;
	}


	public int doEndTag() throws JspException
	{	
		return EVAL_PAGE;
	}
}

Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" 
           "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
	<tlib-version>1.0</tlib-version>
	<jsp-version>1.4</jsp-version>
	<short-name>DBAccess</short-name>
	<tag>
		<name>query</name>
		<tag-class>forum.tags.db.DBQueryTag</tag-class>
		<attribute>
			<name>ident</name>
			<required>true</required>
		</attribute>
	</tag>
	<tag>
		<name>output</name>
		<tag-class>forum.tags.db.DBOutputTag</tag-class>
		<tei-class>forum.tags.db.DBOutputTei</tei-class>
		<attribute>
			<name>ident</name>
			<required>true</required>
		</attribute>
		<attribute>
			<name>name</name>
			<required>true</required>
		</attribute>
	</tag>
</taglib>

Verwendung in der JSP:
Code:
<%@ taglib uri="taglibs/dbTag.tld" prefix="db"%>
....

<db:query ident="all">
Select * from table
</db:query>

....

<db:output name="all" ident="row">
<% while(row.next()){%>
<%= row.getString(1) %>
<% } %>
</db:output>

BTW Ich kann dir von der Verwendung aber nur abraten. Es gibt weitaus bessere Möglichkeiten um von einer JSP auf einen DB zuzugreifen.
 

bronks

Top Contributor
foobar hat gesagt.:
... BTW Ich kann dir von der Verwendung aber nur abraten. Es gibt weitaus bessere Möglichkeiten um von einer JSP auf einen DB zuzugreifen.
Es ist zwar ein bissl Text, aber erscheint mir eigentlich alles einleuchtend, obwohl da einige Sachen verwendet werden, die ich noch nicht kenne. Ist es dieses Beispiel wert als ernstzunehmende Grundlage studiert zu werden oder ist das nur so zusammengeschnitten, damit der Chipmount seinem Ziel auf seinem eingeschlagenen Weg näher kommt?
 

foobar

Top Contributor
Ist es dieses Beispiel wert als ernstzunehmende Grundlage studiert zu werden oder ist das nur so zusammengeschnitten, damit der Chipmount seinem Ziel auf seinem eingeschlagenen Weg näher kommt?
Es zeigt auf jeden Fall was man mit Customtags machen kann z.b. TeiClass, iterieren etc. , aber für den produktiven Einsatz ist es wohl weniger geeignet. Denn es ist einfach schlechter Stil eine JSP mit Sql zu vermischen, da kann man ja gleich PHP und Konsorten verwenden.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B [EJB] javax.inject.DefinitionException: bean not a Java type Allgemeines EE 5
H JSP, Session und Java-Bean Allgemeines EE 4
K JAVA BEAN DB Connection Prob Allgemeines EE 5
A Kommunikation zwischen Java Servlet und Bean Allgemeines EE 1
T Java ServerFaces Anwendung mit XHTML & CSS Allgemeines EE 1
E modulare Java-Anwendung verteilen (Camel) Allgemeines EE 0
B Java Mail und idle() mit zig Emailadressen? Allgemeines EE 59
H JWebUnit Fehler: java.lang.NoClassDefFoundError: org/apache/regexp/RESyntaxException Allgemeines EE 24
B Java mail API - möchte nur eine gewisse Anzahl von Emails in die Liste holen Allgemeines EE 3
M Rest mit Java 11 Allgemeines EE 6
M java.lang.SecurityException: class "javax.persistence.TupleElement"'s signer information does not match ... Allgemeines EE 1
F Java Programmierer Allgemeines EE 13
R Wie viel DevOps sollte ein Java-Entwickler kennen, der sich in Microservices spezialisiert? Allgemeines EE 5
Dimax JSP Probleme mit Java in JSP Allgemeines EE 21
Dimax JSP Auf button click java methode ausführen.Ist das möglich? Allgemeines EE 6
B Logging (log4j) in JAVA EE application - WildFly Allgemeines EE 15
A Java EE (am Cleint) und websocket Allgemeines EE 8
J Ich kann Java JDK nicht downloaden Allgemeines EE 6
R Aufbau zum Java EE Entwickler - Schulungen Allgemeines EE 0
G Java EE Hosting ? Allgemeines EE 6
P Java EE Videotutorials Allgemeines EE 1
R Java Enterpise entwickeln mit Virtualbox Allgemeines EE 6
A OutOfMemoryError: Java heap space Allgemeines EE 7
I Start Word from Java Allgemeines EE 1
T Java Jersey Interceptor Allgemeines EE 7
R Post Variable in Java Allgemeines EE 8
L JSP Fehlermeldung bei Verwendung von Java-Expression-Language Allgemeines EE 8
K Wie habt ihr Java EE gelernt? Allgemeines EE 11
hjpsoft JSF Lösung einer Aufgabe im "Workshop Java EE7" Allgemeines EE 5
S Welcher Java EE Applikationserver für RESTful Webservice? Allgemeines EE 2
T Java Login Allgemeines EE 1
L Certified Master Java Enterprise Architect Java EE Allgemeines EE 3
R Java EE 6, eclipse, maven, jsf, hibernate, mysql Allgemeines EE 8
D Einfaches Java Projekt funktioniert nicht Allgemeines EE 3
W Authentifizierung und Sessions in Java EE7 Allgemeines EE 0
OnDemand Task in Java ee Allgemeines EE 7
OnDemand JSF - java File Verständnisfrage Allgemeines EE 5
OnDemand Deployen ohne .java Files Allgemeines EE 0
E Wie kann ich über einen Suchfeld in Java Server Pages nach Datenbankinhalten suchen? Allgemeines EE 11
V Java EE 7 CDI, annotations und beans Allgemeines EE 1
G Bachelorthesis: Java oder PHP (CMS) Allgemeines EE 7
X Konsolenausgabe einer java klasse in eine jsp umleiten Allgemeines EE 7
S Aufruf eines EJBs aus einer nativen Java-Applikation Allgemeines EE 1
T Fertiges html javascrip css template in java EE application Allgemeines EE 0
F Eclipse/Java EE Debug-Problem Allgemeines EE 1
D Java Projekt goes Webservice Allgemeines EE 6
L Button Handling in JSP mit Java-Backend Allgemeines EE 2
Shams Frage zu Dowload von JAVA SDK Allgemeines EE 5
T Größeres Java EE Beispiel Projekt Allgemeines EE 4
N JavaScript schickt und Java empfängt? Allgemeines EE 4
O Java EE in Netbeans + allgemeine Fragen Allgemeines EE 5
H java selenium spezis? Allgemeines EE 4
H java selenium test connection refused Allgemeines EE 6
M Java EE-Technologie-Lern-Wahl Allgemeines EE 5
J Java Dependencies auslesen Allgemeines EE 19
2 installation java EE Allgemeines EE 12
J PHP oder Java? Allgemeines EE 12
L Webseiten Formulare über Java Oberfläche ausfüllen? Allgemeines EE 2
T Java CMS Entwicklung : Welcher Weg ist besser? Allgemeines EE 9
F Gesucht: Gratis Server für Java Entwickler Allgemeines EE 4
J Einstieg in Java EE Allgemeines EE 5
aze Eclipse Java EE Web Project:Wo liegen die Servlets ? Allgemeines EE 4
S java Entities Problem Allgemeines EE 19
D Grundüberlegung Java Webprojekt Allgemeines EE 10
F Einstieg in Java EE - Beispielanwendungen Allgemeines EE 52
R JAVA EE - eigene Klassen aus EJB übernehmen Allgemeines EE 2
T "normales" Java Programm auf einen Server laufen lassen Allgemeines EE 3
M EE6+EJB+JavaLib: Error in annotation processing: java.lang.NoClassDefFoundError Allgemeines EE 4
G java ResourceLocator Allgemeines EE 12
M Was ist mit Java möglich? Allgemeines EE 13
T Komponenten zusammenhänge Java EE Allgemeines EE 7
A Java CMS Allgemeines EE 2
P Architektur Java EE <-> HTML5 Allgemeines EE 3
A Java Tomcat findet Website nicht Allgemeines EE 8
F Java EE Server nutzung kostenlos an Schule? (zB. mit Glassfish) Allgemeines EE 6
B Java EE, kickstart my heart Allgemeines EE 10
P Frage zu Java EE Design Patterns Allgemeines EE 3
G EJB und Java EE - No Persistence provider Allgemeines EE 5
zilti Java EE Hosting, worauf muss ich achten? Allgemeines EE 5
M Java EE6: Wie Login-Vorgang durchführen? Allgemeines EE 2
MQue Java Web- Application -> MVC Allgemeines EE 4
G Java <-> Flex Allgemeines EE 2
Spin Ant - Java Beans umsetzen Allgemeines EE 4
V "null" durch NICHTS ersetzen jsp und java beans Allgemeines EE 3
M Serialisierung und Klonen in Java Allgemeines EE 5
W JAVA Optionen auslesen Allgemeines EE 3
D Spring 3 vs. Java EE 6 Allgemeines EE 33
MQue CMS in Verbindung mit Java Allgemeines EE 16
X3TitanCore Java Servertechnologie Allgemeines EE 7
C WebStart Fehler nach update auf Java 1.6 Allgemeines EE 2
R Variablen statt Java-Methoden in EL's Allgemeines EE 4
T Suche Buch für: Large Scale Web-Apps | Clustering | Scaling in Java ? Allgemeines EE 4
G Vergleich zwischen Java Spirng und Ruby on Rails Allgemeines EE 9
K EJB Enterprise Java Beans Allgemeines EE 32
F Ich will mit Java Internetseiten bauen, aber wo hosten? Allgemeines EE 14
J OOP Java Array Problem Allgemeines EE 2
T Problem mit Java Transaction API Allgemeines EE 2
D Java EE vs. Spring/Hibernate Allgemeines EE 26
R Java EE Anfänger will mehr. Allgemeines EE 7
A Fragen zum Einstieg in Java EE Allgemeines EE 11

Ähnliche Java Themen

Neue Themen


Oben