2.1 Kelas HttpServletRequest

Kebanyakan kerja servlet anda perlu lakukan berdasarkan maklumat yang diterima daripada permintaan. Objek bertanggungjawab untuknya HttpServletRequest, yang mana bekas akan dihantar ke servlet anda (kepada kaedah serviceatau kaedah doGet(), doPost()dsb.)

Objek ini mempunyai beberapa kaedah, kerana ia hanya menyimpan data permintaan, dan melaluinya anda boleh berinteraksi dengan bekas.

Kaedah boleh dibahagikan kepada 2 kumpulan besar:

  • Kaedah yang berkaitan dengan kebenaran pengguna
  • Kaedah untuk bekerja dengan data permintaan

Saya akan memberikan kaedah kebenaran pengguna dalam bentuk jadual, tetapi kami tidak akan menganalisisnya. Hakikatnya ialah mereka sangat jarang digunakan untuk memberi kebenaran kepada pengguna. Semua rangka kerja popular menggunakan pendekatan mereka sendiri yang jauh lebih maju untuk kebenaran.

Saya sepatutnya menyenaraikannya, tetapi sekali lagi, saya tidak pernah melihat sesiapa menggunakannya.

Kaedah Penerangan
1 authenticate(HttpServletResponse) Melaksanakan pengesahan respons
2 changeSessionId() Tukar ID sesi secara paksa
3 getAuthType() Mengembalikan jenis pengesahan yang digunakan: ASIC_AUTH, FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH
4 getRemoteUser() Mengembalikan log masuk pengguna
5 getRequestedSessionId() Mengembalikan ID Sesi pelanggan
6 getSession() Mengembalikan objek HttpSession
7 getUserPrincipal() Mengembalikan objek java.security.Principal
8 login(username, password) Melakukan log masuk pengguna
9 logout() Log keluar sesi pengguna

2.2 Meminta data

Kumpulan kedua kaedah adalah lebih menarik. Apakah jenis data yang kami ada dalam permintaan?

  • kaedah http
  • URI
  • Pilihan
  • Tajuk

Mari lihat kaedah yang tersedia untuk bekerja dengan mereka:

Kaedah Penerangan
1 getMethod() Mengembalikan kaedah HTTP: GET, POST, DELETE, ...
2 getRequestURI() Mengembalikan URI permintaan: http://codegym.cc/my/data
3 getRequestURL() Mengembalikan URL permintaan: http://codegym.cc/my/data
4 getQueryString() Mengembalikan Pertanyaan, iaitu segala-galanya selepas ?
5 getParameterMap() Mengembalikan senarai parameter pertanyaan
6 getParameter(String name) Mengembalikan nilai parameter dengan namanya
7 getContentType() Mengembalikan badan permintaan MimeType
8 getReader() Pembaca untuk membaca isi permintaan sebagai teks
9 getInputStream() InputStream untuk membaca badan permintaan sebagai bait[]
10 getSession() Mengembalikan objek HttpSession
sebelas getCookies() Mengembalikan tatasusunan objek Cookie[].
12 getHeaderNames() Mengembalikan senarai tajuk, nama sahaja
13 getHeader(String name) Mengembalikan nilai pengepala mengikut nama
14 getServletPath() Mengembalikan bahagian URL yang merujuk kepada servlet
15 getContextPath() Mengembalikan bahagian URI yang menentukan kandungan permintaan

Dan itu bukan semua kaedah ...

Walaupun selepas kami mempelajari protokol HTTP dan belajar cara bekerja dengan HttpClient, semuanya lebih kurang biasa di sini, bukan?

Mari kita tulis servlet yang boleh dihantar teks dan warna ke, dan ia akan mengembalikan halaman HTML dengan teks itu ditulis dalam warna yang ditentukan. Bagaimana anda menyukai idea itu?

Mari mulakan dengan menulis servlet kami:

public class ColorTextServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
          //write your code here
    }
}

Sekarang kita perlu mendapatkan teks dan warna yang diluluskan dari URI oleh pengguna:

public class ColorTextServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {

        // Getting the parameter “text” and “color” from request
        String text= request.getParameter("text");
        String color = request.getParameter("color");

    }
}

Dan akhirnya, anda perlu mengeluarkan teks sebagai HTML. Kami akan membincangkan perkara ini dalam kuliah seterusnya, tetapi di sini saya akan memberikan sedikit petunjuk:

public class ColorTextServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {

        // Get the "text" and "color" parameters from the request
        String text = request.getParameter("text");
        String color = request.getParameter("color");


        // Print the HTML as a response to the browser
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out =  response.getWriter();
        try {
            out.println("<html>");
            out.println("<head> <title> ColorTextServlet </title> </head>");
            out.println("<body>");
            out.println("<h1 style="color:"+color+">"+text+"</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }
}