[JSP] request.getParametr - a co jeśli nie ma?

0

Mam następujący problem :
Mam stronę szukaj.jsp na której umieszczam przycisk szukania:

<form method="post" action="szukaj.jsp"><input type="text" name="szukaj_text"> <input type="submit" value="wyszukaj" name="szukaj"></form>

oraz kod strony :

<%
 if(request.getParametr("szukaj").equals("wyszukaj"))
{
        ResultSet rs = null;
        String tekst = request.getParameter("szukaj_text");
        String slowa[] = tekst.split("\\s");
        String zapytanie = "";
        int i = 0; // jezeli pierwszy przebieg to bez or na poczatku
        for(String slowo:slowa)
                {
                    if(i==0){
                       zapytanie   = " tytul LIKE '%" + slowo + "%' OR tresc LIKE '%" + slowo +"%' ";
                    }else{
                       zapytanie += " or tytul LIKE '%" + slowo + "%' OR tresc LIKE '%" + slowo +"%' ";
                    }
                    i++;
                }

        String sql = "select * from tb_ogloszenia WHERE " + zapytanie;
        out.print(sql);
 try{

      narzedzia.BazaMysql bm = new BazaMysql();

     try {

            rs = bm.executeQuery(sql);
            rs.beforeFirst();

        while (rs.next())
          {
            String tytul = rs.getString("tytul");
            String tresc = rs.getString("tresc");

          }
          }
}
}
 %>

Kod ten wyrzuca mi wyjątek o braku takiego parametru jak "szukaj" co w sumie wydaje się dosyć logiczne.
Mam co najmniej dwa pomysły rozwiązania tego problemu (tj. - wchodzić na ta stronę zawsze przez przycisk szukaj z inną wartością która nie będzie wchodzić w pętle , lub szukanie zrobić na oddzielnej stronie na którą da się wejść tylko tym przyciskiem).
Lecz mimo iż jestem bardzo początkującym "programistą" , wydaje mi się , że oba sposoby są co najmniej "nieeleganckie".

Czy da się to jakoś "ładnie załatwić" ?

0

Jesli cos jest nieelegancki, to na pewno stronka JSP ze scriptletami (kodem), to powinno sie znalezc w servlecie. Zrob stronke HTML, ktora kieruje do servleta (atrybut action), ktory zbiera wyniki zapytania, wklada do jakiejs listy i podje ja do stronki JSP ktora jest widokiem, niczym wiecej.
A jesli koniecznie chcesz miec wszystko w jednej stronce JSP z kodem javy itp to przeciez zawsze mozesz zrobic:

  1. pobierz wartosc parametru "szukaj"
  2. jesli null, to rob costam
  3. jesli "wyszukaj", to lecisz z zaputaniem
    ale to brzydkie.
0

Mhm, postaram sie to wiec przerobić tak jak opisałes, ale ten drugi sposób nie zadziała bo już przy pierwszym punkcie wywali mi wyjątek jeżeli nie znajdzie go.

0

<%
String param = request.getParameter("szukaj");
if (param == null) {
// costam jesli null, np blad dla uzytkownika
} else {
// twoj kod na laczenie z bd
}
%>

Tak powinno zadzialac.

1 użytkowników online, w tym zalogowanych: 0, gości: 1