GetAttribute () এবং getParameter () এর মধ্যে পার্থক্য


282

শ্রেণীর মধ্যে getAttribute()এবং getParameter()পদ্ধতির মধ্যে পার্থক্য কী HttpServletRequest?


1
কোন ক্লাস / প্যাকেজ / এপিআই এ? আপনি কি প্রাসঙ্গিক পদ্ধতিগুলির জন্য জাভাডক্স পড়ার চেষ্টা করেছিলেন?
অ্যান্ড্রু থম্পসন


বৈশিষ্ট্যটি কেবলমাত্র http অনুরোধের জন্য যা
সার্লেলেটগুলি

উত্তর:


328
  • getParameter()HTTP অনুরোধের পরামিতিগুলি প্রদান করে। যারা ক্লায়েন্ট থেকে সার্ভারে পাস করেছে। উদাহরণস্বরূপ http://example.com/servlet?parameter=1। কেবল ফিরতে পারেString

  • getAttribute()শুধুমাত্র সার্ভার-সাইড ব্যবহারের জন্য - আপনি অনুরোধটির মধ্যে অনুরোধটি যে বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন তা পূরণ করুন। উদাহরণস্বরূপ - আপনি একটি সার্লেলে একটি বৈশিষ্ট্য সেট করেছেন এবং এটি কোনও জেএসপি থেকে পড়েছেন। কেবল স্ট্রিং নয়, কোনও বস্তুর জন্য ব্যবহার করা যেতে পারে।


3
আমি মনে করি আপনি যখন ${attrName}কোনও জেএসপি পৃষ্ঠায় কিছু ব্যবহার করেন , সেই বৈশিষ্ট্যগুলি যা আপনি ব্যবহার করেছেন request.getSession().setAttribute()?
ha9u63ar

যেহেতু অনুরোধের বৈশিষ্ট্যটি সার্ভারের পাশে সংরক্ষণ করা হয়, তাই আমি কি কোনও আন্ত-সার্ভারের পুনঃনির্দেশ-অনুরোধের অনুরোধের জন্য অনুরোধের বৈশিষ্ট্যটি সেট করতে পারি? পুনঃনির্দেশ অনুরোধের একটি বৈশিষ্ট্যের মাধ্যমে আমি জেএসএফের একটি সার্ভার থেকে অন্য সার্ভারে তথ্য প্রেরণ করতে চাই। আমি এখন পর্যন্ত একটি পোস্ট অনুরোধ মাধ্যমে প্রেরণ করতে সক্ষম।
ব্যবহারকারী 2918640

এই ক্ষেত্রে, "প্যারামিটার" "কোয়েরি স্ট্রিং" এর সমার্থক বলে মনে হচ্ছে
বিটিআরইউ

getAttribute()কেবল সার্ভার-পার্শ্ব ব্যবহারের জন্য নয়: আপনি সামনের
দিকের এন্টিবিউট

49

সাধারণত, একটি প্যারামিটার এমন একটি স্ট্রিং মান যা ক্লায়েন্টের কাছ থেকে সার্ভারে (যেমন একটি ফর্ম পোস্ট) প্রেরণ এবং সার্লেটের অনুরোধ থেকে পুনরুদ্ধারের জন্য সর্বাধিক পরিচিত । এতে হতাশাজনক ব্যতিক্রম হ'ল সার্ভলেটকন্টেক্সট প্রাথমিক পরামিতি যা স্ট্রিং পরামিতি যা ওয়েব.এক্সএমএল-এ কনফিগার করা হয়েছে এবং সার্ভারে বিদ্যমান রয়েছে।

একটি অ্যাট্রিবিউট হ'ল একটি সার্ভার ভেরিয়েবল যা একটি নির্দিষ্ট স্কোপের মধ্যে বিদ্যমান যেমন:

  • application, সম্পূর্ণ অ্যাপ্লিকেশন জীবনের জন্য উপলব্ধ
  • session, অধিবেশন জীবনের জন্য উপলব্ধ
  • request, শুধুমাত্র অনুরোধের জীবনের জন্য উপলব্ধ
  • page (কেবলমাত্র জেএসপি), কেবলমাত্র বর্তমান জেএসপি পৃষ্ঠার জন্য উপলব্ধ

"সাধারণত, একটি পরামিতি একটি স্ট্রিং মান হয়" স্ট্রিং ছাড়া আমরা কী পাঠাতে পারি?
মধু


37

request.getParameter ()

আমরা request.getParameter()অনুরোধের প্যারামিটারগুলি (যেমন এইচটিএমএল ফর্ম পোস্ট করে পাঠানো ডেটা) ব্যবহার করতে পারি। request.getParameter()সবসময় ফেরৎ Stringমান এবং তথ্য ক্লায়েন্ট থেকে আসা।

request.getAttribute ()

আমরা ব্যবহার request.getAttribute()একটি বস্তুর ব্যবহার অর্থাত সার্ভার প্রান্তের উপর অনুরোধ সুযোগ যোগ করা পেতে request.setAttribute()। আপনি এখানে পছন্দ করেন এমন কোনও ধরণের অবজেক্ট যুক্ত করতে পারেন Strings, কাস্টম অবজেক্টস, আসলে যে কোনও অবজেক্ট। আপনি অনুরোধটির বৈশিষ্ট্যটি যুক্ত করুন এবং অনুরোধটি অন্য উত্সটিতে ফরোয়ার্ড করুন, ক্লায়েন্ট এটি সম্পর্কে জানেন না। সুতরাং এগুলি হ্যান্ডলিংয়ের সমস্ত কোড সাধারণত জেএসপি / সার্লেলে থাকবে। আপনি request.setAttribute()অতিরিক্ত তথ্য যুক্ত করতে এবং বর্তমান অনুরোধটিকে অন্য সংস্থানটিতে পুনর্নির্দেশ / পুনঃনির্দেশ করতে ব্যবহার করতে পারেন ।

উদাহরণস্বরূপ, first.jsp সম্পর্কে বিবেচনা করুন,

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

এবং দ্বিতীয় জেএসপি:

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

আপনার ব্রাউজার থেকে, প্রথম চালান। জেএসপি? ক্লায়েন্ট = আপনি এবং আপনার ব্রাউজারে আউটপুট is

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

getAttribute()এবং এর মধ্যে প্রাথমিক পার্থক্যটি getParameter()হ'ল প্রথম পদ্ধতিটি একটি (ক্রমিকযুক্ত) জাভা অবজেক্টটি বের করে এবং অন্যটি একটি স্ট্রিংয়ের মান সরবরাহ করে। উভয় ক্ষেত্রে একটি নাম দেওয়া হয়েছে যাতে এর মানটি (এটি স্ট্রিং বা জাভা বিন হতে পারে) সন্ধান করতে এবং বের করা যায়।


4
এটি একটি দুর্দান্ত উদাহরণ ছিল। এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। গৃহীত উত্তরটি সঠিক তবে নতুন আগতদের জন্য একটি উদাহরণ সমস্ত কিছু পরিষ্কার করেছে। ধন্যবাদ.
ক্যাপচারড্রি

26

এটি জেনে রাখা গুরুত্বপূর্ণ যে গুণাবলী কোনও পরামিতি নয় ।

বৈশিষ্ট্যের জন্য রিটার্ন টাইপ হ'ল একটি অবজেক্ট , অন্যদিকে প্যারামিটারের জন্য রিটার্ন টাইপ একটি স্ট্রিংgetAttribute(String name)পদ্ধতিটি কল করার সময় , মনে রাখবেন যে বৈশিষ্ট্যগুলি অবশ্যই ফেলে দেওয়া উচিত।

অতিরিক্তভাবে, কোনও সার্লেট নির্দিষ্ট বৈশিষ্ট্য নেই , এবং কোনও সেশন প্যারামিটার নেই

এই পোস্টটি @ বোঝো'র প্রতিক্রিয়ার সাথে সংযোগ স্থাপনের উদ্দেশ্যে লেখা হয়েছে, অতিরিক্ত তথ্য হিসাবে যা অন্যান্য লোকের পক্ষে কার্যকর হতে পারে।


9

GetAttribute এবং getParameter এর মধ্যে পার্থক্য হ'ল getParameter একটি প্যারামিটারের মান ফিরিয়ে দেবে যা এইচটিএমএল ফর্ম দ্বারা জমা দেওয়া হয়েছিল বা যা কোয়েরি স্ট্রিংয়ের অন্তর্ভুক্ত ছিল। getAttribute আপনি যে অনুরোধটিতে সেট করেছেন সেটি প্রত্যাবর্তন করে, আপনি কেবল এটিই ব্যবহার করতে পারবেন একটি অনুরোধডিসপ্যাচারের সাথে একত্রে। আপনি অন্য একটি সংস্থার (জেএসপি / সার্লেট) কাছে একটি অনুরোধ ফরোয়ার্ড করার জন্য একটি অনুরোধডিসপাচার ব্যবহার করেন। সুতরাং আপনি অনুরোধটি ফরোয়ার্ড করার আগে আপনি একটি বৈশিষ্ট্য সেট করতে পারেন যা পরবর্তী সংস্থানগুলিতে উপলব্ধ।


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")"টেস্টপ্যারাম" নামক ইনপুট বক্সের পোস্ট ফর্ম থেকে মানটি পাওয়া যাবে যা "ক্লায়েন্ট পরম"। এটি তখন এটি মুদ্রণ করবে, সুতরাং আপনার পর্দায় "ক্লায়েন্ট পরম" দেখা উচিত। সুতরাং অনুরোধ.getParameter () ক্লায়েন্ট জমা দেওয়া একটি মান পুনরুদ্ধার করবে। আপনি সার্ভার সাইডে মান পাবেন।

- getAttribute ():, request.getAttribute() এটি সার্ভার সাইড হয়ে গেছে। আপনি অনুরোধটির বৈশিষ্ট্য যুক্ত করুন এবং আপনি অনুরোধটি অন্য উত্সটিতে জমা দিন, ক্লায়েন্ট এ সম্পর্কে জানেন না। সুতরাং এগুলি হ্যান্ডলিংয়ের সমস্ত কোডই সাধারণত সার্লেটে থাকবে get


4

getParameter - ক্লায়েন্টের এইচটিএমএল পৃষ্ঠা থেকে আপনার প্রয়োজনীয় তথ্য পাওয়ার জন্য ব্যবহৃত হয়

getAttribute - এটি অন্য বা একই জেএসপি বা সার্ভলেট পৃষ্ঠায় পূর্ববর্তী পরামিতিগুলি সেট করার জন্য ব্যবহৃত হয়।

মূলত, আপনি যদি ফরোয়ার্ড করছেন বা কেবল একটি জেএসপি / সার্লেট থেকে অন্য একজনের কাছে যাচ্ছেন তবে আপনি যে তথ্যটি কোনও অবজেক্টে রাখার বাছাই না করে এবং সেশন ভেরিয়েবলে সঞ্চয় করার জন্য সেট-অ্যাট্রিবিউট ব্যবহার না করে আপনি চান তথ্য পাওয়ার কোনও উপায় নেই।

GetAttribute ব্যবহার করে আপনি সেশন ভেরিয়েবলটি পুনরুদ্ধার করতে পারবেন।


3

http://www.coderanch.com/t/361868/Servlet/java/request-getParameter-request-getAttribute থেকে

একটি "প্যারামিটার" হ'ল একটি নাম / মান জুটি যা ক্লায়েন্ট থেকে সার্ভারে পাঠানো হয় - সাধারণত, কোনও HTML ফর্ম থেকে। পরামিতিগুলির কেবল স্ট্রিংয়ের মান থাকতে পারে। কখনও কখনও (যেমন জিইটি অনুরোধ ব্যবহার করে) আপনি সরাসরি এই ইউআরএল এ এনকোড দেখতে পাবেন (? এর পরে প্রতিটি ফর্মের নাম = মান এবং প্রতিটি জোড় একটি & এর দ্বারা পৃথক)। অন্য সময়ে, POST এর মতো পদ্ধতি ব্যবহার করার সময় এগুলি অনুরোধের শরীরে অন্তর্ভুক্ত থাকে।

একটি "অ্যাট্রিবিউট" হ'ল একটি সার্ভার-লোকাল স্টোরেজ মেকানিজম - স্কোপযুক্ত বৈশিষ্ট্যগুলিতে সঞ্চিত কোনও কিছুই কখনই সার্ভারের বাইরে সঞ্চারিত হয় না যতক্ষণ না আপনি স্পষ্টভাবে তা ঘটায়। বৈশিষ্ট্যের স্ট্রিংয়ের নাম রয়েছে তবে অবজেক্টের মানগুলি সঞ্চয় করে। নোট করুন যে বৈশিষ্ট্যগুলি জাভা সম্পর্কিত নির্দিষ্ট (তারা জাভা অবজেক্টগুলি সঞ্চয় করে), যখন প্যারামিটারগুলি প্ল্যাটফর্ম-স্বতন্ত্র (তারা কেবল জেনেরিক বাইট সমন্বয়ে গঠিত ফর্ম্যাট স্ট্রিং)।

মোট চারটি বৈশিষ্ট্যের স্কোপ রয়েছে: "পৃষ্ঠা" (কেবল জেএসপি এবং ট্যাগ ফাইলগুলির জন্য), "অনুরোধ" (বর্তমান ক্লায়েন্টের অনুরোধ সীমাবদ্ধ, অনুরোধ শেষ হওয়ার পরে ধ্বংস), "সেশন" (ক্লায়েন্টের অধিবেশনগুলিতে সঞ্চিত, অবৈধ সেশনটি সমাপ্ত হওয়ার পরে), "অ্যাপ্লিকেশন" (আপনার অ্যাপ্লিকেশনটির পুরো মোতায়েনের সময়কালে সমস্ত উপাদান অ্যাক্সেসের জন্য বিদ্যমান)।

নীচের লাইনটি: ক্লায়েন্টের কাছ থেকে ডেটা প্রাপ্ত করার সময় প্যারামিটারগুলি ব্যবহার করুন, কেবলমাত্র আপনার অ্যাপ্লিকেশন দ্বারা অভ্যন্তরীণভাবে ব্যবহারের জন্য সার্ভারে অবজেক্টগুলি সংরক্ষণ করার সময় স্কোপযুক্ত বৈশিষ্ট্যগুলি ব্যবহার করুন।


3

আপনার যখন ব্যবহার .getParameter()করা উচিত তখন অন্য একটি ক্ষেত্রে জেএসপিতে পরামিতিগুলি ফরোয়ার্ড করার সময়:

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

ইন destination.jsp, আপনি এটির userNameমতো অ্যাক্সেস করতে পারেন :

request.getParameter("userName")

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.