Sınıf içindeki yöntemler getAttribute()
ve getParameter()
yöntemler arasındaki fark nedir HttpServletRequest
?
Sınıf içindeki yöntemler getAttribute()
ve getParameter()
yöntemler arasındaki fark nedir HttpServletRequest
?
Yanıtlar:
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.
${attrName}
Bir jsp sayfasında gibi bir şey kullandığınızı varsayalım , bunlar kullanarak ayarladığınız öznitelikler request.getSession().setAttribute()
?
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
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ılabilirsession
, oturum ömrü boyunca kullanılabilirrequest
, yalnızca isteğin ömrü boyunca kullanılabilirpage
(Yalnızca JSP), yalnızca geçerli JSP sayfası için kullanılabilir 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.
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.
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.
- 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.
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.
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.
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")
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)