Nadpisanie metody

Nadpisanie metody
FB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0

Mam utworzyć klase, która nadpisze metodę contextInitialized. Jej celem ma być zapis przykładowych książek, które są dostępne w bibliotece do kontekstu aplikacji. Dobrze to zrobiłem? Z góry dzięki za pomoc.

Kopiuj

@WebListener
public class LibraryContextServeletListener implements ServletContextListener {
    
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        Book k1 = new Book("tytul1", "Adam Mickiewicz", 2010);
        Book k2= new Book("tytul2", "Janusz Nowak", 2002);
        Book k3= new Book("tytul3", "Jan Kowalski", 2005);
    }
    

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
7

A ty widze dalej swoje xD
Nie, to co napisałeś nie ma nic wspólnego z tym co miałeś zrobić. Utworzyleś 3 lokalne zmienne, ktore znikną po wykonaniu tej metody. Pisałem to juz raz, powtórzę drugi: nie umiesz programować i nie znasz javy i serio nie ma sensu nawet próbować rozwiązywać zadań z servletów dopóki tego nie zmienisz.

BraVolt
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 2918
1
Shalom napisał(a):

Pisałem to juz raz, powtórzę drugi: nie umiesz programować i nie znasz javy i serio nie ma sensu nawet próbować rozwiązywać zadań z servletów dopóki tego nie zmienisz.

Skomentuję stopką :) * "Autora nie znam i nawet nie kojarzę" I nie mam na myśli pisania pod nickiem ;)*

FB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0

Chyba sie mi udało. Tak to powinno być? Nie wiem tylko jak to wyświetlić potem w servlecie za pomoca metody toString z klasy Ksiazka.

Kopiuj

@WebListener
public class Listener implements ServletContextListener {
    
    @Override
        public void contextInitialized(ServletContextEvent servletContextEvent) {
    	
        ServletContext ctx;
        ctx = servletContextEvent.getServletContext();
    	
    	Book k= new k("aa", "vdfv", "sdf");
        ctx.setAttribute("Ksiazka", k.);
    }

metoda to String() z klasy Ksiazka

Kopiuj
@Override
    public String toString(){
          return this.tytul+" - "+this.autor+" - "+this.rok;
    }

Aktualnie wyswietla mi sie takie cos:

Kopiuj
com.mycompany.mavenproject3.Dashboard@44d428cb
LA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 112
0

No, ale Tobie się tu wyświetla jakiś Dashboard, a nie Książka

FB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0

Wywołanie w servlecie wygląda tak:

Kopiuj
String aaa = this.toString();
out.println(aaa);

i wyświetla się:

Kopiuj
com.mycompany.mavenproject3.Dashboard@44d428cb
LA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 112
1

No skoro używasz tego w servlecie... To chyba nie wiesz co robi słowo kluczowe this.

FB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0
lavoholic napisał(a):

No skoro używasz tego w servlecie... To chyba nie wiesz co robi słowo kluczowe this.

Coś źle wkleiłem wyżej. Powinno być raczej tak. z tym, że to nie działa :(

Kopiuj
Book aaa = null;
String a;
a = aaa.toString();
out.println(a);

LA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 112
0

Co, ale co Ty teraz robisz? Na null wykonujesz toString()?

LA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 112
0

No utwórz obiekt? Np. tak jak tu Book k= new k("aa", "vdfv", "sdf");
Nie wiem, nie znasz podstaw Javy, a zabierasz się za Servlety..

E9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 216
2

Wyślij proszę CAŁY kod który masz, gdzie Ty w ogóle co wołasz, bo nie bardzo mogę się połapac w tym co Ty chcesz zrobić :)

I z ciekawości, która uczelnia ma tak genialny kurs Javy?

FB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0

No i mam utworzyć klase Listener nadpisującą metode contextInitialized(), której celem bedzie zapis ksiazek dostępnych w bibliotece do konkekstu aplikacji. Później w servlecie wyświeltić te książki z kontekstu aplikacji poprzez wywołanie metody toString()

Kopiuj
@WebListener
public class Listener implements ServletContextListener {
    
    @Override
        public void contextInitialized(ServletContextEvent servletContextEvent) {
    	
        ServletContext ctx;
        ctx = servletContextEvent.getServletContext();   	

    	Ksiazka k= new Ksiazka("Pan Tadeusz");
        ctx.setAttribute("Ksiazka", k);
    }
}

Kopiuj

public class Ksiazka{
    String tytul; 
    
    Ksiazka(String tytul){
        this.tytul = tytul;
    }
    
   @Override
    public String toString(){
          return this.tytul;
    }

I tutaj w Servlecie muszę wyświetlić te dane. Za pomocą metody to String(), ale nie wiem jak.

Kopiuj
@WebServlet(name = "Servlet", urlPatterns = {"/Servlet"})
public class Servlet extends HttpServlet {

     protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {
            /* TODO output your page here. You may use following sample code. */
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet Servlet </title>");            
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet Servlet at " + request.getContextPath() + "</h1>");
            out.println("</body>");
            out.println("</html>");

       }
    }
}
E9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 216
2

Strzelam, bo nigdy czegoś takiego nie robiłem, ale wewnątrz processRequest() coś takiego? System.out.println(request.getServletContext().getAttribute("Ksiazka"))

obscurity
  • Rejestracja: dni
  • Ostatnio: dni
0

Czy ten kod który piszesz ma Twoim zdaniem jakiś sens czy próbujesz ułożyć program z losowych poleceń? Która linijka z tych:

Kopiuj
String aaa = this.toString();
out.println(aaa);

będzie według Ciebie wyświetlać książki zapisane w kontekście?
Ten temat wygląda w tej chwili trochę jak żart a ten kod wyżej

Kopiuj
Book k= new k("aa", "vdfv", "sdf");
ctx.setAttribute("Ksiazka", k.);

nawet nie ma szans się skompilować

ĆK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 59
0

Musisz nadpisać equals() w k. Zadziała, zawsze działa.
I przestań używać NetBeans. Zwykły Notepad++ i wymiatasz.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.