/*
* Java Servlet som visar vissa poster från en databas i en HTML-tabell.
* Björn Persson, EkI, MdH - 2001-06-21.
* bjorn.persson@mdh.se
*
* Skapa en ODBC-källa med namnet skivor (eller ändra namnet i variabeln url).
*/
//Importera paket för...
import javax.servlet.*; //servlet
import javax.servlet.http.*; //servlet
import java.io.*; //I/O
import java.sql.*; //databaskoppling
public class DBListParameter extends HttpServlet
{
//Metod som anropas när servlet begärs med metoden HTTP-GET
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException
{
//*******************************************************************
//Deklarera variabler
int i = 1; //Räknare för att ändra stilmall för varannan rad i tabell
String strClass = null; //Sträng att placera stilmalls namn i
String strArtist = null;
String sql = null;
strArtist = request.getParameter("Artist");
//Skapa URL för databaskoppling (ODBC-källa skivor)
String url = "jdbc:odbc:skivor";
//Hämta objekt att skriva till för det resulterande HTML-dokumentet
PrintWriter out = response.getWriter();
//Tala om för webbserver vad som kommer att skickas (d.v.s. HTML-kod)
response.setContentType("text/html");
//*******************************************************************
//Starta HTML-dokument genom att skriva ut HTML-kod
out.println("");
out.println("
");
out.println("Resultatet från servlet DBList");
out.println(" ");
out.println("");
out.println("");
out.println("Resultatet från servlet DBListParameter
");
out.println("Artist och dess album i databasen
");
//*******************************************************************
//Starta HTML-tabell och skriv ut rubriker för kolumner i tabell
out.println("");
out.println(" ");
out.println(" Artist/grupps namn | ");
out.println(" Titel på album | ");
out.println(" År | ");
out.println(" Media | ");
out.println("
");
//*******************************************************************
//Databasobjekt kan generera fel (exceptions) och måste därför finnas
// inom ett try-catch-block.
try
{
//Ladda klass med JDBC-drivrutn
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//Öppna förbindelse till databas
Connection con = DriverManager.getConnection(url);
ResultSet rs = null;
//Om ingen artist angavs hämta alla album...
if((strArtist == null) || (strArtist.length() == 0))
{
//Koden nedan är samma som för klassen DBList
//Skapa SQL-fråga
sql = "SELECT * FROM tblAlbum ORDER BY Artist, År, Media, Titel";
//Skapa Statement-objekt
Statement st = con.createStatement();
//Utför fråga och placera resultat i variabeln rs
rs = st.executeQuery(sql);
}
else //... eller hämta endast album för artist
{
//Koden nedan är den nya koden
//Skapa Statement-objekt och ange fråga i databas att köra
CallableStatement cst=
con.prepareCall("{call qryAlbumForArtist(?)}");
//Ange värde på parameter (d.v.s. frågetecknet ovan)
cst.setString(1, strArtist);
//Utför fråga och placera resultatet i variabeln rs
rs = cst.executeQuery();
}
//***************************************************************
//Loopa över posterna i frågeresultatet
while(rs.next())
{
//Om räknare jämne, använd stilmall med gul bakgrund
if((i % 2) == 0)
strClass = "normalgul";
else
strClass = "normal";
out.println(" "); //Påbörja rad i HTML-tabell
//Kolumn 1 - artists namn
out.print(" ");
out.print(rs.getString("Artist"));
out.println(" | ");
//Kolumn 2 - titeln för album
out.print(" ");
out.print(rs.getString("Titel"));
out.println(" | ");
//Kolumn 3 - år som album gavs ut
out.print(" ");
out.print(rs.getString("År"));
out.println(" | ");
//Kolumn 4 - media som album finns på
out.print(" ");
out.print(rs.getString("Media"));
out.println(" | ");
out.println("
"); //Avsluta rad i HTML-tabell
i++;
} //while
//***************************************************************
//Stäng frågeresultat och förbindelse
rs.close();
con.close();
} //try
catch(Exception e) //Hantera eventuella fel i databaskoppling
{
System.err.println(e);
out.println("Det uppstod ett fel...
");
out.println("" + e.getMessage() + "
");
} //catch
//*******************************************************************
//Avsluta HTML-tabell och -dokument
out.println("
");
out.println("
");
out.println("Antal skivor totalt: " + (i-1) + "
");
out.println("");
out.println("");
} // doGet()
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException
{
doGet(request, response);
} // doPost()
} //class DBListParameter