Avatar billede snowflake7 Nybegynder
27. maj 2002 - 18:16 Der er 4 kommentarer og
2 løsninger

Tilføj varer til Indkøbskurv via database (paradox)????

Hej
jeg har her en servlet der skal ligge vare i en indkøbskurv når kunden har søgt på varerne i databasen og valgt hvilke nogen af dem person vil have.
hvad går der egentlig galt.
sig til hvis jeg skal poste mere kode!!!






package usingjsp.Internetbutik;         

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

/**
*
* @author 
* @version
*/
public class TilFoejTILKurvServlet extends HttpServlet
{
  protected Connection conn;
    /** Initializes the servlet.
    */ 
    public void init(ServletConfig config) throws ServletException {
            super.init(config);
           
            try
            {
              java.lang.Class.forName("sun.jdbc.odbc.JdbcDriver");
               
                conn = DriverManager.getConnection("jdbc:odbc:indkoebdb");
            }
            catch (Exception exc)
            {
                getServletContext().log("Error making JDBC connection: ", exc);
            }
   

    }
   
   
    public void service(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, java.io.IOException
    {
        String Varenr = request.getString("Varenr");
        double Pris = Double.parseDouble(request.getdouble("Pris"));
        String Beskrivelse = request.getString("Beskrivelse");
        int Maengde = request.getInt("Maengde");
        int OrdreEnhed = request.getInt("OrdreEnhed");
       
        Varerclass varerclass = new Varerclass(Varenr, Pris, Beskrivelse, Maengde, OrdreEnhed);
       
        HttpSession session = request.getSession();
       
        IndkoebskurvClass kurv = (IndkoebskurvClass) session.getAttribute("IndkoebskurvClass");
       
        if (kurv == null)
        {
            kurv = new IndkoebskurvClass();
           
            session.setAttribute("IndkoebskurvClass", kurv);
        }
       
        kurv.addVarerclass(varerclass);
       
       
   
    }
    /** Destroys the servlet.
    */ 
    public void destroy()
    {
        try
        {
            if (conn != null)
            {
                conn.close();
            }
        }
        catch (SQLException exc)
        {
            getServletContext().log("Error closing JDBC connection: ", exc);
        }   

    }

    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
    * @param request servlet request
    * @param response servlet response
    */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, java.io.IOException {
        response.setContentType("text/html");
        java.io.PrintWriter out = response.getWriter();
        /* output your page here
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet</title>"); 
        out.println("</head>");
        out.println("<body>");

        out.println("</body>");
        out.println("</html>");
        */
        out.close();
    }

    /** Handles the HTTP <code>GET</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, java.io.IOException {
        processRequest(request, response);
    }

    /** Handles the HTTP <code>POST</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, java.io.IOException {
        processRequest(request, response);
    }

    /** Returns a short description of the servlet.
    */
    public String getServletInfo() {
        return "Short description";
    }

}
Avatar billede snowflake7 Nybegynder
27. maj 2002 - 18:18 #1
her er fejlmeddelelsen:
Programmer/Allaire/JRun/servers/default/demo-app/jsp/usingjsp/Internetbutik/TilFoejTILKurvServlet.java [45:1] cannot resolve symbol
symbol  : method getString  (java.lang.String)
location: interface javax.servlet.http.HttpServletRequest
        String Varenr = request.getString("Varenr");
                              ^
Programmer/Allaire/JRun/servers/default/demo-app/jsp/usingjsp/Internetbutik/TilFoejTILKurvServlet.java [46:1] cannot resolve symbol
symbol  : method getdouble  (java.lang.String)
location: interface javax.servlet.http.HttpServletRequest
        double Pris = Double.parseDouble(request.getdouble("Pris"));
                                                ^
Programmer/Allaire/JRun/servers/default/demo-app/jsp/usingjsp/Internetbutik/TilFoejTILKurvServlet.java [47:1] cannot resolve symbol
symbol  : method getString  (java.lang.String)
location: interface javax.servlet.http.HttpServletRequest
        String Beskrivelse = request.getString("Beskrivelse");
                                    ^
Programmer/Allaire/JRun/servers/default/demo-app/jsp/usingjsp/Internetbutik/TilFoejTILKurvServlet.java [48:1] cannot resolve symbol
symbol  : method getInt  (java.lang.String)
location: interface javax.servlet.http.HttpServletRequest
        int Maengde = request.getInt("Maengde");
                            ^
Programmer/Allaire/JRun/servers/default/demo-app/jsp/usingjsp/Internetbutik/TilFoejTILKurvServlet.java [49:1] cannot resolve symbol
symbol  : method getInt  (java.lang.String)
location: interface javax.servlet.http.HttpServletRequest
        int OrdreEnhed = request.getInt("OrdreEnhed");
                                ^
5 errors
Errors compiling TilFoejTILKurvServlet.
Avatar billede disky Nybegynder
27. maj 2002 - 19:14 #2
På en request, kan du kun kalde .getParameter() som så returnerer en String med indholdet, eller null hvis den ikke findes.

Derefter må du selv konvertere til int osv.

Brug evt. denne klasse jeg har lavet som går det for dig:


/*
* ParameterParser.java
*
* Created on 14. februar 2002, 18:47
*/

import javax.servlet.http.*;

/**
*
* @author  srr
* @version
*/
public class ParameterParser
{
    public static final String STRING_DEFAULT="TEST";
    public static final int INT_DEFAULT=-1;
    public static final long LONG_DEFAULT=-1;
    public static final float FLOAT_DEFAULT=-1;
    public static final double DOUBLE_DEFAULT=-1;
    public static final boolean BOOLEAN_DEFAULT=false;
   
    // Is private in order to make sure it can not be instantiated
    private ParameterParser()
    {
    }
   
    public static String getString(HttpServletRequest request, String name)
    {
        return getString(request, name,STRING_DEFAULT);
    }

    public static String getString(HttpServletRequest request, String name, String def)
    {
        String temp=request.getParameter(name);
        if(temp==null || temp.equals("")) return def;
       
        return temp;
    }
   
    public static int getInt(HttpServletRequest request, String name)
    {
        return getInt(request, name, INT_DEFAULT);
    }

    public static int getInt(HttpServletRequest request, String name, int def)
    {
        String temp=request.getParameter(name);
        if(temp==null || temp.equals("")) return def;
       
        int val=def;
       
        try
        {
            def=Integer.parseInt(temp);
        }
        catch (NumberFormatException e)
        {
        }
        return def;
    }

    public static long getLong(HttpServletRequest request, String name)
    {
        return getLong(request, name, LONG_DEFAULT);
    }

    public static long getLong(HttpServletRequest request, String name, long def)
    {
        String temp=request.getParameter(name);
        if(temp==null || temp.equals("")) return def;
       
        long val=def;
       
        try
        {
            def=Long.parseLong(temp);
        }
        catch (NumberFormatException e)
        {
        }
        return def;
    }

    public static float getFloat(HttpServletRequest request, String name)
    {
        return getFloat(request, name, FLOAT_DEFAULT);
    }

    public static float getFloat(HttpServletRequest request, String name, float def)
    {
        String temp=request.getParameter(name);
        if(temp==null || temp.equals("")) return def;
       
        float val=def;
       
        try
        {
            def=Float.parseFloat(temp);
        }
        catch (NumberFormatException e)
        {
        }
        return def;
    }

    public static double getDouble(HttpServletRequest request, String name)
    {
        return getDouble(request, name, DOUBLE_DEFAULT);
    }

    public static double getDouble(HttpServletRequest request, String name, double def)
    {
        String temp=request.getParameter(name);
        if(temp==null || temp.equals("")) return def;
       
        double val=def;
       
        try
        {
            def=Double.parseDouble(temp);
        }
        catch (NumberFormatException e)
        {
        }
        return def;
    }

    public static boolean getBoolean(HttpServletRequest request, String name)
    {
        return getBoolean(request, name, BOOLEAN_DEFAULT);
    }
   
    public static boolean getBoolean(HttpServletRequest request, String name, boolean def)
    {
        String temp=request.getParameter(name);
        if(temp==null || temp.equals("")) return def;
        if(temp.equalsIgnoreCase("on") || temp.equalsIgnoreCase("true")) return true;
        return false;
    }
   
}
Avatar billede disky Nybegynder
27. maj 2002 - 19:15 #3
Forresten er dette her:

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, java.io.IOException {
        response.setContentType("text/html");
        java.io.PrintWriter out = response.getWriter();
        /* output your page here
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet</title>"); 
        out.println("</head>");
        out.println("<body>");

        out.println("</body>");
        out.println("</html>");
        */
        out.close();
    }


MEGET grimt, man laver IKKE html kode i en servlet, så får man ligeså dårlig kode som de fleste php kodere laver.
Avatar billede snowflake7 Nybegynder
27. maj 2002 - 19:51 #4
nu ser min kode så sådan ud hvordan får jeg forte for java til at vise det kunden har lagt i  kurven på skærmen??

package usingjsp.Internetbutik;         
import usingjsp.Internetbutik.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;

/**
*
* @author 
* @version
*/
public class TilFoejTILKurvServlet extends HttpServlet
{
  protected Connection conn;
    /** Initializes the servlet.
    */ 
    public void init(ServletConfig config) throws ServletException {
            super.init(config);
           
            try
            {
              java.lang.Class.forName("sun.jdbc.odbc.JdbcDriver");
               
                conn = DriverManager.getConnection("jdbc:odbc:indkoebdb");
            }
            catch (Exception exc)
            {
                getServletContext().log("Error making JDBC connection: ", exc);
            }
   

    }
   
   
    public void service(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, java.io.IOException
    {
        String Varenr = request.getParameter("Varenr");
        double Pris = Double.parseDouble(request.getParameter("Pris"));
        String Beskrivelse = request.getParameter("Beskrivelse");
        int Maengde =Integer.parseInt( request.getParameter("Maengde"));
        int OrdreEnhed =Integer.parseInt( request.getParameter("OrdreEnhed"));
       
        Varerclass varerclass = new Varerclass(Varenr, Pris, Beskrivelse, Maengde, OrdreEnhed);
       
        HttpSession session = request.getSession();
       
        IndkoebskurvClass kurv = (IndkoebskurvClass) session.getAttribute("IndkoebskurvClass");
       
        if (kurv == null)
        {
            kurv = new IndkoebskurvClass();
           
            session.setAttribute("IndkoebskurvClass", kurv);
        }
       
        kurv.addVarerclass(varerclass);
       
       
   
    }
    /** Destroys the servlet.
    */ 
    public void destroy()
    {
        try
        {
            if (conn != null)
            {
                conn.close();
            }
        }
        catch (SQLException exc)
        {
            getServletContext().log("Error closing JDBC connection: ", exc);
        }   

    }

    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
    * @param request servlet request
    * @param response servlet response
    */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, java.io.IOException {
        response.setContentType("");
        java.io.PrintWriter out = response.getWriter();
     
        out.close();
    }

    /** Handles the HTTP <code>GET</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, java.io.IOException {
        processRequest(request, response);
    }

    /** Handles the HTTP <code>POST</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, java.io.IOException {
        processRequest(request, response);
    }

    /** Returns a short description of the servlet.
    */
    public String getServletInfo() {
        return "Short description";
    }

}
Avatar billede soelvpil Nybegynder
27. maj 2002 - 20:09 #5
Din doGet og doPost-metode bliver aldrig kaldt. Det er service-metoden der kaldes.

Du kan altså roligt slette både doGet og doPost-metoden. Det giver lidt mindre (og dermed lettere forståelig) kode.

Jeg vil foreslå at du i din service-metode slutter af med et kald til processRequest. Denne metode kan du så lave om til

protected void processRequest(HttpServletRequest request,HttpServletResponse response)
    throws ServletException, java.io.IOException {

  response.setContentType("text/html");
  java.io.PrintWriter out = response.getWriter();
  out.println("<html>");
  out.println("<head>");
  out.println("<title>Servlet</title>"); 
  out.println("</head>");
  out.println("<body>");
  out.println("Min indkøbskurv:<br>");
  out.println("(her skal være output der beskriver indkøbskurven)");
  out.println("</body>");
  out.println("</html>");
  out.close();
}

Til slut kan du så lave om, så du itererer hen over varerne i din indkøbskurv og præsenterer dem på en pæn måde.

På et tidspunkt finder du nok ud af, at det er besværligt at lave output på den måde. Så kan du evt overveje at kigge på servlets.
Avatar billede snowflake7 Nybegynder
27. maj 2002 - 22:52 #6
hvordan laver man et kald til processRequest?

Til slut kan du så lave om, så du itererer hen over varerne i din indkøbskurv og præsenterer dem på en pæn måde.- hvordan???
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