• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java EE zapytanie DAO o ilosc tematów w danej kategori i przekazanie wartosci do JSP

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
312 wizyt
pytanie zadane 18 lipca 2017 w Java przez lewy Obywatel (1,260 p.)

WItam mam problem z wychwyceniem zapytania o ilosc wpisow w danej kategorii wyglada to tak:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <h1>Forum</h1>
    <table>
        <tr>
            <th>Temat</th>
            <th>Datat</th>
            <th>Autor</th>
        </tr>
        <c:forEach var="temat" items="${tematy}">
            <tr>
                <td>
                    <c:url var="url" scope="page" value="/temat">
                        <c:param name="id" value="${temat.id}"/>
                    </c:url>
                    <a href="${url}">${temat.tytul}</a>
                </td>
                <td><fmt:formatDate value="${temat.data}" dateStyle="short" timeStyle="short"/>
                <td>${temat.uzytkownik.login}</td>
            </tr>
        </c:forEach>    
    </table>
    <c:url value="/nowyTemat" var="urlNowyTemat" scope="page"/>
    <form action="${urlNowyTemat}">
        <input type="submit" value="Nowy temat"/>
    </form>
    <br/>
    <a href="wyloguj">Wyloguj</a><br/><br/>
    <c:forEach var="kategoria" items="${kategorie}">
            <tr>
                <td>

                    <input type="hidden" name="id" value="${kategoria.id}"/>

                    <c:url var="url" scope="page" value="/tematKategoria">
                        <c:param name="idd" value="${kategoria.id}"/>
                    </c:url>
                    <a href="${url}">${kategoria.nazwa}</a>--------------${tematyy}<br/><br/>   
                </td>
            </tr>
    </c:forEach>
</body>
</html>

jak widzicie zliczanie mialo by nastapic tutaj ${tematyy}

public List pobierzIloscTematowWKategori(String id){
            List tematy = this.em.createQuery("SELECT count(t) from Temat t where t.kategoria ="+id).getResultList();
            return tematy;
        }

tak wyglada zapytanie o ilosc tematow wiem wyglada kiepsko ale nie o to tu chodzi bo pobiera dane i zlicza prawidlowo ;

@WebServlet("/index")
public class IndexSerwlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        TematyDAO dao = (TematyDAO) request.getAttribute("tematyDAO");
        List<Temat> tematy = dao.pobierzTematy();
        request.setAttribute("tematy", tematy);
        KategoriaDAO dao1 = (KategoriaDAO) request.getAttribute("kategoriaDAO");
        List<Kategoria> kategorie = dao1.pobierzKategorie();
        request.setAttribute("kategorie", kategorie);

        String id = request.getParameter("id");
        List tematyy = dao.pobierzIloscTematowWKategori(id);
        System.out.print(id);
        System.out.print(tematyy);
        request.setAttribute("tematyy", tematyy);

        request.getRequestDispatcher("/WEB-INF/widok/index.jsp").forward(request, response);

        }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        doGet(request, response);
    }

}

powyzej jest servlet i jego zadaniem ma byc zliczenie czyli moje myslenie jest takie pobieram z ukrytego inputa co widzicie na JSP id kategori w postaci liczby ktora zostaje pobrana przes servlet skierowana do zapytania i pozniej otrzymuje wynik "request.setAttribute("tematyy", tematyy)" tylko jest problem z inputu nie pobiore wartosci poniewaz musial bym go wyslac za pomoca formularza a chce zeby robilo sie to dynamicznie przy otwarciu JSP i dynamicznie dla kazdej kategorii zliczanie tematow . Macie jakies pomysly ? Z góry dzieki

komentarz 18 lipca 2017 przez lewy Obywatel (1,260 p.)
przez* wkradla sie dosc intrygujaca literówka sory :D

1 odpowiedź

0 głosów
odpowiedź 18 lipca 2017 przez Jonki Dyskutant (8,180 p.)
wybrane 18 lipca 2017 przez lewy
 
Najlepsza
Dane z formularza możesz przesłać za pomocą Ajaxa i wtedy nie będzie konieczności przeładowywania strony. http://kursjs.pl/kurs/ajax/ajax.php Poza tym uważaj, aby ktoś nie wysyłał poleceń SQL.
komentarz 18 lipca 2017 przez lewy Obywatel (1,260 p.)
co masz na mysli aby ktos nie wysylal polecen SQL ? zeby lepiej zrobic to np w  jezyku  JPQL ?
komentarz 18 lipca 2017 przez lewy Obywatel (1,260 p.)
public List pobierzIloscTematowWKategori(String id){
			List tematy = this.em.createQuery("SELECT count(t) from Temat t where t.kategoria = :id").setParameter("id", id).getResultList();
			return tematy;
		}

 

 

komentarz 18 lipca 2017 przez Jonki Dyskutant (8,180 p.)
Osoba obeznana w temacie może wysłać polecenie SQL, które zostanie dodane do tego Twojego i będzie nieciekawie. Możesz się przed tym zabezpieczyć parametryzując polecenie.

 

EDIT: A ubiegłeś mnie. Elegancko. Właśnie o to mi chodziło.
komentarz 18 lipca 2017 przez lewy Obywatel (1,260 p.)
Dzieki za pomoc !

Podobne pytania

0 głosów
1 odpowiedź 503 wizyt
pytanie zadane 25 lipca 2017 w Java przez lewy Obywatel (1,260 p.)
+1 głos
0 odpowiedzi 723 wizyt
pytanie zadane 22 czerwca 2017 w Java przez Mariusz Dobrogosz Nowicjusz (180 p.)
+1 głos
3 odpowiedzi 788 wizyt

93,440 zapytań

142,431 odpowiedzi

322,678 komentarzy

62,802 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...