Perbedaan antara getAttribute () dan getParameter ()

283

Apa perbedaan antara getAttribute()dan getParameter()metode dalam HttpServletRequestkelas?

priya
sumber
1
Di kelas / paket / API apa? Apakah Anda mencoba membaca JavaDocs untuk metode yang relevan?
Andrew Thompson
atribut hanya untuk permintaan http yang membantu servlets bekerja bersama
bitfishxyz

Jawaban:

329
  • getParameter()mengembalikan parameter permintaan http. Itu diteruskan dari klien ke server. Sebagai contoh http://example.com/servlet?parameter=1. Hanya bisa kembaliString

  • getAttribute()hanya untuk penggunaan sisi server - Anda mengisi permintaan dengan atribut yang dapat Anda gunakan dalam permintaan yang sama. Misalnya - Anda menetapkan atribut dalam servlet, dan membacanya dari JSP. Dapat digunakan untuk objek apa pun, bukan hanya string.

Bozho
sumber
3
Saya kira ketika Anda menggunakan sesuatu seperti ${attrName}di halaman jsp, itu adalah atribut yang Anda tetapkan gunakan request.getSession().setAttribute()?
ha9u63ar
Karena atribut permintaan disimpan di sisi server, dapatkah saya menetapkan atribut permintaan untuk permintaan pasca-redirect-dapatkan antar-server? Saya ingin mengirim informasi dari satu server ke server lain di JSF melalui atribut dalam permintaan redirect. Saya dapat mengirim melalui permintaan POST seperti sekarang.
user2918640
Dalam hal ini, "Parameter" tampaknya identik dengan "string kueri"
BTRUE
getAttribute()bukan hanya untuk penggunaan sisi server: Anda bisa mendapatkan data atribut di front-end - di halaman jsp misalnya, dan menampilkannya
parsecer
49

Secara umum, parameter adalah nilai string yang paling umum diketahui dikirim dari klien ke server (mis. Formulir posting) dan diambil dari permintaan servlet . Pengecualian yang membuat frustrasi adalah parameter awal ServletContext yang merupakan parameter string yang dikonfigurasi di web.xml dan ada di server.

Atribut adalah variabel server yang ada dalam lingkup yang ditentukan yaitu:

  • application, tersedia untuk masa pakai seluruh aplikasi
  • session, tersedia untuk seumur hidup sesi
  • request, hanya tersedia selama umur permintaan
  • page (Khusus JSP), hanya tersedia untuk halaman JSP saat ini
Krock
sumber
"Secara umum, parameter adalah nilai string" Selain string apa yang bisa kami kirim?
Sayang
^ Objek seperti dalam kasus request.setAttribute
Arijit
38

request.getParameter ()

Kami menggunakan request.getParameter()untuk mengekstrak parameter permintaan (yaitu data yang dikirim dengan memposting formulir html). Nilai request.getParameter()selalu kembali Stringdan data berasal dari klien.

request.getAttribute ()

Kami menggunakan request.getAttribute()untuk mendapatkan objek yang ditambahkan ke ruang lingkup permintaan di sisi server yaitu menggunakan request.setAttribute(). Anda dapat menambahkan semua jenis objek yang Anda suka di sini,, StringsObjek khusus, bahkan objek apa pun. Anda menambahkan atribut ke permintaan dan meneruskan permintaan ke sumber daya lain, klien tidak tahu tentang ini. Jadi semua kode yang menangani ini biasanya dalam JSP / servlets. Anda dapat menggunakan request.setAttribute()untuk menambahkan informasi tambahan dan meneruskan / mengalihkan permintaan saat ini ke sumber daya lain.

Misalnya, pertimbangkan tentang first.jsp,

//First Page : first.jsp
<%@ page import="java.util.*" import="java.io.*"%>
<% request.setAttribute("PAGE", "first.jsp");%>
<jsp:forward page="/second.jsp"/>

dan second.jsp:

<%@ page import="java.util.*" import="java.io.*"%>
From Which Page : <%=request.getAttribute("PAGE")%><br>
Data From Client : <%=request.getParameter("CLIENT")%>

Dari browser Anda, jalankan first.jsp? CLIENT = Anda dan output pada browser Anda

From Which Page : *first.jsp*
Data From Client : you

Perbedaan mendasar antara getAttribute()dan getParameter()adalah bahwa metode pertama mengekstraksi objek Java (serial) dan yang lainnya memberikan nilai String. Untuk kedua kasus, sebuah nama diberikan sehingga nilainya (baik itu string atau kacang java) dapat dicari dan diekstraksi.

AVI
sumber
4
Ini adalah contoh yang bagus. Ini harus menjadi jawaban yang diterima. Jawaban yang diterima benar tetapi untuk pendatang baru contoh mengklarifikasi segalanya. Terima kasih.
CapturedTree
26

Sangat penting untuk mengetahui bahwa atribut bukan parameter .

Tipe return untuk atribut adalah Object , sedangkan tipe return untuk parameter adalah String . Saat memanggil getAttribute(String name)metode, ingat bahwa atribut harus dilemparkan.

Selain itu, tidak ada atribut spesifik servlet , dan tidak ada parameter sesi .

Posting ini ditulis dengan tujuan untuk terhubung pada respons @ Bozho, sebagai informasi tambahan yang dapat berguna bagi orang lain.

oneiros
sumber
9

Perbedaan antara getAttribute dan getParameter adalah getParameter akan mengembalikan nilai parameter yang dikirimkan oleh formulir HTML atau yang disertakan dalam string kueri. getAttribute mengembalikan objek yang telah Anda tetapkan dalam permintaan, satu-satunya cara Anda dapat menggunakan ini adalah bersama dengan RequestDispatcher. Anda menggunakan RequestDispatcher untuk meneruskan permintaan ke sumber daya lain (JSP / Servlet). Jadi sebelum Anda meneruskan permintaan Anda dapat mengatur atribut yang akan tersedia untuk sumber daya berikutnya.

Abhi
sumber
5

- getParameter () :

<html>
<body>
<form name="testForm" method="post" action="testJSP.jsp">
<input type="text" name="testParam" value="ClientParam">
<input type="submit">
</form>
</body>
</html>

    <html>
    <body>
    <%
    String sValue = request.getParameter("testParam");
    %>
    <%= sValue %>
    </body>
    </html>

request.getParameter("testParam")akan mendapatkan nilai dari formulir yang diposting dari kotak input bernama "testParam" yang merupakan "Klien param". Ini kemudian akan mencetaknya, sehingga Anda akan melihat "Client Param" di layar. Jadi request.getParameter () akan mengambil nilai yang telah dikirimkan klien. Anda akan mendapatkan nilai di sisi server.

- getAttribute ():, request.getAttribute() ini semua dilakukan di sisi server. ANDA menambahkan atribut ke permintaan dan ANDA mengirimkan permintaan ke sumber daya lain, klien tidak tahu tentang ini. Jadi semua penanganan kode ini biasanya di servlets.getAttribute selalu mengembalikan objek.

Reetika
sumber
4

getParameter - Digunakan untuk mendapatkan informasi yang Anda butuhkan dari halaman HTML Klien

getAttribute - Ini digunakan untuk mendapatkan parameter yang ditetapkan sebelumnya di halaman JSP atau Servlet yang sama atau yang sama.

Pada dasarnya, jika Anda meneruskan atau hanya beralih dari satu jsp / servlet ke yang lain, tidak ada cara untuk memiliki informasi yang Anda inginkan kecuali Anda memilih untuk meletakkannya di Objek dan menggunakan atribut-set untuk menyimpan dalam variabel Sesi.

Menggunakan getAttribute, Anda dapat mengambil variabel Sesi.

PaulStevens
sumber
3

dari http://www.coderanch.com/t/361868/Servlets/java/request-getParameter-request-getAttribute

"Parameter" adalah pasangan nama / nilai yang dikirim dari klien ke server - biasanya, dari formulir HTML. Parameter hanya dapat memiliki nilai String. Terkadang (misalnya menggunakan permintaan GET) Anda akan melihat ini disandikan langsung ke URL (setelah?, Masing-masing dalam bentuk nama = nilai, dan setiap pasangan dipisahkan oleh &). Di lain waktu, mereka termasuk dalam badan permintaan, saat menggunakan metode seperti POST.

"Atribut" adalah mekanisme penyimpanan server-lokal - tidak ada yang disimpan dalam attribues yang dicakup pernah ditransmisikan di luar server kecuali Anda secara eksplisit membuat itu terjadi. Atribut memiliki nama String, tetapi menyimpan nilai Object. Perhatikan bahwa atribut khusus untuk Java (mereka menyimpan Java Objects), sementara parameternya adalah platform-independent (mereka hanya string yang diformat yang terdiri dari byte generik).

Ada empat lingkup atribut secara total: "halaman" (hanya untuk JSP dan file tag), "permintaan" (terbatas pada permintaan klien saat ini, dihancurkan setelah permintaan selesai), "sesi" (disimpan dalam sesi klien, tidak valid setelah sesi diakhiri), "aplikasi" (ada untuk semua komponen untuk mengakses selama masa aplikasi Anda dikerahkan).

Intinya adalah: gunakan parameter saat mendapatkan data dari klien, gunakan atribut cakupan saat menyimpan objek di server untuk digunakan secara internal oleh aplikasi Anda saja.

Bhavin Shah
sumber
3

Kasus lain yang harus Anda gunakan .getParameter()adalah ketika meneruskan dengan parameter di jsp:

<jsp:forward page="destination.jsp">
    <jsp:param name="userName" value="hamid"/>
</jsp:forward>

Di destination.jsp, Anda dapat mengakses userNameseperti ini:

request.getParameter("userName")
Hamid Mohayeji
sumber
-6

Perbedaan mendasar antara getAttribute () dan getParameter () adalah tipe kembali.

java.lang.Object getAttribute(java.lang.String name)
java.lang.String getParameter(java.lang.String name)
Chirag Visavadiya
sumber
2
Anda tidak kaku tentang ini.
Bogdan M.