request servletu

0

hej, mam do Was pytanie teoretyczne. Moja wiedza z zakresu jee jest dosc uboga, dlatego pytam by nie popelnic programistycznej gafy :)

jest sobie servlet. na poczatek niech ma metody doGet(request, response) i processRequest(request, response).

chodzi mi o obiekty request, response. bo one sa do komunikacji z przegladarka. czyli w request mamy dane np z formularza, zas do response dajemy dane do klienta.

w mojej metodzie doGet robie sobie jakies tam obliczenia.zas w metodzie processRequest umiescilam html ktory ma te obliczenia wyswietlic. zastanawialam sie jak przekazac wynik obliczen z doGet do processRequest. no i posluzylam sie request.setAttribute("wynik", jakas_wartosc);
nie jestem jednak przekonana czy to jest poprawne? no bo skoro request ma miec tylko dane od klienta to w sumie ja nie powinnam tam nic wrzucac? czy moze jednak jest to ok i moge tak robic?
czy do doGet powinno wrzucac sie kod html ktory prezentuje dane, czy powinno to byc w processRequest?

pozdrawiam i dzieki za sugestie,
misty

0

a to nie jest tak, ze w interfejsie HttpServlet masz doGet który sobie implementujesz a processRequest to po prostu Twoja metoda? Wtedy możesz sobie do niej przekazać co tylko Ci się podoba. Wydaje mi się, że processRequest jest wstawiene do wielu tutoriali o servletach i powoduje błędne skojarzenie, że to metoda z interfejsu.

0

hmm, wiesz co-ale to netbeans mi ja sam stworzyl. jak utworzylam sobie serwlet to on daje takie cialo:

public class NewServlet extends HttpServlet {
   

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            /* TODO output your page here
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet NewServlet</title>");  
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet NewServlet at " + request.getContextPath () + "</h1>");
            out.println("</body>");
            out.println("</html>");
            */
        } finally { 
            out.close();
        }
    } 

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }

}
0

bo zakłada, że dla doGeta i doPosta chcesz wykonywać to samo, więc wrzucił logikę w osobną metodę. Więc spokojnie możesz sobie z doGeta przekazać dane do processRequesta przez nowe parametry.

0

no dobra!

dzieki za pomoc :)

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