CodeGym/Java kursus/Modul 3/Formgivning af Servlet-svar

Formgivning af Servlet-svar

Ledig

3.1 HttpServletResponse klasse

Efter at have kaldt service()din servlet-metode, genererer webcontaineren et svar til klienten baseret på HttpServletResponse. Så hvis du på en eller anden måde vil påvirke svaret til klienten, så bør du ændre dette objekt.

Serversvaret består af tre dele:

  • Statuslinje (for eksempel: 200 OK)
  • Overskrifter
  • Reaktionsorgan

Og klassemetoder HttpServletResponseer også opdelt i 3 grupper? Næsten:

Metoder Beskrivelse
1 void setStatus(int sc) Indstiller svarstatuskoden.
2 void sendError(int sc) Sender en fejl til klienten med den angivne kode.
3 void sendError(int sc, String msg) Sender en fejl med den angivne kode og en besked til klienten.
4 void addHeader(String name, String value) Tilføjer en overskrift til listen over svaroverskrifter.
5 void setHeader(String name, String value) Ændrer overskriften på listen over svaroverskrifter.
6 boolean containsHeader(String name) Kontrollerer, om overskriften allerede findes.
7 void addCookie(Cookie cookie) Tilføjer en cookie til svaret.
8 void sendRedirect(String location) Omdirigerer klienten til en anden URL.
9 String encodeRedirectURL(String url) Koder den angivne URL til brug i sendRedirect-metoden.
10 String encodeURL(String url) Koder den angivne URL, inklusive sessions-id'et.
elleve void setContentType(String type) Indstiller MimeType for resultatet.
12 void setContentLength(int len) Indstiller længden af ​​svarlegemet.
13 void setCharacterEncoding(String charset) Indstiller svarkodningssættet.
14 void setBufferSize(int size) Indstiller bufferstørrelsen for svarlegemet.
15 boolean isCommitted() Kontrollerer, om bufferen allerede er skrevet til svaret.
16 void flushBuffer() Skriver indholdet af bufferen til svaret.
17 void reset() Nulstiller alle data, der er gemt i bufferen, overskrifter og svarkoder.
18 void resetBuffer() Rydder svarbufferen.

Metoderne her er ret trivielle. Men jeg vil give dig et par højdepunkter nedenfor.

Buffer . Din servlets svar skrives til en buffer, ikke umiddelbart sendt til brugeren. Derfor kan du på et tidspunkt (hvis der f.eks. opstår en fejl) nulstille (slette) alt, hvad der er skrevet til bufferen. Du kan endda kalde reset()-metoden og slette ikke kun indholdet af bufferen, men også overskrifterne med svarkoden.

3.2 omdirigering()

Det andet vigtige punkt er omdirigeringen. Hvis din servlet beslutter at omdirigere klienten til en anden URL, så skal du på en eller anden måde sende denne URL til klienten. Dette kan gøres ved hjælp af sendRedirect.

Men der er en vigtig nuance. URI'en kan indeholde et bredere udvalg af tegn end tilladt i svarteksten. Derfor skal URL'en først kodes til et gyldigt tegnsæt, før metoden kaldes sendRedirect(). Der er en speciel metode til dette encodeRedirectURL(String url). Brug det.

Eksempel på omdirigering:

public class RedirectServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String newUrl = "http://google.com?q=Learn to google!";
        String redirectUrl = response.encodeRedirectURL(newUrl);
        response.sendRedirect(redirectUrl);
    }
}

3.3 getWriter() metode

Og nu vil vi lære, hvordan vi skriver vores tekst som et svarlegeme. For at gøre dette har klassen HttpServletResponseen speciel metode getWriter(), der returnerer et objekt PrintStream. Hvis nogen har glemt det, er dette felttypen med navnet System.out.

For at skrive noget tekst som et servlet-svar skal du bruge:

  • Hent PrintStream-objektet ved at kalde response.getWriter().
  • Skriv hvad du mener er nødvendigt til PrintStream-objektet (alle data vil blive skrevet til bufferen).
  • Send bufferen til brugeren ved at kalde metoden close()på PrintStream.

Lad os skrive en servlet, der tilføjer to tal aog breturnerer resultatet til brugeren:

public class CalculatorServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
         // Getting the parameter “a” and “b” from request
        String a = request.getParameter("a");
        String b = request.getParameter("b");

        try {
            // Convert strings to numbers and calculate sum
            int sum = Integer.parseInt(a) + Integer.parseInt(b);

            // Print HTML as a response for browser
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();

            out.println("<html>");
            out.println("<head> <title> CalculatorServlet </title> </head>");
            out.println("<body>");
            out.println("<h1> Sum == " + sum + "</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }
}
Kommentarer
  • Populær
  • Ny
  • Gammel
Du skal være logget ind for at skrive en kommentar
Denne side har ingen kommentarer endnu