permintaan pelanggan JSP
Apabila penyemak imbas meminta halaman web, ia menghantar satu siri maklumat kepada pelayan rangkaian yang tidak boleh dibaca secara langsung kerana maklumat itu dihantar sebagai sebahagian daripada pengepala HTTP. Anda boleh merujuk protokol HTTP untuk mendapatkan maklumat lanjut.
Jadual berikut menyenaraikan beberapa kandungan penting pengepala maklumat sebelah penyemak imbas Anda akan sering melihat maklumat ini dalam pengaturcaraan rangkaian masa hadapan:
Maklumat | Penerangan |
---|---|
Terima | Menentukan jenis MIME yang boleh dikendalikan oleh penyemak imbas atau pelanggan lain. Nilainya biasanya imej/png atau imej/jpeg |
Accept-Charset | Menentukan set aksara untuk digunakan oleh penyemak imbas. Contohnya, ISO-8859-1 |
Terima-Pengekodan | Nyatakan jenis pengekodan. Nilainya biasanya gzip atau compress |
Terima-Bahasa | Tentukan bahasa pilihan pelanggan Servlet akan memberi keutamaan untuk mengembalikan set hasil dalam bahasa semasa, jika servlet menyokong bahasa ini. Contohnya, en, en-us, ru, dsb. |
Keizinan | Kenal pasti pengguna yang berbeza apabila mengakses halaman web yang dilindungi kata laluan |
Sambungan | Menunjukkan sama ada klien boleh mengendalikan sambungan berterusan HTTP. Sambungan berterusan membolehkan klien atau penyemak imbas mengambil berbilang fail dalam satu permintaan.Keep-Alive bermaksud mendayakan sambungan berterusan |
Panjang Kandungan | Hanya terpakai untuk permintaan POST, menunjukkan bilangan bait data POST |
Kuki | Kembalikan kuki yang dihantar sebelum ini ke penyemak imbas ke pelayan |
Hos | Nyatakan nama hos dan nombor port dalam URL asal |
Jika-Diubahsuai-Sejak | Menunjukkan bahawa pelanggan hanya memerlukan halaman web ini jika ia telah diubah suai pada tarikh yang ditetapkan. Pelayan menghantar kod 304 kepada pelanggan, menunjukkan bahawa tiada sumber yang dikemas kini |
Jika-Tidak Diubah-Sejak | Bertentangan dengan If-Modified-Since, operasi akan berjaya hanya jika dokumen tidak diubah suai selepas tarikh yang ditentukan |
Perujuk | Menandai URL halaman yang dirujuk. Contohnya, jika anda berada di halaman 1 dan kemudian klik pada pautan ke halaman 2, maka URL halaman 1 akan disertakan dalam pengepala permintaan penyemak imbas untuk halaman 2 |
Ejen Pengguna | Digunakan untuk membezakan permintaan yang dihantar oleh penyemak imbas atau pelanggan yang berbeza dan mengembalikan kandungan yang berbeza kepada jenis penyemak imbas yang berbeza |
Kelas HttpServletRequest
objek permintaan ialah contoh kelas javax.servlet.http.HttpServletRequest. Setiap kali pelanggan meminta halaman, enjin JSP menjana objek baharu untuk mewakili permintaan tersebut.
Objek permintaan menyediakan satu siri kaedah untuk mendapatkan pengepala maklumat HTTP, termasuk data borang, kuki, kaedah HTTP, dsb.
Seterusnya, kami akan memperkenalkan beberapa kaedah yang biasa digunakan dalam pengaturcaraan JSP untuk mendapatkan pengepala maklumat HTTP. Sila lihat jadual di bawah untuk butiran:
Nombor siri | Kaedah& Penerangan |
---|---|
1 | Kuki[] getCookies() |
2 | Enumeration getAttributeNames() |
3 | Enumeration getHeaderNames() |
4 | Enumeration getParameterNames() |
5 | HttpSession getSession() |
6 | HttpSession getSession(cipta boolean) |
dikembalikan. 7 | Locale getLocale() |
8 | Objek getAttribute(Nama rentetan) |
9 | ServletInputStream getInputStream() |
10 | String getAuthType() |
11 | String getCharacterEncoding() |
12 | String getContentType() |
13 | String getContextPath() |
14 | String getHeader(String name) |
15 | String getMethod() |
16 | String getParameter(String name) |
17 | String getPathInfo() |
18 | String getProtocol() |
19 | String getQueryString() |
yang terkandung dalam URL permintaan ini 20 | String getRemoteAddr() |
21 | String getRemoteHost() |
22 | String getRemoteUser() |
. 23 | String getRequestURI() |
24 | String getRequestedSessionId() |
25 | String getServletPath() |
26 | String[] getParameterValues(Nama rentetan) |
27 | boolean isSecure() |
28 | int getContentLength() |
29 | int getIntHeader(Nama rentetan) |
30 | int getServerPort() |
Contoh pengepala HTTP
Dalam contoh ini, kami akan menggunakan kaedah getHeaderNames() kelas HttpServletRequest untuk membaca pengepala HTTP. Kaedah ini mengembalikan maklumat pengepala permintaan HTTP semasa dalam bentuk penghitungan.
Selepas mendapatkan objek Enumeration, gunakan kaedah standard untuk melintasi objek Enumeration, gunakan kaedah hasMoreElements() untuk menentukan masa untuk berhenti dan gunakan kaedah nextElement() untuk mendapatkan nama setiap parameter.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.io.*,java.util.*" %> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <h2>HTTP 头部请求实例</h2> <table width="100%" border="1" align="center"> <tr bgcolor="#949494"> <th>Header Name</th><th>Header Value(s)</th> </tr> <% Enumeration headerNames = request.getHeaderNames(); while(headerNames.hasMoreElements()) { String paramName = (String)headerNames.nextElement(); out.print("<tr><td>" + paramName + "</td>\n"); String paramValue = request.getHeader(paramName); out.println("<td> " + paramValue + "</td></tr>\n"); } %> </table> </body> </html>
Akses main.jsp, anda akan mendapat keputusan berikut:
Anda boleh mencuba kaedah lain kelas HttpServletRequest dalam kod di atas.