# JSP/Servlet Web Applikation programmierung



## WaNNaBe (6. Apr 2010)

Hallo liebe progger =)...

Ich hätte mal ne Frage, bei meinem Projekt, muss ich aus einer DB , eine Spalte auslesen.
Bei dieser handelt es sich um einige App namen, wie z.B.: ifts, BaanIV, eShop, Datahub, DWH etc...

Die Abfrage ist ja nicht das Problem, ich mache alles in einem Controller Servlet, das alles handled, aber ich weiß grad nicht, wie ich syntaxmäßig, die Ausgabe der DB Abfrage an eine Combo Box weiter leite.

Ich brauch quasi, das ausgelesene der DB in meiner Combobox. 

und ich müsste noch wissen, wie ich die Felder auslese, in denen ich im Browser was eintippel.

z.B.: hab ich ne Textarea, und da schreib ich rein, Hello World, bekomm ich das dann auch mit getParameter raus geholt?

Bzw und andersrum? Wenn ich jetzt z.B. die Textareas auf Read Only stelle, und die sollen mit einer DB Abfrage gefüllt werden, wie setze ich dann das in die Textareas? 

kleines bsp.: Wenn ich nen Error Code hab, und der ist i-wo in ner DB dokumentiert, dieser soll ueber nen String in der DB abgeglichen werden, der error code der gefunden wird, soll dann in einer maske im browser wieder gegeben werden. Wie setze ich jetzt die DB Anfrage so um, das die Felder vom gefundenen Error Code, z.B.: Description oder Solution direkt mit der DB Anfrage gefüllt werden?
Da wird es wohl eine simple "set" Methode geben, aber die hab ich bis jetzt noch nicht gefunden^^

Hoffe hab das verständlich rüber gebracht.

Wenn noch Fragen sind, ich beantwote sie dann später... muss jetzt erst noch einmal weg. Bis gleich.

WaNNa


----------



## Atze (6. Apr 2010)

WaNNaBe hat gesagt.:


> Die Abfrage ist ja nicht das Problem, ich mache alles in einem Controller Servlet, das alles handled, aber ich weiß grad nicht, wie ich syntaxmäßig, die Ausgabe der DB Abfrage an eine Combo Box weiter leite.



du bekommst ja überlicherweise ein resultSet aus der DB. das läufst du durch und fügst jedes element hinzu

```
addItem(Object anObject)
```



> und ich müsste noch wissen, wie ich die Felder auslese, in denen ich im Browser was eintippel.
> 
> z.B.: hab ich ne Textarea, und da schreib ich rein, Hello World, bekomm ich das dann auch mit getParameter raus geholt?



auf der seite haben felder üblicherweise ids oder namen, so heißen auch die keys der parameter im request



> Bzw und andersrum? Wenn ich jetzt z.B. die Textareas auf Read Only stelle, und die sollen mit einer DB Abfrage gefüllt werden, wie setze ich dann das in die Textareas?
> 
> kleines bsp.: Wenn ich nen Error Code hab, und der ist i-wo in ner DB dokumentiert, dieser soll ueber nen String in der DB abgeglichen werden, der error code der gefunden wird, soll dann in einer maske im browser wieder gegeben werden. Wie setze ich jetzt die DB Anfrage so um, das die Felder vom gefundenen Error Code, z.B.: Description oder Solution direkt mit der DB Anfrage gefüllt werden?
> Da wird es wohl eine simple "set" Methode geben, aber die hab ich bis jetzt noch nicht gefunden^^




```
append(String str)
```

hätte man aber auch mit n bischen api-suchen gefunden


----------



## WaNNaBe (7. Apr 2010)

Danke für den Tipp gestern, leider klappt das nicht ganz so wie ich mir das vorstelle…

Am besten gebe ich dir/euch mal ein wenig Code…


```
ResultSet rs3 = stmt.executeQuery("SELECT * FROM IFM_ERROR_CODES WHERE ERROR_NUMBER = " + myNumber + " AND APPLICATION_ID = " + appID);

                    if (rs3.next()) {
                        errorCodeDB = rs3.getString("ERROR_NUMBER");

                        int ecDB;
                        ecDB = Integer.parseInt(errorCodeDB);

                        DecimalFormat df2 = (DecimalFormat) DecimalFormat.getNumberInstance();
                        df2.applyPattern("0000");

                        
                    }
```

Das ist mein ResultSet, und wie bekomm ich jetzt das was in dem RS steht in Readonly Text/Textarea Felder?

Du sagtest mit “append“, aber das steht bei mir nicht, oder ich habs mit der Syntax einfach nicht so.

Hier mal meine JSP:


```
<body>

        <h2> Finder </h2>
        <form action="/demo/ControllerServlet" method="POST">
            <input type="hidden" name="command" value="FindErrCode">
            Enter your error code here: <INPUT TYPE="TEXT" NAME="error" TABINDEX="1">
            <INPUT TYPE="SUBMIT" VALUE="OK" TABINDEX="2">
            <INPUT TYPE="BUTTON" VALUE="cancel" TABINDEX="3" ONCLICK="window.location.href='/demo/ControllerServlet';">
        </form>
        <br><br>
        <form action="/demo/ControllerServlet" method="POST">
            <input type="hidden" name="command" value="ErrorCodeFound">
        <h2>Error Code found!</h2>
        <h3>Application ID: <INPUT TYPE="TEXT" NAME="appSeries" ID="1" READONLY></h3>
        <h3>Error Code Number: <INPUT TYPE="TEXT" NAME="errCodeNumber" ID="2" READONLY></h3>
        <h3>*Component: <TEXTAREA COLS="45" ROWS="4" NAME="component" ID="3" READONLY></TEXTAREA></h3>
        <h3>*Classification: <TEXTAREA COLS="45" ROWS="4" NAME="classification" ID="4" READONLY></TEXTAREA></h3>
        <h3>Description: <TEXTAREA COLS="45" ROWS="4" NAME="description" ID="5" READONLY></TEXTAREA></h3>
        <h3>Solution: <TEXTAREA COLS="45" ROWS="4" NAME="solution" ID="6" READONLY></TEXTAREA></h3>
        <h3>URL 1: <INPUT TYPE="TEXT" NAME="url1" ID="7" READONLY></h3>
        <h3>URL 2: <INPUT TYPE="TEXT" NAME="url2" ID="8" READONLY></h3>
        <h3>URL 3: <INPUT TYPE="TEXT" NAME="url3" ID="9" READONLY></h3>
        <h5>* = max. 256 characters</h5>
        </form>
        <INPUT TYPE="BUTTON" VALUE="OK" TABINDEX="4" ONCLICK="window.location.href='/demo/ControllerServlet';">
    </body>
```

So sähe meine JSP aus…

Und bei dem anderen mit addItem funzt i-wie au nich… *grübel* ob ich heut einfach nur nen Blackout hab? ^^

Naja wie dem auch sei… i-wie stell ich mich grad blöder als ich bin.

Hier auch dazu mein JSP Code :


```
<form action="/demo/ControllerServlet" method="POST">
            <input type="hidden" name="command" value="GetDBappInfos">
            <select name="Applications" size="1" tabindex="1">
                <option>eShop
                <option>DWH
                <option>Datahub
                <option>Portal
                <option>t.b.d
                <option>Requester
                <option>TDS
                <option>BaanIV
                <option>ifts
            </select>

            <INPUT TYPE="SUBMIT" VALUE="OK" TABINDEX="2">
            <INPUT TYPE="BUTTON" VALUE="cancel" TABINDEX="3" ONCLICK="window.location.href='/demo/ControllerServlet';">
        </form>
```

So sieht die JSP “noch“ aus… immo schreib ich alles noch hardcoded rein.

Und mein Servlet Code wie folgt:


```
ResultSet rs = stmt.executeQuery("SELECT NAME FROM IFM_APPLICATIONS");
            //List<Application> liste = new ArrayList<Application>();
            while (rs.next()) {

                //Application app = new Application();
                //app.setName(rs.getString("NAME"));
                //liste.add(app);

                //request.setAttribute("Applications", liste);
            }

            stmt.close();
            rs.close();
```

Da habe ich halt ein wenig herum probiert, deswegen sind einige Zeilen auskommentiert, so war es halt vorher geregelt.

Ich hoffe ihr könnt mir schnell helfen… bin bissl in Zeitdruck =)

Viele Grüße

WaNNa


----------



## Atze (7. Apr 2010)

WaNNaBe hat gesagt.:


> Das ist mein ResultSet, und wie bekomm ich jetzt das was in dem RS steht in Readonly Text/Textarea Felder?
> 
> Du sagtest mit “append“, aber das steht bei mir nicht, oder ich habs mit der Syntax einfach nicht so.


 ups, hab textarea und combobox gelesen und dachte an Swing. geht ja hier wohl doch um ne html-textarea  *schäm* dann musst du dir die daten aus ner bean o.ä. holen und bei erzeugen der textarea und der combobox direkt zwischen die tags rausschreiben


```
<TEXTAREA COLS="45" ROWS="4" NAME="component" ID="3" READONLY>${bean.value}</TEXTAREA>
```

sorry, für die verwirrung


----------



## WaNNaBe (7. Apr 2010)

kay danke... und mein anderes problem? ^^ weißt du da auch rat?^^


----------



## Atze (7. Apr 2010)

was ist denn das andere?


----------



## WaNNaBe (7. Apr 2010)

das andere wäre das mit dem einfuegen gewesen... additem... aber det funzt ja bei mich net^^

also wie ich die combobox fülle mit den sachen aus der db^^

dein rat war ja jetzt fuer die textareas, wie ich diese fülle mit den DB einträgen


----------



## Atze (8. Apr 2010)

na ungefähr nach dem gleichen schema, du iterierst über eine collection (liste), resultset mit den einträgen für die combobox un schreibst für jeden eintrag ein <option> tag.


----------



## WaNNaBe (8. Apr 2010)

Soo.. ich bins mal wieder *gg*

Also, soweit so gut… 
Jetzt schauen alle JSP’s bei mir so aus:


```
<form action="/demo/ControllerServlet" method="POST">
            <input type="hidden" name="command" value="ErrorCodeFound">
        <h2>Error Code found!</h2>
        <h3>Application ID: <INPUT TYPE="TEXT" NAME="appSeries" ID="1" VALUE="${app}" READONLY></h3>
        <h3>Error Code Number: <INPUT TYPE="TEXT" NAME="errCodeNumber" ID="2" VALUE="${error}" READONLY></h3>
        <h3>*Component: <TEXTAREA COLS="45" ROWS="4" NAME="component" ID="3" READONLY VALUE="${component}"></TEXTAREA></h3>
        <h3>*Classification: <TEXTAREA COLS="45" ROWS="4" NAME="classification" ID="4" READONLY VALUE="${classification}"></TEXTAREA></h3>
        <h3>Description: <TEXTAREA COLS="45" ROWS="4" NAME="description" ID="5" READONLY VALUE="${description}"></TEXTAREA></h3>
        <h3>Solution: <TEXTAREA COLS="45" ROWS="4" NAME="solution" ID="6" READONLY VALUE="${solution}"></TEXTAREA></h3>
        <h3>URL 1: <INPUT TYPE="TEXT" NAME="url1" ID="7" READONLY VALUE="${url1}"></h3>
        <h3>URL 2: <INPUT TYPE="TEXT" NAME="url2" ID="8" READONLY VALUE="${url2}"></h3>
        <h3>URL 3: <INPUT TYPE="TEXT" NAME="url3" ID="9" READONLY VALUE="${url3}"></h3>
        <h5>* = max. 256 characters</h5>
        </form>
```

Und mein Servlet Code so:


```
rs3 = stmt.executeQuery("SELECT * FROM IFM_ERROR_CODES WHERE ERROR_NUMBER = " + myNumber + " AND APPLICATION_ID = " + appID);

                    while (rs3.next()) {
                        errorCodeDB = rs3.getString("ERROR_NUMBER");

                        int ecDB;
                        String ecDBF;
                        ecDB = Integer.parseInt(errorCodeDB);

                        DecimalFormat df2 = (DecimalFormat) DecimalFormat.getNumberInstance();
                        df2.applyPattern("0000");

                        appSeries = rs3.getString("APPLICATION_ID");
                        ecDBF = df2.format(ecDB);
                        component = rs3.getString("COMPONENT");
                        classification = rs3.getString("CLASSIFICATION");
                        description = rs3.getString("DESCRIPTION");
                        solution = rs3.getString("SOLUTION");
                        //url1 = rs3.getString("URL1");
                        //url2 = rs3.getString("URL2");
                        //url3 = rs3.getString("URL3");


                        request.setAttribute(appSeries, appSeries);
```

Ich weiß aber, das “request.setAttribute(appSeries, appSeries);“ so nicht richtig ist,

weil das 2te appSeries in dem Sinne nicht mein richtiges Object ist.

Wie sag ich meinem Netbeans nun, dass er das was in appSeries drin steht, in dem falle 
	
	
	
	





```
rs3.getString(“APPLICATION_ID“);
```
in das Feld … 

```
<h3>Application ID: <INPUT TYPE="TEXT" NAME="appSeries" ID="1" VALUE="${app}" READONLY></h3>
```

Schreiben soll? Ich kriegs noch net auffe Kette… Ich flipp noch ausssss… xD…


----------



## Atze (8. Apr 2010)

ok, also keine beans, keine jstl? also das ganze läuft ja in zwei richtungen

bspw.
1. vom formular zum servlet:


```
<input type="text" name="myName" />
```

hier kommt der vom user im formular eingegebene wert in dem request objekt als parameter "myname" an, raus bekommst du ihn mit 


```
request.getAttribute("myName");
```

2. vom servlet zur jsp

```
request.setAttribute("myName", "Kevin");
```

somit liegt der string "kevin" mit dem key "myName" im request

raus bekommst du ihn (als scriptlet-code) mit


```
<INPUT TYPE="TEXT" NAME="appSeries" ID="1" VALUE="<%=request.getAttribute("myName")%>" READONLY></h3>
```


----------

