Avatar billede snowflake7 Nybegynder
08. juli 2002 - 20:14 Der er 11 kommentarer og
2 løsninger

hvordan får jeg denne servlet til at bruge min database?

jeg har en paradox-database.
jeg har lavet en connectionpool som jeg gerne vil have servletten til at bruge. jeg har en LogIn.html fil og Login´Servlet. LogInServletten åbner forbindelsen til databasen og validere brugerenavn og password for brugeren.






package usingjsp.cart;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class AddToShoppingCartServlet extends HttpServlet
{
    public void service(HttpServletRequest request,
        HttpServletResponse response)
        throws IOException, ServletException
    {

// First get the item values from the request
        String productCode = request.getParameter("productCode");
        String description = request.getParameter("description");
        int quantity = Integer.parseInt(
            request.getParameter("quantity"));
        double price = Double.parseDouble(
            request.getParameter("price"));

// Now create an item to add to the cart
        Item item = new Item(productCode, description, price, quantity);

        HttpSession session = request.getSession();

// Get the cart
        ShoppingCart cart = (ShoppingCart) session.
            getAttribute("ShoppingCart");
   
// If there is no shopping cart, create one
        if (cart == null)
        {
            cart = new ShoppingCart();

            session.setAttribute("ShoppingCart", cart);
        }

        cart.addItem(item);

// Now display the cart and allow the user to check out or order more items
        response.sendRedirect(response.encodeRedirectURL(
            "ShowCartAfterAdd.jsp"));
    }
}
Avatar billede r9 Nybegynder
10. juli 2002 - 19:47 #1
Hvis din klasse som håndterer databasen hedder 'DbHandler', så skal du jo bare have en metode på den som modtager et ShoppingCart objekt.

Noget ligende:


import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*


public class AddToShoppingCartServlet extends HttpServlet
{
   
    public void service(HttpServletRequest request,
        HttpServletResponse response)
        throws IOException, ServletException
    {

// First get the item values from the request
     
        String productCode = request.getParameter("productCode");
        String description = request.getParameter("description");
        int quantity = Integer.parseInt(
            request.getParameter("quantity"));
        double price = Double.parseDouble(
            request.getParameter("price"));

// Now create an item to add to the cart
        Item item = new Item(productCode, description, price, quantity);

        HttpSession session = request.getSession();

// Get the cart
        ShoppingCart cart = (ShoppingCart) session.
            getAttribute("ShoppingCart");

// If there is no shopping cart, create one
        if (cart == null)
        {
            cart = new ShoppingCart();

            session.setAttribute("ShoppingCart", cart);
        }

        cart.addItem(item);
       
        gemIdb(cart);

// Now display the cart and allow the user to check out or order more items
        response.sendRedirect(response.encodeRedirectURL(
            "ShowCartAfterAdd.jsp"));
    }
   
   
   
        public void gemIdb (ShoppingCart s) {
          DbHandler db = new DbHandler();
          db.doQuery(cart);
        }
                     
 
}


doQuery metoden skal så trække data ud fra ShoppingCart objektet og lave sql-strenge.
Avatar billede snowflake7 Nybegynder
11. juli 2002 - 16:58 #2
package usingjsp.Butik;


import java.sql.*;
import java.util.*;

/** A base class for objects that map to database tables */

public abstract class DBHandler
{

    public Vector getAll(Connection conn)
        throws SQLException
    {
        return getAll(conn, null, null);
    }

/*henter alle objekter der macher en bestemt Where**/
    public Vector getAll(Connection conn, String whereClause)
        throws SQLException
    {
        return getAll(conn, whereClause, null);
    }

/** Henter alle objekterne i en tabel,som matcher en specifik where
    og gør det muligt for kunden at specificere yderligere tabeler, der bliver bliver brugt i
    where'en  */
    public Vector getAll(Connection conn, String whereClause,
        String additionalTables)
        throws SQLException
    {
        Statement s = null;

        try
        {
            s = conn.createStatement();

            Vector v = new Vector();

// byg  query'en.Den basale query bliver "select <fields> from table"
            String query = "select "+getFieldList()+" from "+getTableName();

// Tilføj yderligere tabeller, hvis der er brug for det
            if (additionalTables != null)
            {
                query = query + "," + additionalTables;
            }

// Tilføj where hvis der er brug for det
            if (whereClause != null)
            {
                query = query + " where "+whereClause;
            }

// udfør query
            ResultSet results = s.executeQuery(query);

// lav en vector af resultaterne
            while (results.next())
            {
                v.addElement(createInstance(results));
            }

            return v;
        }
        finally
        {
            if (s != null)
            {
                try { s.close(); } catch (Exception ignore) {}
            }
        }
    }

/** Udfører en vilkårlig query string som skulle returnerer alle
*  felterne i tabellen ligesom de andre querier. */
    public Vector executeQuery(Connection conn, String query)
        throws SQLException
    {
        Statement s = null;

        try
        {
            s = conn.createStatement();

            Vector v = new Vector();

// udfør query
            ResultSet results = s.executeQuery(query);

// lav en vector af resultaterne
            while (results.next())
            {
                v.addElement(createInstance(results));
            }

            return v;
        }
        finally
        {
            if (s != null)
            {
                try { s.close(); } catch (Exception ignore) {}
            }
        }
    }

/** Indsæt et objekt i databasen */
    public int insert(Connection conn)
        throws SQLException
    {
        PreparedStatement s = null;

        try
        {
// Få dette objekt til at udføre dets eget insert funktion
            s = conn.prepareStatement(getInsertStatement());

// Sæt dataværdier ind i insert funktionen
            prepareInsertStatement(s);

// Udfør insert'en
            return s.executeUpdate();
        }
        finally
        {
            if (s != null)
            {
                try { s.close(); } catch (Exception ignore) {}
            }
        }
    }

// Returnerer en liste af felter i tabellen (bruges til select)
    public abstract String getFieldList();

/** Returnerer en liste af felter i tabellen og i mens specificeres en
*  tabel til feltnavnene,tabellen får et alias.feltnavne tilbage til det
*  originale navn. For eksempel, kunden vil måske gerne spørge fra tabel A og
*  tabel B, hver indeholde et felt F. hvis kunden skriver "select F from A,B ..." får
*  kunden måske en fejl fordi F er flertydig. Kunden bliver nødt til at skrive
*  "select A.F as F from A,B ...". Denne  rutine tager den originale felt-
*  liste og laver en liste af sådanne aliaser.
*/
    public String getFieldList(String tableName)
    {
// Lav en tokenizer til at analysere i gennem den originale liste
        StringTokenizer fieldList = new StringTokenizer(
            getFieldList(), ",");

// lav string bufferen til at holde resulterende liste
        StringBuffer newList = new StringBuffer();
        boolean first = true;

        while (fieldList.hasMoreTokens())
        {
            String field = fieldList.nextToken();

            if (!first) newList.append(',');
            first = false;
            newList.append(tableName);
            newList.append('.');
            newList.append(field);
            newList.append(" as ");
            newList.append(field);
        }

        return newList.toString();
    }

/** Laver en insert funktion der bliver brugt i en PreparedStatement */
    public abstract String getInsertStatement();

/** Gemmer dette objekt's data i  PreparedStatement'en returneret af
*  prepareInsertStatement. */
    public abstract void prepareInsertStatement(PreparedStatement s)
        throws SQLException;

/** opdaterer database rækken,som indeholder dette objekt */
    public int update(Connection conn)
        throws SQLException
    {
        PreparedStatement s = null;

        try
        {
            s = conn.prepareStatement(getUpdateStatement());

            prepareUpdateStatement(s);

            return s.executeUpdate();
        }
        finally
        {
            if (s != null)
            {
                try { s.close(); } catch (Exception ignore) {}
            }
        }
    }

    public abstract String getUpdateStatement();
    public abstract void prepareUpdateStatement(PreparedStatement s)
        throws SQLException;

/** Fjerner dette objekt fra  databasen */
    public int delete(Connection conn)
        throws SQLException
    {
        PreparedStatement s = null;

        try
        {
            s = conn.prepareStatement(getDeleteStatement());

            prepareDeleteStatement(s);

            return s.executeUpdate();
        }
        finally
        {
            if (s != null)
            {
                try { s.close(); } catch (Exception ignore) {}
            }
        }
    }

/** Returnerer sekvensnummeret, som bliver brugt til at indsætte dette objekt. Denne metode
*  er meget database-afhægig. denne version er gearet hen imod
*  mySQL databasen.
*/
    public int getSequenceNumber(Connection conn)
        throws SQLException
    {
        Statement s = null;

        try
        {
            s = conn.createStatement();

            ResultSet results = s.executeQuery(
                "select last_insert_id()");

            if (results.next())
            {
                return results.getInt(1);
            }
            else
            {
                throw new SQLException(
                    "Unable to generate sequence number");
            }

        }
        finally
        {
            if (s != null)
            {
                try { s.close(); } catch (Exception ignore) {}
            }
        }
    }

    public abstract String getDeleteStatement();
    public abstract void prepareDeleteStatement(PreparedStatement s)
        throws SQLException;

    public abstract String getTableName();
    public abstract DBHandler createInstance(ResultSet results)
        throws SQLException;

    public String getSequenceGenerator() { return null; }
}


det her er DBHandler klassen er det ikke min insert-metode i den du mener??




LIGE et andet spørgsmål: Hvordan får jeg denne side neden under til at ligge mine ordre i min database frem for i en fil?????
Avatar billede snowflake7 Nybegynder
11. juli 2002 - 16:59 #3
hovsa glemte lige noget::
package usingjsp.Butik;

import java.util.*;
import java.io.*;

public class vogn1 implements java.io.Serializable
{

    protected Vector Vare;

    public vogn1()
    {
      Vare = new Vector();
    }


    public Vector getVarer()
    {
      return(Vector) Vare.clone();
    }

    public void addVare(Vare newVare)
    {
        Varer.addElement(newVare);
    }

    public void removeItem(int VareIndex)
    {
      Varer.removeElementAt(VareIndex);
    }


    protected static int nextOrderNumber = 1;


    public String completeOrder(SpeditionClass speditionClass, CreditCartsClass creditCartsClass)
        throws ShoppingCartException
    {

        try
        {
            int orderNumber = 0;


            synchronized (this)
            {
                orderNumber = nextOrderNumber;
                nextOrderNumber = nextOrderNumber + 1;
            }
            PrintWriter out = new PrintWriter(
                new FileOutputStream("order"+orderNumber));
           

            out.println(speditionClass.Navn);
            out.println(speditionClass.Adresse1);
            if (speditionClass.Adresse2 != null)
            {
                out.println(speditionClass.Adresse2);
            }
            out.print(speditionClass.City);
            if (speditionClass.State != null)
            {
                out.print(", "+speditionClass.State);
            }
            if (speditionClass.PostalCode != null)
            {
                out.print(" "+speditionClass.PostalCode);
            }
            out.println(" "+speditionClass.Country);
            out.println(speditionClass.Email);


            out.println(creditCartsClass.NavnpaeKort);
            out.println(creditCartsClass.KortType);
            out.println(creditCartsClass.KortNummer);
            out.println(creditCartsClass.Udloebsdato);


            Enumeration e = Varer.elements();
            while (e.hasMoreElements())
            {
                Vare vare = (Vare) e.nextElement();

                out.println(vare.Varenr+","+
                    vare.Maengde);
            }
            out.close();


            return ""+orderNumber;
        }
        catch (Exception exc)
        {
            throw new ShoppingCartException(
                "Error saving order: "+exc.toString());
        }
    }
}
Avatar billede snowflake7 Nybegynder
12. juli 2002 - 18:56 #4
halloooooo
Avatar billede r9 Nybegynder
13. juli 2002 - 00:02 #5
vender tilbage i morgen
Avatar billede snowflake7 Nybegynder
13. juli 2002 - 00:10 #6
okay
Avatar billede r9 Nybegynder
13. juli 2002 - 19:05 #7
nu ved jeg jo ikke hvordan dit system er bygger op, men det er jo noget med et vareobjekt til at gemme dine varedate i og en klasse til at håndterer databasen adgangen.

Her er en mini vare-klasse:

public class Vare {
   

    private String vareNavn = "";
    private String varePris = "";
   
   

   
    public String getVareNavn () {
       
        return vareNavn;
    }
   
    public String getVarePris () {
       
        return varePris;
    }
   

   
    public void setVareNavn (String vareNavn) {
       
        this.vareNavn = vareNavn;;
    }
   
    public void setVarePris (String varePris) {
       
        this.varePris = varePris;
    }

}


og en simpel dbHandler (Disky's):


import java.sql.*;


public class dbHandler
{

    private Connection con=null;

    public dbHandler()
    {
    }

    public boolean open(String dbDriverName, String dbClassName, String user, String pass)
    {
        try
        {
            if(con==null)
            {
                Class.forName(dbDriverName).newInstance();
                con = DriverManager.getConnection(dbClassName, user, pass);
            }
        }
        catch (SQLException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        catch (ClassNotFoundException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        catch (InstantiationException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        catch (IllegalAccessException e)
        {
            e.printStackTrace(System.out);
            return false;
        }
        return true;
    }

    public void close()
    {
        if(con!=null)
        {
            try
            {
                con.close();
                con=null;
            }
            catch (SQLException e)
            {
                e.printStackTrace(System.out);
            }
        }
    }

    public int doUpdate(String sql)
    {
        if(con!=null)
        {
            try
            {
                long time=System.currentTimeMillis();
                Statement stat=con.createStatement();
                System.out.println("SQL Update = "+(System.currentTimeMillis()-time)+" ms  "+sql);
                return stat.executeUpdate(sql);
            }
            catch (SQLException e)
            {
                e.printStackTrace(System.out);
            }
        }
        return 0;
    }

    public ResultSet doQuery(String sql)
    {
        if(con!=null)
        {
            try
            {
                long time=System.currentTimeMillis();
                Statement stat=con.createStatement();
                System.out.println("SQL Update = "+(System.currentTimeMillis()-time)+" ms  "+sql);
                return stat.executeQuery(sql);
            }
            catch (SQLException e)
            {
                e.printStackTrace(System.out);
            }
        }
        return null;
    }
}



og en klasse som trækker dataerne ud fra vareobjektet, og kalder dbHandleren:
class CompleteOrder {
   


    private String vareNavn = "";
    private String varePris = "";
    private dbHandler db = new dbHandler();
       
   
    public void udpakObjekt(Vare vare) {
       
    vareNavn = vare.getVareNavn();   
    varePris = vare.getVarePris();   
    //osv.....
       
       
        danSqlString();       
       
    }
   
   
   
    public void danSqlString () {
       
        String sqlString = "insert into vare values ('"+vareNavn+"',"+"'"+varePris+"')";
       
       
        db.open("org.gjt.mm.mysql.Driver","databaseNavn","","");       
        db.doQuery(sqlString);
       
       
           
    }
   
   


}



I din Servlet modtager du jo nogle date fra dine brugere.
Du laver så et vare objekt i servletten, og smider dataerne ind via set-metoderne.

Når brugeren er færdig med sin ordre, kalder du udpakObjekt() på ComplereOrder med vare-objektet. Her bliver data trukket ud af objektet, og der bliver dannet en sql-String, og varen bliver gemt i databasen.

Håber du kan bruge eksemplet, og selv bygge videre på det :-)
Avatar billede snowflake7 Nybegynder
14. juli 2002 - 00:34 #8
Det er første side brugeren kommer ind på:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<BODY bgcolor='#ffffff'>
<H1>Web Wheels login</H1>
<FORM action='usingjsp.Butik.LoginServlet' method="post">
<TABLE>
<TR>
<TD>Brugernavn:<TD><INPUT type="text" name="brugernavn" >
<TD>Password:<TD><INPUT type="password" name="password" >
</TABLE>
<p>
<INPUT type="submit" value='Login!'>
</FORM>
</BODY>
</HTML>
Til at kontrollere HTML-side og åbne adgang til databasen har jeg denne servlet:
/*
* LoginServlet.java
*
* Created on 28. maj 2002, 16:20
*/

package usingjsp.Butik;         

import javax.servlet.*;
import javax.servlet.http.*;
import usingjsp.Butik.*;
import java.sql.*;
import java.util.*;

/**
*
* @author 
* @version
*/
public class LoginServlet extends HttpServlet
{
    public void service(HttpServletRequest request, HttpServletResponse response)
        throws java.io.IOException, ServletException
    {
   
    String Brugernavn = request.getParameter("Brugernavn");
        String Password = request.getParameter("Password");

        if (Brugernavn == null)
        {
            request.setAttribute("rejectReason",
                "Der er intet Brugernavn");

            rejectLogin(request,response);

            return;
        }

        if (Password == null)
        {
            request.setAttribute("rejectReason",
                "Der er intet password ");
           
          rejectLogin(request, response);

            return;
        }


        ServletContext context = getServletContext();
       
        IConnectionPool pool = (IConnectionPool) context.getAttribute(
            "connectionPool");
       
        if (pool == null)
        {
            synchronized(context)
            {
                pool = (IConnectionPool) context.getAttribute(
                    "connectionPool");
                if (pool == null)
                {
                    try {
                        Class.forName("jdbc.odbc.JdbcDriver").
                            newInstance();
                    } catch (Exception exc) {
                        getServletContext().log(
                            "Error loading JDBC driver", exc);
                    }
                   
                    pool = new SimpleConnectionPool(
                        "jdbc:odbc:Indkoeb",
                        "", "");
                    context.setAttribute("connectionPool", pool);
                }
            }
        }
       
        Connection conn = null;

        try
        {
            conn = pool.getConnection();
           
            Vare devQuery = new Vare();
           
            Vector v = devQuery.getAll(conn, "Brugernavn='"+
                Brugernavn.toLowerCase()+"'");
           
            if (v.size() != 1)
            {
                request.setAttribute("rejectReason",
                    "Invalid Brugernavn");

                rejectLogin(request, response);

                return;
            }

            Vare va = (Vare) v.elementAt(0);
           
              if (!va.Password.equals(Password))
            {
                request.setAttribute("rejectReason",
                    "Invalid password");
               
                rejectLogin(request,response);


                return;
            }

            HttpSession session = request.getSession();

            session.setAttribute("Brugernavn", Brugernavn);
            session.setAttribute("bruger", va.getbruger());
           
            RequestDispatcher dispather = context.getRequestDispatcher("/usingjsp/Butik/MuligFunktionerJSP.jsp");

          dispather.forward(request, response);
           
           
        }
        catch (SQLException exc)
        {
            getServletContext().log(
                "A database error occurred while validating a user",
                exc);

            request.setAttribute("rejectReason",
                "A database error has occurred");

                rejectLogin(request,response);

            return;
        }
        finally
        {
            if (conn != null)
            {
                try
                {
                    pool.releaseConnection(conn);
                }
                catch (Exception ignore)
                {
                }
            }
        }
    }
   
    public void  rejectLogin(HttpServletRequest request,HttpServletResponse response)
    throws java.io.IOException, ServletException
    {
       
    RequestDispatcher dispather = getServletContext().getRequestDispatcher("/usingjsp/Butik/MuligFunktionerJSP.jsp");
   
      dispather.forward(request, response);
    } 

}
Jeg har også nogle klasser der understøtter det hele:

Vare:
package usingjsp.Butik;
import usingjsp.Butik.*;
import java.sql.*;

/** A data object representing a bruger in the problem reporting
*  system.
*/
public class Vare extends DBHandler implements java.io.Serializable
{
    public String Varenr;
    public int Pris;
    public String Beskrivelse;
    public int Maengde;
    public int OrdreEnhed;
    public String Bruger;
    public String Brugernavn;
    public String Password;

    public Vare()
    {
    }

    public Vare(ResultSet results) throws SQLException
    {
        Brugernavn = results.getString("Brugernavn");
        Bruger = results.getString("Bruger");
        Password = results.getString("Password");
        Varenr = results.getString("Varenr");
        Pris = results.getInt("Pris");
        Beskrivelse = results.getString("Beskrivelse");
        Maengde = results.getInt("Maengde");
        OrdreEnhed = results.getInt("OrdreEnhed");
       
    }

    public String getBrugernavn() { return Brugernavn; }
    public void setBrugernavn(String aBrugernavn)
        { Brugernavn= aBrugernavn; }
       
    public String getbruger() { return Bruger; }
    public void setbruger(String abruger)
        { Bruger = abruger; }   

    public String getPassword() { return Password; }
    public void setPassword(String aPassword)
        { Password = aPassword; }
       
    public String getVarenr(){return Varenr;}
    public void setVarenr(String aVarenr){ Varenr = aVarenr;}
   
    public int getpris(){return Pris;}
    public void setpris(int aPris){ Pris  = aPris ;}

    public String getbeskrivelse(){return Beskrivelse;}
    public void setbeskrivelse( String aBeskrivelse){ Beskrivelse = aBeskrivelse;}

    public int getMaengde(){return Maengde;}
    public void setMaengde(int aMaengde){ Maengde = aMaengde;}   
   
    public int getOrdreEnhed(){return OrdreEnhed;}
    public void setOrdreEnhed(int aOrdreEnhed){ OrdreEnhed = aOrdreEnhed;} 
   
       
    public String getTableName() { return "indkoebst"; }

    public DBHandler createInstance(ResultSet results)
        throws SQLException
    {
        return new Vare(results);
    }

    public String getFieldList() { return "Brugernavn,Bruger,Password,Varenr"+
                                    ",Pris,Beskrivelse,Maengde"; }

    public String getInsertStatement()
    {
    return "insert into indkoebst (Brugernavn,Bruger,Password"+
            ",Varenr,Pris,Beskrivelse,Maengde) "+
            " values (?,?,?,?,?,?,?)";
    }

    public void prepareInsertStatement(PreparedStatement s)
        throws SQLException
    {
        s.setString(1, Brugernavn);
        s.setString(2, Bruger);
        s.setString(3, Password);
        s.setString(4, Varenr);
        s.setInt(5, Pris);
        s.setString(6, Beskrivelse);
        s.setInt(7,Maengde );
    }

    public String getUpdateStatement()
    {
        return "update indkoebst set Brugernavn=?, Bruger=?,Varenr=?"+
                    ",Pris=?,Beskrivelse=?,Maengde=? "+
            " where Password=?";
    }

    public void prepareUpdateStatement(PreparedStatement s)
        throws SQLException
    {
      s.setString(1, Brugernavn);
        s.setString(2, Bruger);
        s.setString(3, Password);
        s.setString(4, Varenr);
        s.setInt(5, Pris);
        s.setString(6, Beskrivelse);
        s.setInt(7,Maengde );
    }

    public String getDeleteStatement()
    {
        return "delete from indkoebst where Brugernavn=?";
    }

    public void prepareDeleteStatement(PreparedStatement s)
        throws SQLException
    {
        s.setString(1, Brugernavn);
    }
}


Spedition:
/*
* SpeditionClass.java
*
* Created on 28. april 2002, 20:51
*/

package usingjsp.Butik;
import usingjsp.Butik.*;
import java.sql.*;
import java.io.*;
import java.util.*;
/**
*
* @author 
* @version
*/
public  class SpeditionClass extends DBHandler {
    public int Spedition_id;
    public String Navn;
    public String Adresse1;
    public String Adresse2;
    public String City;
    public String State;
    public String Country;
    public String PostalCode;
    public String Email;
   
    /** Creates new SpeditionClass */
    public SpeditionClass() {
       
    }
   
    public SpeditionClass(ResultSet results)
      throws SQLException
    {
        Spedition_id = results.getInt("Spedition_id");
        Navn = results.getString("Navn");
        Adresse1 = results.getString("Adresse1");
        Adresse2 = results.getString("Adresse2");
        City = results.getString("City");
        State = results.getString("State");
        Country = results.getString("Country");
        PostalCode = results.getString("PostalCode");
        Email = results.getString("Email");
    } 
       
    public int getSpedition_id(){return Spedition_id;}
    public void setSpedition_id( int aSpedition_id){Spedition_id = aSpedition_id;}
   
    public String getNavn() {return Navn; }
    public void setNavn(String aNavn){ Navn = aNavn;}
   
    public String getAdresse1() {return Adresse1; }
    public void setAdresse1(String aAdresse1){ Adresse1 = aAdresse1;}
   
    public String getAdresse2() {return Adresse2; }
    public void setAdresse2(String aAdresse2){ Adresse2 = aAdresse2;}
   
    public String getCity() {return City; }
    public void setCity(String aCity){ City = aCity;}
   
    public String getState() {return State; }
    public void setState(String aState){ State = aState;}
   
    public String getCountry() {return Country; }
    public void setCountry(String aCountry){ Country = aCountry;}
     
    public String getPostalCode() {return PostalCode; }
    public void setPostalCode(String aPostalCode){ PostalCode = aPostalCode;}
   
    public String getEmail() {return Email; }
    public void setEmail(String aEmail){ Email = aEmail;}
   
  public String getTableName() {return "Spedition2";}
   
    public DBHandler createInstance(ResultSet results)
      throws SQLException
    {
        return new SpeditionClass(results);
    }
   
    public int insert(Connection conn)
      throws SQLException
    {
        int numRows = super.insert(conn);
        Spedition_id = getSequenceNumber(conn);
       
        return numRows;
    }
   
    public String getFieldList()
    {
        return "Spedition_id,Navn, Adresse1, Adresse2, City, State,Country, PostalCode, Email";
    }
   
    public String getInsertStatement()
    {
        return "insert i spedition  (Spedition_id,Navn,"+
        "Adresse1, Adresse2, City, State,Country, PostalCode, Email)values (?,?,?,?,?,?,?,?,?,?)";
       
    }
   
   
    public void prepareInsertStatement(PreparedStatement s) throws SQLException

    {
        s.setInt(1,0);
        s.setString(2,Navn);
        s.setString(3,Adresse1);
        s.setString(4,Adresse2);
        s.setString(5,City);
        s.setString(6,State);
        s.setString(7,Country);
        s.setString(8,PostalCode);
        s.setString(9, Email);
    }
   
  public String getUpdateStatement()
    {
        return "Opdater Speditionsoplysninger set Spedition_id=?, "+
        "Navn=?,Adresse1=?,Adressse2=?,City=?,State=?,"+
                "Country=?,PostalCode=?,Email=? where Spedition_id =?";
    }
   
    public void prepareUpdateStatement(PreparedStatement s)
    throws SQLException
    {
        try
        {
        s.setInt(1,0);
        s.setString(2,Navn);
        s.setString(3,Adresse1);
        s.setString(4,Adresse2);
        s.setString(5,City);
        s.setString(6,State);
        s.setString(7,Country);
        s.setString(8,PostalCode);
        s.setString(9, Email);
        }catch (Exception exc){
            exc.printStackTrace();
        }
    }
   
  public String getDeleteStatement()
    {
        return "Fjern from Spedition where Spedition_id=?";
    }
   
    public void prepareDeleteStatement(PreparedStatement s) throws SQLException
    {
        try
        {
        s.setInt(1,Spedition_id);
        }catch (Exception exc){
            exc.printStackTrace();
        }
    }
   
    public String getSequenceGenerator()
    {
        return "Spedition_id_gen";
    }
   
}
o.s.v alle extender de DBHandler:
package usingjsp.Butik;


import java.sql.*;
import java.util.*;

/** A base class for objects that map to database tables */

public abstract class DBHandler
{

    public Vector getAll(Connection conn)
        throws SQLException
    {
        return getAll(conn, null, null);
    }

/*henter alle objekter der macher en bestemt Where**/
    public Vector getAll(Connection conn, String whereClause)
        throws SQLException
    {
        return getAll(conn, whereClause, null);
    }

/** Henter alle objekterne i en tabel,som matcher en specifik where
    og gør det muligt for kunden at specificere yderligere tabeler, der bliver bliver brugt i
    where'en  */
    public Vector getAll(Connection conn, String whereClause,
        String additionalTables)
        throws SQLException
    {
        Statement s = null;

        try
        {
            s = conn.createStatement();

            Vector v = new Vector();

// byg  query'en.Den basale query bliver "select <fields> from table"
            String query = "select "+getFieldList()+" from "+getTableName();

// Tilføj yderligere tabeller, hvis der er brug for det
            if (additionalTables != null)
            {
                query = query + "," + additionalTables;
            }

// Tilføj where hvis der er brug for det
            if (whereClause != null)
            {
                query = query + " where "+whereClause;
            }

// udfør query
            ResultSet results = s.executeQuery(query);

// lav en vector af resultaterne
            while (results.next())
            {
                v.addElement(createInstance(results));
            }

            return v;
        }
        finally
        {
            if (s != null)
            {
                try { s.close(); } catch (Exception ignore) {}
            }
        }
    }

/** Udfører en vilkårlig query string som skulle returnerer alle
*  felterne i tabellen ligesom de andre querier. */
    public Vector executeQuery(Connection conn, String query)
        throws SQLException
    {
        Statement s = null;

        try
        {
            s = conn.createStatement();

            Vector v = new Vector();

// udfør query
            ResultSet results = s.executeQuery(query);

// lav en vector af resultaterne
            while (results.next())
            {
                v.addElement(createInstance(results));
            }

            return v;
        }
        finally
        {
            if (s != null)
            {
                try { s.close(); } catch (Exception ignore) {}
            }
        }
    }

/** Indsæt et objekt i databasen */
    public int insert(Connection conn)
        throws SQLException
    {
        PreparedStatement s = null;

        try
        {
// Få dette objekt til at udføre dets eget insert funktion
            s = conn.prepareStatement(getInsertStatement());

// Sæt dataværdier ind i insert funktionen
            prepareInsertStatement(s);

// Udfør insert'en
            return s.executeUpdate();
        }
        finally
        {
            if (s != null)
            {
                try { s.close(); } catch (Exception ignore) {}
            }
        }
    }

// Returnerer en liste af felter i tabellen (bruges til select)
    public abstract String getFieldList();

/** Returnerer en liste af felter i tabellen og i mens specificeres en
*  tabel til feltnavnene,tabellen får et alias.feltnavne tilbage til det
*  originale navn. For eksempel, kunden vil måske gerne spørge fra tabel A og
*  tabel B, hver indeholde et felt F. hvis kunden skriver "select F from A,B ..." får
*  kunden måske en fejl fordi F er flertydig. Kunden bliver nødt til at skrive
*  "select A.F as F from A,B ...". Denne  rutine tager den originale felt-
*  liste og laver en liste af sådanne aliaser.
*/
    public String getFieldList(String tableName)
    {
// Lav en tokenizer til at analysere i gennem den originale liste
        StringTokenizer fieldList = new StringTokenizer(
            getFieldList(), ",");

// lav string bufferen til at holde resulterende liste
        StringBuffer newList = new StringBuffer();
        boolean first = true;

        while (fieldList.hasMoreTokens())
        {
            String field = fieldList.nextToken();

            if (!first) newList.append(',');
            first = false;
            newList.append(tableName);
            newList.append('.');
            newList.append(field);
            newList.append(" as ");
            newList.append(field);
        }

        return newList.toString();
    }

/** Laver en insert funktion der bliver brugt i en PreparedStatement */
    public abstract String getInsertStatement();

/** Gemmer dette objekt's data i  PreparedStatement'en returneret af
*  prepareInsertStatement. */
    public abstract void prepareInsertStatement(PreparedStatement s)
        throws SQLException;

/** opdaterer database rækken,som indeholder dette objekt */
    public int update(Connection conn)
        throws SQLException
    {
        PreparedStatement s = null;

        try
        {
            s = conn.prepareStatement(getUpdateStatement());

            prepareUpdateStatement(s);

            return s.executeUpdate();
        }
        finally
        {
            if (s != null)
            {
                try { s.close(); } catch (Exception ignore) {}
            }
        }
    }

    public abstract String getUpdateStatement();
    public abstract void prepareUpdateStatement(PreparedStatement s)
        throws SQLException;

/** Fjerner dette objekt fra  databasen */
    public int delete(Connection conn)
        throws SQLException
    {
        PreparedStatement s = null;

        try
        {
            s = conn.prepareStatement(getDeleteStatement());

            prepareDeleteStatement(s);

            return s.executeUpdate();
        }
        finally
        {
            if (s != null)
            {
                try { s.close(); } catch (Exception ignore) {}
            }
        }
    }

/** Returnerer sekvensnummeret, som bliver brugt til at indsætte dette objekt. Denne metode
*  er meget database-afhægig. denne version er gearet hen imod
*  mySQL databasen.
*/
    public int getSequenceNumber(Connection conn)
        throws SQLException
    {
        Statement s = null;

        try
        {
            s = conn.createStatement();

            ResultSet results = s.executeQuery(
                "select last_insert_id()");

            if (results.next())
            {
                return results.getInt(1);
            }
            else
            {
                throw new SQLException(
                    "Unable to generate sequence number");
            }

        }
        finally
        {
            if (s != null)
            {
                try { s.close(); } catch (Exception ignore) {}
            }
        }
    }

    public abstract String getDeleteStatement();
    public abstract void prepareDeleteStatement(PreparedStatement s)
        throws SQLException;

    public abstract String getTableName();
    public abstract DBHandler createInstance(ResultSet results)
        throws SQLException;

    public String getSequenceGenerator() { return null; }
}
Avatar billede snowflake7 Nybegynder
14. juli 2002 - 00:37 #9
r9>>>>jeg er ikke helt med på den idé du har skrevet?
Kunne du uddybe den lidt?
Avatar billede r9 Nybegynder
14. juli 2002 - 11:33 #10
ok.

1) Brugeren går ind på din login side, og logger ind.
2) Brugeren kommen nu ind på en side og begynder at smide vare i kurven.
3) Hvilke varer brugeren har valgt, finder du vha. din "AddToShoppingCartServlet"
4) Når brugeren er færdig med at handle, skal ordren færdiggøres.
Her vil du vel bruge din "SpeditionClass"
Avatar billede snowflake7 Nybegynder
14. juli 2002 - 13:45 #11
4) Når brugeren er færdig med at handle, skal ordren færdiggøres.
Her vil du vel bruge din "SpeditionClass"??
Hmm, kan godt være jeg har også noget mere kode der kunne gøre det:

Denne Jsp-side er ikke helt færdig!

<%@ page  import="usingjsp.Butik.*,java.util.*"%>
<%@page import="java.sql.*,java.text.* " %>

<html>
<HEAD>
<TITLE>Web wheels</TITLE>
<LINK rel='stylesheet' type='text/css' href='Dokumenter/Skole/style.css'>
</HEAD>
<body>
<P>
<jsp:include page="CheckLoggedIn.jsp" flush="true" />
<P>
<jsp:include page="DisplayShoppingCart.jsp" flush="true"/>
<P>
<h1>Vær sød at indskrive Speditionsoplysninger</h1>
<form action='/servlet/usingjsp.Butik.CheckoutServlet' method="post">
<%
 
    Connection conn = null;

    String Spedition_id = request.getParameter("Spedition_id");

    String NavnpaeKort = request.getParameter("NavnpaeKort");

    SpeditionClass spe = new SpeditionClass();

    CreditCartsClass ccc = new CreditCartsClass();

  Vector spes = null;

    Vector cccs = null;

    IConnectionPool pool = (IConnectionPool) application.getAttribute("connectionPool");

  try{
   
        conn = pool.getConnection();

        if (Spedition_id != null )
        {
            SpeditionClass query = new SpeditionClass();

            spes = query.getAll(conn, "Spedition_id="+Spedition_id);

            if (spes.size() < 1)
            {
%>               
Oplysningerne du ønsker at ændre er ikke længere i systemet.vær sød at prøve igen.
<p>
<a href='MuligeFunktionerJSP.jsp'>Tilbage til Hovedmenu</a>
<% 
    return;
    }
    spe = (SpeditionClass) spes.elementAt(0);
%>
<input type="hidden" name='Spedition_id' value='<%=spe.Spedition_id %>'>

<%
        }
      else if (Spedition_id == null)
      {

      spe.Navn = "";
    spe.Adresse1="";
    spe.Adresse2="";
    spe.City="";
    spe.State="";
    spe.Country="";
    spe.PostalCode=000;
    spe.Email="";

   
%>

<%
        }

    }
    finally
    {
        if (conn != null)
        {
            pool.releaseConnection(conn);
        }
    }
%>
<table>
<tr>
<td>Navn:
<td><input type="text" name='Navn' value='<%=spe.Navn%>'>
<td>Adresse1:
<td><input type="text" name='Adresse1' value='<%=spe.Adresse1%>'>
<td>Adresse2:
<td><input type="text" name='Adresse2' value='<%=spe.Adresse2%>'>       
<td>City:
<td><input type="text" name='City' value='<%=spe.City%>'>
<td>State:
<td><input type="text" name='State' value='<%=spe.State%>'>
<td>Country:
<td><input type="text" name='Country' value='<%=spe.Country%>'>
<td>PostalCode:
<td>
<select name='PostalCode' >
<%

    for (int i=10; i <= 100000; i++)
    {
        out.print("<option value=\""+i+"");
        if (i == spe.PostalCode)  out.print("selected");
        out.println(">"+i+"</option>");
    }
%>
<td>Email:
<td><input type="text" name='Email' value='<%=spe.Email%>'>
</table>

<h1>Vær sød at indskrive betalingsinformationer</h1>
<%

try{
   
        conn = pool.getConnection();

if (NavnpaeKort != null )
        {
            CreditCartsClass query = new CreditCartsClass();

            cccs = query.getAll(conn, "NavnpaeKort="+NavnpaeKort);

            if (cccs.size() < 1)
            {
%>               
Oplysningerne du ønsker at ændre er ikke længere i systemet.vær sød at prøve igen.
<p>
<a href='MuligeFunktionerJSP.jsp'>Tilbage til Hovedmenu</a>
<% 
    return;

    }

    ccc = (CreditCartsClass) cccs.elementAt(0);
%>
<input type="hidden" name='NavnpaeKort' value='<%=ccc.NavnpaeKort %>'>
<h1>Ændre oplysninger </h1>
<%

      }
      else if (NavnpaeKort == null)
      {

                  ccc.NavnpaeKort="";
                  ccc.KortType ="";
                  ccc.KortNummer="";
                  ccc.Udloebsdato="";
   
%>
<h1>Tilhørende CreditCardoplysninger</h1>
<%
        }

    }
    finally
    {
        if (conn != null)
        {
            pool.releaseConnection(conn);
        }
    }
%>

<table>
<tr>
<td>NavnpaeKort:
<td><input type="text" name='NavnpaeKort' value='<%=ccc.NavnpaeKort%>'>
<td>KortType;:
<td><input type="text" name='KortType;' value='<%=ccc.KortType%>'>
<td>KortNummer:
<td><input type="text" name='KortNummer' value='<%=ccc.KortNummer%>'>     
<td>Udloebsdato:
<td><input type="text" name='Udloebsdato' value='<%=ccc.Udloebsdato%>'>         
</td>               
</tr>
</table>
<p>
<input type="submit" value='Gem ordre'>
</form>
</body>
</html>

til at kontrollere o.s.v jsp-siden har jeg denne servlet:


package usingjsp.Butik;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.net.*;

public class CheckoutServlet extends HttpServlet
{
    public void service(HttpServletRequest request,
        HttpServletResponse response)
        throws IOException, ServletException
    {

// First get the speditionClass values from the request
        SpeditionClass speditionClass = new SpeditionClass();

        speditionClass.setNavn(request.getParameter("Navn"));
        speditionClass.setAdresse1(request.getParameter("Adresse1"));
        speditionClass.setAdresse2(request.getParameter("Adresse2"));
        speditionClass.setCity(request.getParameter("City"));
        speditionClass.setState(request.getParameter("State"));
        speditionClass.setPostalCode(request.getParameter("PostalCode"));
        speditionClass.setCountry(request.getParameter("Country"));
        speditionClass.setEmail(request.getParameter("Email"));

// Next, get the creditCartsClass values
        CreditCartsClass creditCartsClass = new CreditCartsClass();
       
        creditCartsClass.setNavnpaeKort(request.getParameter("NavnpaeKort"));
        creditCartsClass.setKortType(request.getParameter("KortType"));
        creditCartsClass.setKortNummer(request.getParameter(
            "KortNummer"));
        creditCartsClass.setUdloebsDato(request.getParameter(
            "UdloebsDato"));

        HttpSession session = request.getSession();

// Get the cart
        Vogn1 cart = (Vogn1) session.
            getAttribute("Vogn1");
   
// If there is no shopping cart, create one (this should really be an error)
        if (cart == null)
        {
            cart = new Vogn1();

            session.setAttribute("Vogn1", cart);
        }

        try
        {
            String confirmation = cart.completeOrder(speditionClass, creditCartsClass);

// Now display the cart and allow the user to check out or order more items
            response.sendRedirect(response.encodeRedirectURL(
                "/usingjsp/Butik/ShowConfirmation.jsp"+
                "?confirmationNumber="+URLEncoder.encode(confirmation)));
        }
        catch (ShoppingCartException exc)
        {
            PrintWriter out = response.getWriter();

            out.println("<html><body><h1>Error</h1>");
            out.println("The following error occurred while "+
                "processing your order:");
            out.println("<pre>");
            out.println(exc.getMessage());
            out.println("</pre>");
            out.println("</body></html>");
            return;
        }
    }
}
Avatar billede snowflake7 Nybegynder
14. juli 2002 - 14:17 #12
r9>>>>>Jeg postede på et tidspunkt:11/07-2002 16:59:03 klasse "vogn1" hvor der var en complete order metode. Kunne man ikke bare lave den om sådan så den kom til at ligne den  complete order-klasse du postede på et andet tidspunkt??????????
Avatar billede snowflake7 Nybegynder
14. juli 2002 - 14:34 #13
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB