Avatar billede damski Nybegynder
21. februar 2002 - 23:45 Der er 8 kommentarer og
2 løsninger

Servlet, er det her bare tæt på at være til at køre???

Kom med dine rettelser hvis du har nogle..

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

/**
*
* @author  damski
* @version
*/
public class Hotellet extends HttpServlet {


    /** Initializes the servlet.
    */
    public void init(ServletConfig config) throws ServletException
        {  super.init(config); }

        public void doget(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOEception
        { doPost(request, response); }

    /** her bruger vi doPost til at sende oplysninger om den tilsendte resevering tilbage til klienten */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException
    {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

    out.println("<html><head><title>Reservering</title><link rel=\"stylesheet\" href=\"form.html\" type=\"text/html\"></head><body class=\"baggrund2\">");

    /** her henter vi så den information der er givet fra web siden*/
                        char kunde_navn = request.getParameter("kundenavn");
            char bekr_type = request.getParameter("bekrtype");
            char rsv_type = request.getParameter("rsvtype");
            int dato_start = request.getParameter("ankomsttid");
                        int naetter = request.getParameter("antal_naetter");
                        int antal_pers = request.getParameter("db_ankomst");
            char eventuelt = request.getParameter("andet");


      out.println("<table border=\"0\" align=\"center\" class=\"ramme\" cellpadding=\"1\" cellspacing=\"1\" width=\"200\">");

                        out.println("<tr><td class=\"baggrund2\">Navn :</td><td class=\"baggrund2\" style=\"font-weight: bold;\"> " + kunde_navn +"</td></tr> ");
            out.println("<tr><td class=\"baggrund2\">Bekræftigelses type: </td><td class=\"baggrund2\" style=\"font-weight: bold;\">" + bekr_type +"</td></tr> ");
            out.println("<tr><td class=\"baggrund2\">Reseverings type : </td><td class=\"baggrund2\" style=\"font-weight: bold;\">" + rsv_type +"</td></tr>");
            out.println("<tr><td class=\"baggrund2\">Ankomst tid : </td><td class=\"baggrund2\" style=\"font-weight: bold;\">" + dato_start +"</td></tr> ");
            out.println("<tr><td class=\"baggrund2\">Antal dage :</td><td class=\"baggrund2\" style=\"font-weight: bold;\"> " + naetter +"</td></tr> ");
            out.println("<tr><td class=\"baggrund2\">Antal personer  :</td><td class=\"baggrund2\" style=\"font-weight: bold;\"> " + antal_pers +"</td></tr>");
            out.println("<tr><td class=\"baggrund2\">Eventuelt: </td><td class=\"baggrund2\" style=\"font-weight: bold;\">"+ eventuelt +"</td></tr>");

                      Connection con=null;
                        try
                        {
                            Class.forname("org.postgresql.Driver") .newInstance();

                        }
                        catch (Exception E)
                        {
                            out.println("ude af stand til at loade Driver");
                            //E.printStackTrace();
                        }

                        try
                        {
                            con.DriverManager.getconnection
                      ("jdbc:postgresql://home/user");
                      if (con!=null)
                      {
                          System.err.println("forbindelsen er oprettet");
                          statement stm=con.createStatement();



                //knr = kundenummeret, fritvnr = værelsesnummeret og rnr = reservationsnummeret
            String reservationinsert  = "Insert into Reservationen Values(" + kunde_navn + ", " + bekr_type + ", " + rsv_type + ", " + dato_start + ", " + naetter + ", " + antal_pers + ", " + evt_forhold + ")

                        while (rs.next())
                        {
                            out.println("<tr>");
                            out.println("<td>"Måske en lille lykoenskning her"</td>");
                            out.println("</tr>");
                        }
                        rs.close();
                        out.println("/table");
                      }
                        }
                        catch (SQLException sqle)
                        {
                            out.println(sqle.getmessage());
                        }
                      catch (Exception e)
                      {
                          out.println(e.getMessage());
                      }
                      finally
                      {
                          try {
                              if (con!=null)
                              { con.close(); }
                          }
                          catch (SQLException sgle)
                          {
                              out.println(sqle.getmassage());
                          }
                      }
                        out.println("</body></html>");
                        out.close();
    }
    }


Avatar billede damski Nybegynder
21. februar 2002 - 23:59 #1
For ar lige få det på det rene, en web-side med en reseverings side, hvor personer reseverere sig ind...
Avatar billede disky Nybegynder
22. februar 2002 - 07:20 #2
det ser okay ud men der er nogle program mæssige fejl og design mæssige problemmer.

program fejl sker i det metode kalde hvor du bruger .getParameter() hvis feltet i formen er tom bliver værdien sat null, og den returnerer ALTID String.

Så du kan ikke sige int tal=request.getParameter("tal"); da du får en String tilbage.
Lav dem f.eks om til kald af denne metode:
    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;
    }

Den kalder du så med f.eks. getInt(request,"tal",-1); hvor -1 angiver fejl værdi.

Det samme gør du for de andre primitive typer.


Design fejlen er at du har udskrift af html inde i din servlet, det skaber MANGE problemmer den dag du bestemmer at siten skal have et nyt design, brug derfor JSP sider + custom tags istedet, til at åbne en adskillelse af design og funktionalitet. (dette er dog lidt smag og behag)

Ellers ser det fint ud.
Avatar billede disky Nybegynder
22. februar 2002 - 07:20 #3
hov den metode smider du selvfølgelig sammen med resten af dine getPRIMITIV metoder i en seperart klasse som du altid kan anvende.
Avatar billede damski Nybegynder
23. februar 2002 - 19:54 #4
Hej Disky

Det virker bare lidt vildt at man skal skriver så meget kode for så lidt...
Avatar billede damski Nybegynder
23. februar 2002 - 20:20 #5
Men noget i den her stil... eller hvad?

public class Hotellet extends HttpServlet {


    /** Initializes the servlet.
    */
    public void init(ServletConfig config) throws ServletException
        {  super.init(config); }

        public void doget(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOEception
        { doPost(request, response); }

    /** her bruger vi doPost til at sende oplysninger om den tilsendte resevering tilbage til klienten */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException
    {
        response.setContentType("text/jsp");
        PrintWriter out = response.getWriter();

    out.println("<html><head><title>Reservering</title><link rel=\"stylesheet\" href=\"form.jsp\" type=\"text/html\"></head><body class=\"baggrund2\">");

    /** her henter vi så den information der er givet fra web siden*/
    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;

      getInt(request,"kunde_navn",- 1);
      getInt(request,"bekr_type",-1);
      getInt(request,"rsv_type"-1);
      getInt(request,"dato_start"-1);
      getInt(request,"naetter"-1);
      getInt(request,"antal_pers",-1);
      getInt(request,"eventuelt",-1);



                        out.println("<table border=\"0\" align=\"center\" class=\"ramme\" cellpadding=\"1\" cellspacing=\"1\" width=\"200\">");
                        out.println("<tr><td class=\"baggrund2\">Navn :</td><td class=\"baggrund2\" style=\"font-weight: bold;\"> " + kunde_navn +"</td></tr> ");
            out.println("<tr><td class=\"baggrund2\">Bekræftigelses type: </td><td class=\"baggrund2\" style=\"font-weight: bold;\">" + bekr_type +"</td></tr> ");
            out.println("<tr><td class=\"baggrund2\">Reseverings type : </td><td class=\"baggrund2\" style=\"font-weight: bold;\">" + rsv_type +"</td></tr>");
            out.println("<tr><td class=\"baggrund2\">Ankomst tid : </td><td class=\"baggrund2\" style=\"font-weight: bold;\">" + dato_start +"</td></tr> ");
            out.println("<tr><td class=\"baggrund2\">Antal dage :</td><td class=\"baggrund2\" style=\"font-weight: bold;\"> " + naetter +"</td></tr> ");
            out.println("<tr><td class=\"baggrund2\">Antal personer  :</td><td class=\"baggrund2\" style=\"font-weight: bold;\"> " + antal_pers +"</td></tr>");
            out.println("<tr><td class=\"baggrund2\">Eventuelt: </td><td class=\"baggrund2\" style=\"font-weight: bold;\">"+ eventuelt +"</td></tr>");

                      Connection con=null;
                        try
                        {
                            Class.forname("org.postgresql.Driver") .newInstance();

                        }
                        catch (Exception E)
                        {
                            out.println("ude af stand til at loade Driver");
                            //E.printStackTrace();
                        }

                        try
                        {
                            con.DriverManager.getconnection
                      ("jdbc:postgresql://home/user");
                      if (con!=null)
                      {
                          System.err.println("forbindelsen er oprettet");
                          statement stm=con.createStatement();




                    String reservationinsert  = "Insert into Reservationen Values(" + kunde_navn + ", " + bekr_type + ", " + rsv_type + ", " + dato_start + ", " + naetter + ", " + antal_pers + ", " + evt_forhold + ")

                        while (rs.next())
                        {
                            out.println("<tr>");
                            out.println("<td>"Måske en lille lykoenskning her"</td>");
                            out.println("</tr>");
                        }
                        rs.close();
                        out.println("/table");
                      }
                        }
                        catch (SQLException sqle)
                        {
                            out.println(sqle.getmessage());
                        }
                      catch (Exception e)
                      {
                          out.println(e.getMessage());
                      }
                      finally
                      {
                          try {
                              if (con!=null)
                              { con.close(); }
                          }
                          catch (SQLException sgle)
                          {
                              out.println(sqle.getmassage());
                          }
                      }
                        out.println("</body></html>");
                        out.close();
    }
    }
Avatar billede damski Nybegynder
23. februar 2002 - 20:23 #6
Selvfølgelig lige nogle flere html steder, jeg lige skal ændre til jsp. og der er jo ikke mere kode nu, det var lige en smutter...
Avatar billede logical Nybegynder
24. februar 2002 - 05:50 #7
Du mangler nok iøvrigt også at fyre din insert af i databasen

stm.executeUpdate(reservationinsert)
Avatar billede damski Nybegynder
24. februar 2002 - 14:55 #8
Ja klart.... tak.. ellers ser det godt ud??? prøver at køre det senere
Avatar billede damski Nybegynder
25. februar 2002 - 15:23 #9
Ja jeg for godt nok stadig en del fejl... nogle syntaks fejl nok kan rette selv men lige den der...  String reservationinsert  = "Insert into Reservationen Values(" + kunde_navn + ", " + bekr_type + ", " + rsv_type + ", " + dato_start + ", " + naetter + ", " + antal_pers + ", " + evt_forhold + ")  Er den ikke glad for... siger unclosed strig literad ....
Avatar billede damski Nybegynder
25. februar 2002 - 17:13 #10
Jamen det virker... du skal jeg bare finde ud af det med de JSP sider..
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