Probleme mit <jsp:include page=""/> und Laufzeit

Status
Nicht offen für weitere Antworten.

badewanne

Mitglied
Hallo,
ich habe noch keine Erfahrung mit JSPs und Servlets und folgendes Problem:

Ich habe eine JSP Seite "index.jsp" die drei andere Teile, "header.jsp", "footer.jsp" sowie ein Servlet "servlet/Show_all"einbindet.
Die Seite "index.jsp" besteht lediglich aus 3 include Befehlen:
Code:
<jsp:include page="modules/header.jsp"/>
<jsp:include page="servlet/Show_all"/>
<jsp:include page="modules/footer.jsp"/>

Das Problem ist dass das Servlet in diesem Fall immer nach dem Footer eingebunden wird, bzw. der Footer in einem <div class="inhalt"> steht der von dem Servlet erzeugt wird. Ich denke es hat etwas mit der Laufzeit zu tuen bzw. damit das ich den include-Befehl und wie ich wo, was, wie einbinden bzw. aufrufen kann noch nicht so ganz verstehe.
Außerdem betreffen die icludes <jsp:include page="modules/header.jsp"/> und <jsp:include page="modules/footer.jsp"/>
ja andere jsp Seiten und mit <jsp:include page="servlet/Show_all"/> wird ja ein Servlet aufgerufen dessen Inhalt erst noch berechnet werden muss...

Kann mir vielleicht einer einen Hinweis geben, wie ich das Ergebnis des Servlet richtig einbinden kann?

Zur Vollständigkeit hier nocheinmal der Code der Seiten die included werden:


modules/header.jsp:
Code:
	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
     "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<title>ilovestreams</title>
	<style type="text/css" media="all">
		@import "love.css";
	</style>
</head>
<body>
 <div id="header">
   <div id="user_status_aussen">
      <div id="user_status_innen">
      <a href="login.jsp">Log In</a> | <a href="signup.jsp">Sign Up</a>
         <div id="db_kontrollfeld">
	   <jsp:useBean id="dbKontrollfeld" class="sulobeans.DBcheck"/>
	   <% 
	      out.println(dbKontrollfeld.getDBTreiber());
              out.println(dbKontrollfeld.getDBConnection());	  	        
	      out.println(dbKontrollfeld.lookforTables()); 
	   %>       
	 </div>
       </div>   
       <div id="logo"><a href="http://myron.mt.haw-hamburg.de/~p23/index_ils2.jsp"><img src="img/ilovestreams_logo.gif"></a></div>
   </div>
 </div>

modules/footer.jsp:
Code:
<div id="footer">
<br><a href="http://myron.mt.haw-hamburg.de/~p23">zum index</a>
</div>
</body>
</html>

servlet/Show_all:
Java:
import java.util.*;
import java.io.*;
import java.sql.*;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.servlet.*;
import javax.servlet.http.*;


public class Show_all extends HttpServlet{

    public void doGet(HttpServletRequest req, HttpServletResponse res)
       throws ServletException, IOException
       {
    	   res.setContentType("text/html");
    	   PrintWriter out = res.getWriter(); 
	   int i = 0;
	   

	   //DB-Treiber
    	   try
    	   {
    		   Class.forName("org.gjt.mm.mysql.Driver");
		
    	   }
    	   catch( ClassNotFoundException e)
    	   {
    		   out.println("servlet/Show_all: MySQL-Treiber nicht gefunden!");
    	   }
    	   
    	   //Ausgabe Tabelle erzeugen
    	   try
    	   {
    		   Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/p23","p23","k57o");
		   Statement st = con.createStatement();

    		   try
    		   {
    		      st.executeQuery("select * from streamlist");
    		   }
    		   catch(Exception e)
    		   {
    		      out.println("Tabelle 'streamlist' nicht gefunden!");
    		   } 
    		   		      
    		   //DB-ABFRAGE
                   ResultSet rs = st.executeQuery("select * from streamlist");    
		   out.println("<div class='inhalt'>"); 						//div-css-klasse 'inhalt'
		   out.println("<table border='0' witdth='100%'>");					//ergebnistablle anlegen
		   out.println("<th>Streamname</th><th>Kategorie</th><th>Genre</th><th>Link</th>");	//kopfzellen benennen
	 	   		 		
                while(rs.next())
    	        {
			   
			   
	        //Ausgabeparameter
    	        String streamname = rs.getString("streamname");
    	        String streamurl  = rs.getString("streamurl");
	        String kategorie  = rs.getString("kategorie");
	        String genre      = rs.getString("genre");

  	        String trclass  = "";
                
	  
	        //zum colorieren der Zeilen abwechselnd mit CSS-Klassen versehen
	        if(i == 0){
	           trclass = "<tr class='tr_hell'>";
      	        }
	           else{
		      trclass = "<tr class='tr_dunkel'>";
		   }

	        out.println(trclass);
			   
	        out.println("<td>"+streamname+"</td>"+"<td>"+kategorie+"</td>"+"<td>"+genre+"</td>"+"<td><a href='"+streamurl+"'><img src='img/audio.gif' height='11px'></a></td>");
	        out.println("</tr>");
 	        
	        if(i == 0){
	           i = 1;
	        }
	        else{ 
		   i = 0;
		}	
    	}

    	           st.close();
    		   con.close();
		   out.println("</div>");					//ende div-css-klasse 'inhalt'
		 
		   
    }
    	   
    catch(Exception e){
       out.println ("MYSQL Exception");
       out.println("<br>");
    }
	   
   }
}
 

HLX

Top Contributor
HTML-Ausgaben im Servlet sind sehr unübersichtlich, was durch die Vermischung mit JSPs noch schlimmer wird.

Du solltest deine Anwendung klar trennen: die Anwendungslogik im Servlet ausführen oder anstoßen, die Darstellung der Ergebnisse in den JSP-Seiten vornehmen.

Dazu ruftst du im Browser statt der 'index.jsp' als erstes das Servlet auf. Im Servlet führst du die nötigen Datenbank-Operationen aus und bindest die dynamischen Ergebnisse zur Ausgabe in der JSP-Seite an Request-Attribute:
Java:
request.setAttribute("name",wert);
Anschließend leitest du über den RequestDispatcher vom Servlet an deine "index.jsp" zur Darstellung der Ergebnisse weiter:
Java:
request.getRequestDispatcher("index.jsp").forward(request, response);

In der JSP-Seite kannst du die Request-Attribute auswerten.
 

badewanne

Mitglied
Danke für die schnelle Antwort, jetzt weiß ich schonmal wo ich hin will :)
Mir ist blos nicht ganz klar wie vom Browser aus als erstes das Servlet aufrufen kann?
 

badewanne

Mitglied
Ok, das wird dann sowas hier sein:
Code:
<!DOCTYPE Listing_4_16 PUBLIC
'-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN'
'http://java.sun.com/dtd/web-app_2_3.dtd'>

<servlet>
<servlet-name>MeinServlet</servlet-name>
<servlet-class>BidServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MeinServlet</servlet-name>
<url-pattern>/Auktion</url-pattern>
</servlet-mapping>

Mein eigentliches Problem scheint aber ein ganz anderes zu sein, nämlich der Umgang mit dem RequestDispatcher bzw. erstmal wie ich Attribute zwischen JSP und Servlet hin und her reichen kann.
Ich mach dazu mal ein neues Thema auf - bzw. schaue erstmal nach was ich im Forum finde... ;)

Vielen Dank!
 
Zuletzt bearbeitet:

mvitz

Top Contributor
Hat HLX ja schon gezeigt, wie du Sachen im Servlet für die JSP vorbereitest.

In der JSP kannst du dann per EL drauf zugreifen. z.B.

Java:
request.setAttribute("name", wert);
-->
Code:
${name}
 

badewanne

Mitglied
irgendwie bekomme ich es nicht hin, bitte noch einmal für dummies...

angenommen in meinem servlet steht folgendes:
Java:
//Att_test.java

import java.util.*;
import java.io.*;
import java.sql.*;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.servlet.*;
import javax.servlet.http.*;


public class Att_test extends HttpServlet{

    public void doGet(HttpServletRequest req, HttpServletResponse res)
       throws ServletException, IOException{
    	   
    	   try{
    		   Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/p23","p23","k57o");
		   Statement st = con.createStatement();   
		   st.close();
    		   con.close();

		   req.setAttribute("name", "egbert");

           }   	   
           catch(Exception e){
           req.setAttribute("mysqlException", "MySQL-Exception");
           }
	   
   }
}
danach kompiliere ich das servlet und verschiebe es in meinen class ordner meines servers damit es unter dem pfad "servlet/Att_test" erreichbar ist.
was muss dann in meiner jsp alles stehen damit ich im browser den namen "egbert" ausgeben kann ?
 

mvitz

Top Contributor
Java:
public class AttTest extends HttpServlet {

  public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
    try{
      Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/p23","p23","k57o");
      Statement st = con.createStatement();   
      st.close();
      con.close();

      req.setAttribute("name", "egbert");
    } catch(Exception e) {
      req.setAttribute("mysqlException", "MySQL-Exception");
    }
      req.getRequestDispatcher("test.jsp").forward(req, res);
  }
}
HTML:
<html><body><p>
  ${name}<br />
  ${mysqlException}
</p></body></html>

Sollte so gehen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
pkm Probleme mit einem AJAX-Call in einem dynamischen Webprojekt Web Tier 15
M JSF Probleme bei Navigation mit Verzeichnisswechsel Web Tier 2
W JSF Probleme mit Data Table Web Tier 8
W JSF Probleme mit Zugriff zur Managed Bean Web Tier 11
G Probleme mit Java + Tomcat | Cannot switch on a value of type String for source level below 1.7 Web Tier 8
F JSF Probleme mit OverlayPanel Web Tier 0
H Frameset durch Tabelle ersetzten - Probleme mit jsp:include Web Tier 3
xehpuk JSF URL-Encoding-Probleme bei <h:link> (Mojarra) Web Tier 4
M ejb @Remote macht probleme Web Tier 10
S JSF SelectOneMenu - Probleme mit AJAX Web Tier 6
W Probleme mit Expression language ? Web Tier 13
P JSF Datenbank Probleme (Limit, Wiederholung) Web Tier 8
J JSF JavaScript Probleme zwischen Tomahawk und Tiles!? Web Tier 2
B Probleme mit h:selectOneRadio Web Tier 2
T DWR - Probleme mit Konfiguration Web Tier 13
W JSF MyFaces Tomahawk Probleme Web Tier 4
G Probleme mit EclipseLink und Java.util.Date Web Tier 3
S JSF Probleme beim redirect im ExceptionHandler Web Tier 2
P JSF 1.2 Navigation probleme Web Tier 2
D Probleme beim installieren von WebBeans Web Tier 2
D Probleme mit Tomcat Web Tier 3
M Tomcat 6 Umlaut Probleme Web Tier 2
D Seam Example Probleme Web Tier 2
C Probleme mit JSPs in Unterverzeichnissen Web Tier 4
A [PrimeFaces] dataTable mit paginator Probleme Web Tier 2
H Probleme beim Aufrufen von Java- oder Servlet-Methoden aus Javascript Web Tier 2
0 JSF: css einbinden - Probleme Web Tier 2
M iframe probleme Web Tier 2
K [GWT] Probleme beim asynchronen Methodenaufruf mit GWT-RPC Web Tier 8
B Probleme mit RichFaces Web Tier 2
O struts2 - Probleme mit parametrisierten URLs Web Tier 5
E Probleme mit GWT & MySQL Web Tier 3
G Probleme mit Ajax Login (jsp) Web Tier 5
S Tomcat / Eclipse Probleme Web Tier 2
P Zurück-Button des Browsers macht Probleme Web Tier 9
O Struts2: Probleme mit Links aus Packages raus Web Tier 9
A JSF+Glassfish: Probleme mit Managed Bean Web Tier 2
S Probleme mit den Nav_rules und HTML code Web Tier 2
D Probleme mit ServletRequest Web Tier 14
G Probleme mit Tomcat Web Tier 14
E RichFaces 3.2.1 Probleme Web Tier 4
W JSTL macht Probleme Web Tier 6
W JavaBeans class="" macht Probleme Web Tier 2
A Time-Out Probleme Web Tier 21
B Probleme mit Marquee Tag Web Tier 3
N RequestDispatcher: include-Aufruf einer jsp scheitert nach mehreren forward-Aufrufen Web Tier 1
A JSF Verständnisproblem mit den Tags <ui:include> und <ui:define> Web Tier 1
J JSF Richfaces Tabs, dynamisches include funktioniert nicht Web Tier 4

Ähnliche Java Themen

Neue Themen


Oben