Tindakan JSP yang menggunakan konstruk dalam sintaks XML untuk mengawal tingkah laku servlet engine. Kami akan mengetahui lebih terperinci mengenai pelbagai elemen Tindakan JSP seperti permintaan pelanggan, respons pelayan, kod status HTTP.
Dalam tutorial ini, anda akan belajar-
- Permintaan Pelanggan JSP
- Respons Pelayan JSP
- Kod Status HTTP JSP
Permintaan Pelanggan JSP
- Apabila halaman web diminta, ia akan menghantar maklumat ke pelayan web di tajuk HTTP.
- Kita boleh menggunakan maklumat ini menggunakan objek HTTPServletRequest.
- Maklumat yang dihantar oleh penyemak imbas disimpan dalam tajuk permintaan HTTP permintaan.
- Kami menggunakan tajuk yang berbeza untuk mengirim maklumat ke objek permintaan.
Tajuk yang berbeza dijelaskan di bawah:
Kepala | Penerangan | Contohnya |
---|---|---|
Terima | Ini menentukan jenis MIME yang dapat ditangani oleh penyemak imbas atau pelanggan lain | Gambar / png atau gambar / jpeg.webp |
Terima-charset | Ia menggunakan set watak yang digunakan oleh penyemak imbas untuk memaparkan maklumat | ISO-8859-1 |
Terima- Pengekodan | Ini menentukan jenis pengekodan yang dikendalikan oleh penyemak imbas | Gzip atau kompres |
Terima-bahasa | Ini menentukan bahasa yang ditentukan pelanggan | En, en_us |
Kebenaran | Header yang digunakan oleh klien ketika cuba mengakses halaman web yang dilindungi kata laluan | |
Sambungan | Ini menunjukkan sama ada pelanggan dapat menangani sambungan HTTP yang berterusan (penyemak imbas dapat mengambil beberapa fail) | Terus hidup |
Panjang kandungan | Berlaku untuk menghantar permintaan. Ia memberikan ukuran data pos bait | |
Kuki | Mengembalikan kuki ke pelayan (yang sebelumnya dihantar ke penyemak imbas) | |
Tuan rumah | Menentukan hos dan port URL asal | |
Sekiranya diubahsuai sejak | Ini menunjukkan bahawa ia hanya memerlukan halaman jika telah diubah atau diubah | |
Sekiranya tidak diubah suai sejak | Ini menunjukkan bahawa ia memerlukan halaman hanya jika belum diubah atau diubah | |
Perujuk | Menunjukkan URL halaman URL rujukan | |
Ejen pengguna | Mengenal pasti permintaan penyemak imbas atau pelanggan |
Kaedah berikut digunakan untuk membaca tajuk HTTP di halaman JSP:
- Cookie [] getCookies () - mengembalikan array yang mengandungi objek cookie yang telah dihantar oleh pelanggan
- Enumeration getAttributeNames () - mengandungi penghitungan nama atribut untuk permintaan
- Enumeration getHeaderNames () - mengandungi penghitungan nama header.
- Enumeration getParameterNames () - mengandungi penghitungan mendapatkan nama parameter dalam permintaan.
- HttpSessiongetSession () - mengembalikan sesi semasa yang berkaitan dengan permintaan atau jika tidak mempunyai sesi maka ia akan membuat yang baru.
- Locale getLocale () - mengembalikan tempat pilihan yang akan diterima oleh pelanggan. Ia telah diberikan kepada respons. Secara lalai, nilai akan menjadi lokasi pelayan lalai.
- Objek getAttribute (String name) - mengembalikan nilai atribut bernama sebagai objek.
- ServletInputStreamgetInputStream () - mengambil semula permintaan sebagai data binari.
- String getAuthType () - mengembalikan nama skema pengesahan untuk melindungi servlet
- String getCharacterEncoding () - mengembalikan nama pengekodan aksara yang digunakan dalam badan permintaan.
- String getContentType () - mengembalikan jenis permintaan MIME.
- String getContextPath () - mengembalikan bahagian permintaan URI menunjukkan jalan konteks URI
- String getHeader (String name) - mengembalikan tajuk permintaan sebagai rentetan
- String getMethod () - mengembalikan nama kaedah HTTP seperti GET, POST
- String getParameter (String name) - mengembalikan parameter permintaan sebagai rentetan.
- String getPathInfo () - mengembalikan maklumat laluan yang berkaitan dengan URL
- String getQueryString () - mengembalikan rentetan pertanyaan yang dikaitkan dengan URL permintaan
- String getServletPath () - mengembalikan bahagian URL permintaan yang memanggil JSP
- String [] getParameterValues (String name) - mengembalikan array objek rentetan yang mengandungi nilai yang diminta parameter
Contoh:
Dalam contoh di bawah, kami menggunakan kaedah yang berbeza menggunakan objek permintaan
<% @ bahasa halaman = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%><% @ halaman import = "java.io. * java.util. *"%>Permintaan Pelanggan Guru JSP Permintaan Pelanggan Guru JSP
<%HttpSession gurusession = request.getSession ();out.print (" tajuk guru tajuk guru Nilai ");Lokasi gurulocale = request.getLocale ();out.print (" Nama Sesi adalah " + gurusession + " td.> ");Jalur rentetan = request.getPathInfo ();out.print (" Nama Lokal adalah " + gurulocale + " ");Rentetan lpath = request.get ();out.print (" Nama Path adalah " + path + " ");String servername = request.getServerName ();out.print (" Laluan konteks adalah " + lipath + " ");int portname = request.getServerPort ();out.print (" Nama Pelayan adalah " + servername + " ");Penghitungan hnames = request.getHeaderNames ();sementara (hnames.hasMoreElements ()) {String paramName = (String) hnames.nextElement ();out.print (" Pelabuhan Pelayan adalah " + nama port + " ");}%> " + paramName + " ");String paramValue = request.getHeader (paramName);out.println ("" + paramValue + "
Penjelasan kod:
Baris Kod 17: Dengan menggunakan objek permintaan, kita mendapatkan objek sesi dari sesi tersebut, dan kita mendapatkan nilai objek dari sesi tersebut
Baris Kod 19: Dengan menggunakan objek permintaan, kita mendapatkan lokasi sesi tertentu i.een_US untuk JSP itu.
Baris Kod 21: Dengan menggunakan objek permintaan, kami mendapatkan maklumat jalan untuk JSP itu. Dalam kes ini, tidak sah kerana tidak ada jalan untuk URL yang disebutkan.
Baris Kod 23: Dengan menggunakan objek permintaan, kita mendapatkan jalur konteks, iaitu jalur akar
Baris Kod 25: Dengan menggunakan objek permintaan, kami mendapat nama pelayan.
Baris Kod 27: Dengan menggunakan objek permintaan, kita mendapatkan port pelayan.
Baris Kod 29-35: Dengan menggunakan objek permintaan, kami mendapatkan nama header yang keluar sebagai penghitungan, dan oleh itu kami mendapat semua nilai header dalam nama header.
Dalam ini, kami mendapat semua nilai tajuk sebagai kuki, hos, sambungan, terima bahasa, terima pengekodan.
Apabila anda melaksanakan kod di atas, anda mendapat output berikut:
Keluaran :
Kami mendapat rangkaian nilai seperti nama sesi, nama tempat, nama jalan, nama pelayan, nama port, host, jalan konteks dan semua nilai tajuk JSP itu.
Respons Pelayan JSP
- Apabila permintaan diproses dan kemudian tindak balas dihasilkan dari pelayan web. Ia terdiri daripada baris status, tajuk respons, baris kosong dan dokumen.
- Ia adalah objek HTTPServletResponseclass, yang merupakan objek tindak balas.
- Garis status adalah versi HTML.
Tajuk respons disebutkan di bawah:
Kepala | Penerangan |
---|---|
Benarkan | Ini menentukan kaedah permintaan seperti GET, POST yang diminta oleh pelayan |
Kawalan cache | Dokumen jawapan boleh dicache. Ia boleh bersifat awam, peribadi dan tanpa cache. Tidak ada cache yang menentukan bahawa dokumen tidak boleh disimpan dalam cache |
Sambungan | Ini memberi arahan sama ada penyemak imbas harus menggunakan ConnectionHTTP yang tersimpan atau tidak. Nilai tutup menunjukkan bahawa penyemak imbas tidak boleh menggunakan berterusan dalam HTTPConnections dan "terus-hidup" bermaksud menggunakan sambungan berterusan |
Kandungan-pelupusan | Untuk bertanya kepada pengguna sama ada menyimpan tindak balas ke cakera atau tidak |
Pengekodan kandungan | Halaman mesti dikodkan semasa penghantaran |
Panjang kandungan | Bilangan bait dalam tindak balas |
Jenis kandungan | Ia menentukan jenis tindak balas MIME |
Tamat tempoh | Menentukan sampai bila kandungan harus dianggap ketinggalan zaman dan tidak boleh disimpan dalam cache |
Terakhir diubah suai | Ini menunjukkan bila dokumen terakhir diubah |
Lokasi | Ini harus disertakan dengan semua respons yang mempunyai kod status 300 sebagai kod status |
Segarkan | Ini menentukan cara mencari halaman yang dikemas kini. |
Cuba semula | Ia dapat digunakan dengan respons 503 untuk memberitahu pelanggan tentang seberapa cepat ia dapat mengulangi permintaan |
Tetapkan kuki | Menentukan kuki yang berkaitan dengan halaman |
Berikut adalah kaedah menggunakan objek tindak balas:
- String encodeRedirectURL (String URL) - mengekod URL dalam kaedah redirectURL.
- String encodeURL (String URL) - menyandikan URL dengan memasukkan ID sesi.
- Boolean mengandungHeader (String name) - mengandungi header di JSP atau tidak.
- Boolean isCommited () - tindak balas telah dilakukan atau tidak.
- Batal addCookie (Cookie cookie) - menambah cookie pada tindak balas
- Void addDateHeader (String name, String value) - menambah nama dan nilai tarikh header tindak balas
- Void addHeader (String name, String value) - menambahkan header respons dengan nama dan nilai
- Void addIntHeader (String name, int value) - menambah header respons dengan nama dan nilai integer
- Void flushBuffer () - memaksa kandungan dalam penyangga ke output ke klien.
- Void reset () - membersihkan data dalam buffer.
- Void resetBuffer - membersihkan penampan kandungan dalam tindak balas tanpa membersihkan kod status.
- Void sendError (intsc, Stringmsg) - menghantar tindak balas ralat kepada pelanggan menggunakan kod status.
- Void sendRedirect (String location) - menghantar respons pengalihan sementara kepada klien.
- Void setBufferSize (ukuran int) - menetapkan ukuran penyangga badan
- Void setCharacterEncoding (String charset) - menetapkan pengekodan watak
- Void setContentType (String type) - menetapkan jenis kandungan tindak balas
- Void setContentLength (intlen) - menetapkan panjang kandungan tindak balas
- Void setLocale (Locale lcl) - menetapkan jenis respons tempatan
- Void setStatus (intsc) - menetapkan kod status tindak balas
Contoh:
Dalam contoh ini, kita merangkumi pelbagai kaedah getLocale, flushbuffer, getWriter, get ContentType, setIntHeader.
<% @ bahasa halaman = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%><% @ halaman import = "java.io. * java.util. *"%>Tindak Balas Tindakan Guru Respons Guru
<%Lokal lcl = respons.getLocale ();out.println ("Lokasi adalah: + lcl + "\ n");tindak balas.flushBuffer ();Output PrintWriter = respons.getWriter ();output.println ("Ini dari objek penulis");Jenis rentetan = respons.getContentType ();out.println ("Jenis kandungan: + type + "\ n");// Tetapkan muat semula, muatkan masa automatik sebagai 5 saatrespons.setIntHeader ("Segarkan", 5);// Dapatkan masa sekarangTarikh dt = Tarikh baru ();out.println ("Tarikh hari ini adalah: + dt.toString () + "\ n");%>