Cituji Oto Buchta <[EMAIL PROTECTED]>:

2) Pro nektere veci je JSTL SQL jen tezko prekonatelne. Pokud pujde napr. o
vypsani obsahu databazove tabulky, jen tezko budeme hledat elegantnejsi
reseni, nez je toto:

Elegantnejsich reseni je kupa. Protoze tento vysledek tezko bude pro jine nez
administratorske ucely, radil bych spis pouzit nejaky DB-oriented nastroj.
Toto ma mnoho nevyhod - napriklad je to napsane pouze pro konkrentni podobu
konkretni tabulky, takze pro kazdou tabulku musis psat novou JSP stranku ;-)

Neni lepsi rovnou pouzit <form><input type="text" name="sqlquery"></form> ?

Navic proc quli necemu takovermu spoustet cely aplikacni server?

A nebo proc uz rovnou nejit do
#!/bin/sh

mysql -t -u root -p root_passwd -r --batch -e select_z_tabulky_rates.sql ExchangeDatabase


Jak jsem psal, zadani bylo "vypsat tabulku smennych kurzu". Tato tabulka bude soucast webove prezentace smenarny. Zakaznik si tedy bude moci na webu zjistit, za kolik muze nakoupit napr. danske koruny. Krome teto dynamicke stranky bude prezentace obsahovat jeste nekolik statickych stranek. Takze zadna administrace.
Doufam, ze ted je zadani jasnejsi.


    <sql:setDataSource dataSource="jdbc/ExchangeDS"/>
    <sql:query var="rates">
        SELECT MENA1, MENA2, KURZ FROM KURZY
    </sql:query>
    <table border="1" cellpadding="5" cellspacing="5">
        <c:forEach var="rate" items="${rates.rows}">
            <tr>
              <td><c:out value="${rate.MENA1}"/></td>
              <td><c:out value="${rate.MENA2}"/></td>
              <td><c:out value="${rate.KURZ}"/></td>
            </tr>
        </c:forEach>
    </table>

A ze to neni v souladu s MVC? Na to odpovidam otazkou "No a?". Navrhove
vzory maji smysl tam, kde neco prinaseji. Zavedeni samostatneho controlleru
by tady prineslo jen nabobtnani aplikace, ktere je pri takto jednoduchem
zadani (tj. "vypsat tabulku smennych kurzu"), neopodstatnele.

Musim se priznat, ze zadani "Vypis tabulku smennych kurzu" mi prijde jako
zadani neceho, co neodpovida dle definice vlastnosti algoritmu,
tedy univerzalnost ;-) No nic.

:-)

Odmitat toto reseni je jako prohlasit o kalkulacce, ktera ma jen zakladni
operace +, -, *, /, ze je spatna a pritom pominout ucel pouziti. Jestlize
tuto kalkulacku chcete pouzivat ve smenarne pro prepocet men, tak je
zbytecne po ni pozadovat napr. statisticke funkce ci vykreslovani grafu.

No myslim, ze toto zrovna nebyl dobry priklad. At uz je kalkulacka sebeblbejsi,
ten controller v sobe ma ;-) Nedokazu si predstavit, ze by nasobicka byla
primo zadratovana v radici displaye a ze by umela sice nasobit, ale jenom suda
cisla s prvocislem ;-)

Zkusim jiny priklad, treba to z neho bude jasnejsi: je to jako rici o autu, ktere nema klimatizaci, ze je spatne, bez ohledu na to, kde a k cemu jej chceme pouzivat. (Napoveda: nehledej v aute ani controller ani view).

Jave zdar,

Z.T.
--
Zdenek Tronicek
Department of Computer Science and Engineering
Prague                   tel: +420 2 2435 7410
http://cs.felk.cvut.cz/~tronicek

Odpovedet emailem