GetAttribute () ve getParameter () arasındaki fark


283

Sınıf içindeki yöntemler getAttribute()ve getParameter()yöntemler arasındaki fark nedir HttpServletRequest?


1
Hangi sınıfta / pakette / API'de? İlgili yöntemler için JavaDoc'ları okumayı denediniz mi?
Andrew Thompson


özelliği yalnızca sunucu uygulamalarının birlikte çalışmasına yardımcı olan http isteği içindir
bitfishxyz

Yanıtlar:


329
  • getParameter()http istek parametrelerini döndürür. Bunlar istemciden sunucuya geçti. Örneğin http://example.com/servlet?parameter=1. Sadece geri dönebilirString

  • getAttribute()yalnızca sunucu tarafı kullanım içindir - isteği, aynı istek içinde kullanabileceğiniz özelliklerle doldurursunuz. Örneğin - bir sunucu uygulamasında bir öznitelik ayarlarsınız ve bunu bir JSP'den okursunuz. Sadece dize değil, herhangi bir nesne için kullanılabilir.


3
${attrName}Bir jsp sayfasında gibi bir şey kullandığınızı varsayalım , bunlar kullanarak ayarladığınız öznitelikler request.getSession().setAttribute()?
ha9u63ar

İstek özelliği sunucu tarafında depolandığından, sunucular arası yeniden yönlendirme sonrası alma isteği için istek niteliğini ayarlayabilir miyim? Yönlendirme isteğindeki bir özellik aracılığıyla bir sunucudan JSF'deki başka bir sunucuya bilgi göndermek istiyorum. Şu andan itibaren bir POST isteği ile gönderebiliyorum.
user2918640

Bu durumda, "Parametre", "sorgu dizesi" ile eşanlamlı gibi görünüyor
BTRUE

getAttribute()yalnızca sunucu tarafı kullanım için değildir: öznitelik verilerini örneğin jsp sayfalarında ön uçtan alabilir ve görüntüleyebilirsiniz
parsecer

49

Genel olarak bir parametre, istemciden sunucuya (örneğin bir form postası) gönderildiği ve sunucu uygulaması isteğinden alındığı bilinen en yaygın dize değeridir . Bunun sinir bozucu istisnası ServletContext başlangıç ​​parametreleridir yapılandırılan ve sunucuda bulunan dize parametreleri olan .

Öznitelik, belirtilen kapsamda var olan bir sunucu değişkeni yani:

  • application, tüm uygulamanın ömrü boyunca kullanılabilir
  • session, oturum ömrü boyunca kullanılabilir
  • request, yalnızca isteğin ömrü boyunca kullanılabilir
  • page (Yalnızca JSP), yalnızca geçerli JSP sayfası için kullanılabilir

"Genel olarak, parametre bir dize değeridir" Dizelerden başka ne gönderebiliriz?
Bal

^ Request.setAttribute
Arijit

38

request.getParameter ()

request.getParameter()İstek parametrelerini (yani bir html formu göndererek gönderilen veriler) ayıklamak için kullanırız . Her request.getParameter()zaman geri dönerString değer ve veriler istemciden gelir.

request.getAttribute ()

Biz kullanmak request.getAttribute()kullanarak yani sunucu tarafında istek kapsamına eklendi bir eşya taşımak request.setAttribute(). Burada istediğiniz herhangi bir nesne türünü Strings, Özel nesneleri, aslında herhangi bir nesneyi ekleyebilirsiniz . Özniteliği isteğe eklersiniz ve isteği başka bir kaynağa yönlendirirsiniz, istemci bunu bilmez. Bu nedenle, tüm kod işleme genellikle JSP / sunucu uygulamalarında olacaktır. Sen kullanabilirsiniz request.setAttribute()ekstra bilgi eklemek için ve ileri / başka bir kaynak mevcut isteği yönlendirir.

Örneğin, first.jsp,

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

ve second.jsp:

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

Tarayıcınızdan önce çalıştırın. Jsp? CLIENT = siz ve tarayıcınızdaki çıktı

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

Arasındaki temel fark, getAttribute()ve getParameter()birinci yöntem (tefrika), Java nesnesini çıkarır ve diğer bir String değeri sağlamasıdır. Her iki durumda da, değerinin (dize veya bir java fasulyesi olsun) bakılması ve çıkarılması için bir ad verilir.


4
Bu harika bir örnekti. Bu kabul edilen cevap olmalı. Kabul edilen cevap doğrudur, ancak yeni gelenler için bir örnek her şeyi açıklığa kavuşturmuştur. Teşekkür ederim.
CapturedTree

26

Niteliklerin parametre olmadığını bilmek çok önemlidir .

Öznitelikler için dönüş türü bir Object iken, bir parametrenin dönüş türü bir String'dir . getAttribute(String name)Yöntemi çağırırken, özniteliklerin kullanılması gerektiğini unutmayın.

Ayrıca, sunucu uygulamasına özgü öznitelikler yoktur ve oturum parametreleri yoktur .

Bu yazı, @ Bozho'nun yanıtına bağlanmak amacıyla, diğer insanlar için yararlı olabilecek ek bilgiler olarak yazılmıştır.


9

GetAttribute ve getParameter arasındaki fark, getParameter öğesinin bir HTML formu tarafından gönderilen veya bir sorgu dizesine dahil edilen bir parametrenin değerini döndürmesidir. getAttribute, istekte ayarladığınız bir nesneyi döndürür; bunu kullanmanın tek yolu, bir RequestDispatcher ile bağlantılıdır. Bir isteği başka bir kaynağa (JSP / Servlet) iletmek için RequestDispatcher'ı kullanırsınız. Bu nedenle, isteği iletmeden önce, bir sonraki kaynakta kullanılabilecek bir özellik ayarlayabilirsiniz.


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")değeri "Client param" olan "testParam" adlı giriş kutusunun gönderilen formundan alır. Daha sonra yazdırılır, böylece ekranda "Client Param" ifadesini görmeniz gerekir. Bu nedenle request.getParameter (), istemcinin gönderdiği bir değeri alır. Değeri sunucu tarafında alırsınız.

- getAttribute ():, bunların request.getAttribute() hepsi sunucu tarafında yapılır. Özniteliği isteğe eklersiniz ve isteği başka bir kaynağa SİZDE gönderirsiniz, istemci bunu bilmez. Bu nedenle, tüm kod işleme genellikle servlets.getAttribute her zaman return nesnesi olacaktır.


4

getParameter - İhtiyacınız olan bilgiyi Müşterinin HTML sayfasından almak için kullanılır

getAttribute - Bu, daha önce başka bir veya aynı JSP veya Servlet sayfasında ayarlanan parametreleri almak için kullanılır.

Temel olarak, bir jsp / sunucu uygulamasından diğerine yönlendirme yapıyorsanız veya yalnızca bir Nesneye koymayı ve bir oturum değişkeninde saklamak için set-özniteliğini kullanmıyorsanız, istediğiniz bilgiye sahip olmanın bir yolu yoktur.

GetAttribute kullanarak Oturum değişkenini alabilirsiniz.


3

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

"Parametre", istemciden sunucuya - tipik olarak bir HTML formundan gönderilen bir ad / değer çiftidir. Parametreler yalnızca String değerlerine sahip olabilir. Bazen (örneğin bir GET isteği kullanarak) bunları doğrudan URL'ye kodlanmış olarak görürsünüz (? Karakterinden sonra, her biri name = value biçiminde ve her çift bir & ile ayrılmış). Diğer zamanlarda, POST gibi yöntemler kullanılırken isteğin gövdesine dahil edilirler.

Bir "öznitelik" sunucu-yerel bir depolama mekanizmasıdır - Kapsamlı özniteliklerde depolanan hiçbir şey, siz açıkça gerçekleşmedikçe sunucu dışında iletilmez. Özniteliklerin Dize adları vardır, ancak Nesne değerlerini saklar. Özelliklerin Java'ya özgü olduğunu (Java Nesneleri depoladığını), parametrelerin platformdan bağımsız olduğunu unutmayın (bunlar yalnızca genel baytlardan oluşan biçimlendirilmiş dizelerdir).

Toplamda dört özellik kapsamı vardır: "sayfa" (yalnızca JSP'ler ve etiket dosyaları için), "istek" (geçerli müşterinin isteği ile sınırlıdır, istek tamamlandıktan sonra yok edilir), "oturum" (istemcinin oturumunda saklanır, geçersiz kılınır) oturum sona erdikten sonra), "uygulama" (uygulamanızın dağıtılan tüm ömrü boyunca tüm bileşenlerin erişmesi için mevcut).

Sonuç olarak: istemciden veri alırken parametreleri kullanın, nesneleri yalnızca uygulamanız tarafından dahili olarak kullanılmak üzere sunucuda saklarken kapsamlandırılmış öznitelikleri kullanın.


3

Kullanmanız gereken başka bir durum .getParameter(), jsp'deki parametrelerle iletirken:

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

İçinde destination.jspşu şekilde erişebilirsiniz userName:

request.getParameter("userName")

-6

GetAttribute () ve getParameter () arasındaki temel fark , döndürme türüdür.

java.lang.Object getAttribute(java.lang.String name)
java.lang.String getParameter(java.lang.String name)

2
bu konuda katı değilsin.
Bogdan M.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.