Avatar billede lorgani Nybegynder
15. februar 2001 - 11:19 Der er 11 kommentarer

Servlet+sql

Jeg har et TABEL der hedder: ---Fagbeskrivelser---. Og dette tabel har følgende attributter (kolonner) : FULD_TITEL, MÅLSÆTNING, HOVEDINDHOLD,
HOVEDINDHOLD, UNDERVISNINGSFORM, FORUDSÆTNINGER, PRØVEFORM, UNDERVIS_MATERIALER, PROGRAMMER, FAGKOORDINATOR.
Attributternes type er VARCHAR2.

Jeg vil gerne lave et dynamiske SERVLET der skal gøre det muligt for at kunne fylde tabellen med data. Jeg bruger JDeveloper for at lave dette Servlet og der ikke nogle problemmer med kontakt med selv databasen som dette tabel er en del af.

Problemmet er at når Servletten er belevet aktiveret på Browseren jeg kan ikke lave den rigtige formular som man kan indtaste i sine data. Jeg vil helst at kunne fylde alle attributter og opdatere tabellen på EN Gange
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;


public class Fagbeskrivelse extends HttpServlet {

  Connection con;




  /**
  * Initialize global variables
  */
  public void init(ServletConfig config) throws ServletException {
    super.init(config);

      /*\'Class.forName(\"oracle.jdbc.driver.OracleDriver\");
      Connection con = DriverManager.getConnection(
                    \"jdbc:oracle:thin:@oracle:1521:student\",
                    \"stuk1142\", \"stuk1142\");*/
      }



  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request,response);
  }

  /**
  * Process the HTTP Get request
  */
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType(\"text/html\");
    PrintWriter out = new PrintWriter (response.getOutputStream());
   
    try
    {
      out.println(\"<html>\");
      out.println(\"<head><title>Fagbeskrivelse</title></head>\");
      out.println(\"<body>Hello From Fagbeskrivelse doGet()\");



    //  Class.forName(\"oracle.jdbc.driver.OracleDriver\");
      Class.forName(\"oracle.jdbc.driver.OracleDriver\");
      con = DriverManager.getConnection(
                    \"jdbc:oracle:thin:@oracle:1521:student\",
                    \"stuk1147\", \"stuk1147\");

      CallableStatement s = con.prepareCall(\"SELECT Fuld_titel, Målsætning, Hovedindhold, Undervisningsform, FORUDSÆTNINGER, PRØVEFORM, UNDERVIS_MATERIALER, PROGRAMMER, FAGKOORDINATOR FROM fagbeskrivelser\");

      ResultSet rs = s.executeQuery();

      out.println(\"<p>Nu kommer tabellen: <table>\");
// FORUDSÆTNINGER, PRØVEFORM, UNDERVIS_MATERIALER, PROGRAMMER, FAGKOORDINATOR.

      while (rs.next())
      {
        String Fuld_titel = rs.getString(\"Fuld_titel\");
        String Målsætning = rs.getString(\"Målsætning\");
        String Hovedindhold = rs.getString(\"Hovedindhold\");
        String Undervisningsform = rs.getString(\"Undervisningsform\");
        String FORUDSÆTNINGER = rs.getString(\"FORUDSÆTNINGER\");
        String PRØVEFORM = rs.getString(\"PRØVEFORM\");
        String UNDERVIS_MATERIALER = rs.getString(\"UNDERVIS_MATERIALER\");
        String PROGRAMMER = rs.getString(\"PROGRAMMER\");
        String FAGKOORDINATOR = rs.getString(\"FAGKOORDINATOR\");



        out.println(\"<tr><td>\"+Fuld_titel+\"</td><td>\"+Målsætning+\"</td><td>\"+Hovedindhold+\"</td><td>\"+Undervisningsform+\"</td><td>\"+FORUDSÆTNINGER+\"</td><td>\"+PRØVEFORM+\"</td><td>\"+UNDERVIS_MATERIALER+\"</td><td>\"+PROGRAMMER+\"</td><td>\"+FAGKOORDINATOR+\"</td></tr>\");


      }
      out.println(\"</table> Slut på tabel\");
      String book = \"\";

      out.println(\"<h1>Indtast ny række</h1>\");
      out.println(\"<form name=ny><input type=text name=Fuld_titel><input type=submit></form>\");

    String Fuld_titel = request.getParameter(\"Fuld_titel\");
    String Målsætning = request.getParameter(\"Målsætning\");
    String Hovedindhold = request.getParameter(\"Hovedindhold\");
    String Undervisningsform = request.getParameter(\"Undervisningsform\");
    String FORUDSÆTNINGER = request.getParameter(\"FORUDSÆTNINGER\");
    String PRØVEFORM = request.getParameter(\"PRØVEFORM\");
    String UNDERVIS_MATERIALER = request.getParameter(\"UNDERVIS_MATERIALER\");
    String PROGRAMMER = request.getParameter(\"PROGRAMMER\");
    String FAGKOORDINATOR = request.getParameter(\"FAGKOORDINATOR\");
    book = (Fuld_titel + Målsætning + Hovedindhold + Undervisningsform+FORUDSÆTNINGER+PRØVEFORM+UNDERVIS_MATERIALER+PROGRAMMER+FAGKOORDINATOR);

    //if (book != null && book.length()>0)
      {
        Statement s2 = con.createStatement();
s2.executeUpdate(\"INSERT INTO fagbeskrivelser (Fuld_titel, Målsætning, Hovedindhold, Undervisningsform, FORUDSÆTNINGER,PRØVEFORM,UNDERVIS_MATERIALER,PROGRAMMER,FAGKOORDINATOR) Dag VALUES (\");


        out.println(\"<h2>Ny dag indsat!!</h2>\");
      }

    } catch (Exception e) {
      out.println(\"<h1>Fejl!</h1>\");
      out.println(\"Fejlen var:\"+e+\"<br><pre>\");
      e.printStackTrace(out);
      out.println(\"</pre>\");
      e.printStackTrace();
    }

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


  /**
  * Get Servlet information
  * @return java.lang.String
  */
  public String getServletInfo() {
    return \"Fagbeskrivelse Information\";
  }
}


Avatar billede disky Nybegynder
15. februar 2001 - 11:22 #1
få din servlet til at spytte en form ud istedet.

p.s. har du ikke stillet dette spørgsmål før ??

En JSP løsning er og bliver nemmere og bedre
Avatar billede lorgani Nybegynder
15. februar 2001 - 11:26 #2
Hvordan kan man gøre det at den kan lave et form for alle de attributter som jeg har?
Avatar billede disky Nybegynder
15. februar 2001 - 11:45 #3
istedet for at udskrive data i en tabel udskriver du det i en tabel som ligger inde i en form

<FORM METHOD=\"POST\" ACTION=\"servletNavn\">
<TABLE WIDTH=\"50%\" BORDER=\"1\">
<TR>
<TD>Navn<P><INPUT TYPE=\"TEXT\" NAME=\"Text1\" VALUE=\"Brian\"></P>
</TD>
</TR>
<TR>
<TD>Adresse<P><INPUT TYPE=\"TEXT\" NAME=\"Text1\" VALUE=\"gåserød\"></P>
</TD>
</TR>
</TABLE>
</FORM>
i value sætter du så værdierne fra databasen.

når folk poster siden, skal data gemmes i basen igen
Avatar billede sbm Nybegynder
15. februar 2001 - 11:49 #4
Spørgsmål til disky:

Hvad er det der er bedre ved en JSP løsning?

Med en servlet har man en rimelig mulighed for at skille html og javakode fra hinanden. I JSP bliver det masket sammen, og din JSP side bliver i sidste ende alligevel lavet om til en Servlet.
Avatar billede disky Nybegynder
15. februar 2001 - 11:54 #5
i en servlet er kode og html jo netop bladet sammen i en stor skide stak, bare se ovenstående eksempel.

Fordelen ved JSP er netop at man har dem adskilt.

Se her:

                <TR>
                  <TD>
                    Navn
                  </TD>
                  <TD>
                    <P><INPUT TYPE=\"TEXT\" NAME=\"name\" VALUE=\"<%=ul.getName()%>\" SIZE=\"40\"></P>
                  </TD>
                </TR>
                <TR>
                  <TD>
                    Adresse
                  </TD>
                  <TD>
                    <P><INPUT TYPE=\"TEXT\" NAME=\"adresse\" VALUE=\"<%=ul.getAdresse()%>\" SIZE=\"40\"></P>
                  </TD>
                </TR>


taget fra et projekt jeg har rodet med.

det er fra en standard HTML side.

det eneste java der er i den, er kald til en bean hvor alt er java er samlet.

Det er jo hele fordelen, frem for f.eks. perl,php osv netop at det er adskilt. Tro mig en webdesigner gider ikke rette i en servlet java fil, prøv at loade sådanne en i en webeditor
Avatar billede disky Nybegynder
15. februar 2001 - 11:55 #6
selve java koden er her <%=ul.getName()%>

der henter et navn fra en base.

i toppen af html/jsp filen er der så følgende:
<jsp:useBean id=\"ul\" scope=\"request\" class=\"disky.user.UserLogin\" />
<jsp:setProperty name=\"ul\" property=\"*\"/>

der fortæller hvilke beans der bliver sat, og at alle properties skal sættes i bean
Avatar billede lorgani Nybegynder
15. februar 2001 - 11:55 #7
Kære disky
Først vil jeg takker dig meget. Og andet er at jeg er en begynder som ikke har meget forstand på java. Derfor prøver jeg at spørge andre. Måske  ser mit spørgsmål  meget primitivt ud men hvad kan jeg gøre ellers??
Avatar billede lorgani Nybegynder
15. februar 2001 - 11:59 #8
Kære Disky
Skal jeg placere de ting du har skrevet til mig i mit servlet eller i et html side for sig selv?
Avatar billede disky Nybegynder
15. februar 2001 - 12:04 #9
det jeg har sendt er et exempel på en tabel inden i en form med input felter.

du skal få din servlet til at spytte sådanne en form/tabel ud hvor den ligenu bare spytter en tabel ud.

det er vist i denne linie du skal ændre noget, og så før din while løkke

        out.println(\"<tr><td>\"+Fuld_titel+\"</td><td>\"+Målsætning+\"</td><td>\"+Hovedindhold+\"</td><td>\"+Undervisningsform+\"</td><td>\"+FORUDSÆTNINGER+\"</td><td>\"+PRØVEFORM+\"</td><td>\"+UNDERVIS_MATERIALER+\"</td><td>\"+PROGRAMMER+\"</td><td>\"+FAGKOORDINATOR+\"</td></tr>\");


Jeg har ikke lige tid til at rode med selve din kode (er på arbejde).

Men hvis du har flere problemmer mail det til mig på disky@hotmail.com

så kigger jeg på det i aften
Avatar billede lorgani Nybegynder
15. februar 2001 - 12:15 #10
Kære Disky
Jeg sysnes hvis du har tid i aften og kan kigge på mit servlet det bliver utrolig godt og det rigtigt sød af dig.
jeg sender et mail som indeholder servlettet og et skærmbillede af selv browseren så du kan se den og også fejlmeddelelserne.  På forhånd tak
Avatar billede disky Nybegynder
15. februar 2001 - 12:27 #11
fint fint
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