জেএসপি দিয়ে কীভাবে ইউআরএল থেকে প্যারামিটার পাবেন


192

জেএসপিতে আমি কীভাবে ইউআরএল থেকে পরামিতি পেতে পারি?

উদাহরণস্বরূপ আমার কাছে একটি ইউআরএল রয়েছে যা www.somesite.com/Transaction_List.jsp?accountID=5
আমি ৫ পেতে চাই 5.

সেখানে কী একটি অনুরোধ রয়েছে? সেশন বা এর অনুরূপ কোনও কিছুর অনুরোধ রয়েছে?

উত্তর:


177

একটি জিইটি অনুরোধে, অনুরোধের প্যারামিটারগুলি কোয়েরি স্ট্রিং থেকে নেওয়া হয়েছে (ইউআরএলটিতে প্রশ্ন চিহ্ন অনুসরণ করা ডেটা)। উদাহরণস্বরূপ, URL- http://hostname.com?p1=v1&p2=v2- এ দুটি অনুরোধ পরামিতি রয়েছে - পি 1 এবং পি 2 p কোনও পোস্টের অনুরোধে, অনুরোধের প্যারামিটারগুলি কোয়েরি স্ট্রিং এবং পোস্টের ডেটা উভয় থেকেই নেওয়া হয় যা অনুরোধের মূল অংশে এনকোড করা থাকে।

এই উদাহরণটি প্রদর্শন করে যে উত্পন্ন আউটপুটে একটি অনুরোধ প্যারামিটারের মানটি কীভাবে অন্তর্ভুক্ত করা যায়:

Hello <b><%= request.getParameter("name") %></b>!

যদি পৃষ্ঠাটি URL টি দিয়ে অ্যাক্সেস করা হত:

http://hostname.com/mywebapp/mypage.jsp?name=John+Smith

ফলাফল আউটপুট হবে:

Hello <b>John Smith</b>!

যদি ক্যোয়ারী স্ট্রিংয়ে নাম নির্দিষ্ট না করা থাকে তবে আউটপুটটি হবে:

Hello <b>null</b>!

এই উদাহরণটি স্ক্রিপ্টলেটে ক্যোয়ারী প্যারামিটারের মান ব্যবহার করে:

<%
    if (request.getParameter("name") == null) {
        out.println("Please enter your name.");
    } else {
        out.println("Hello <b>"+request. getParameter("name")+"</b>!");
    }
%>

97
স্ক্রিপ্টলেটগুলি খারাপ অনুশীলন হিসাবে বিবেচিত হয়।
বালুসসি

14
এক্সএমএল এনকোডটি ভুলবেন না .. এটি বর্তমানে প্রতিফলিত
এক্সএসএসের

5
এক্সএসএস দুর্বলতার জন্য -1। আমি যদি দুবার ভোট দিতে পারি তবে EL ব্যবহার করে কাজটি করা যায় যখন স্ক্রিলেটলেট ব্যবহার করার জন্য -1 হবে। গুরুতরভাবে, এটি করবেন না
জুলাই

আরও ভাল সমাধান উপস্থিত থাকলে স্ক্রিপ্টলেটগুলি ব্যবহারের পরামর্শ দেওয়া কোড মানের জন্য ক্ষতিকারক।
সুকেতু ভূতা

2
"স্ক্রিপ্টলেটগুলি খারাপ অনুশীলন হিসাবে বিবেচিত হয়।" সম্পর্কিত, বিকল্পগুলির জন্য অন্য প্রশ্নের এই উত্তরটি দেখুন ।
পিক্সেলস্টিক্স

242

আমাদের সম্পর্কে অন্তর্নিহিত অবজেক্টস এর ইউনিফায়েড এক্সপ্রেশন ভাষা , জাভা EE 5 টিউটোরিয়াল লিখেছেন:

অন্তর্নিহিত অবজেক্টস

জেএসপি এক্সপ্রেশন ভাষা অন্তর্ভুক্ত বস্তুর একটি সেট সংজ্ঞায়িত করে:

  • pageContext: জেএসপি পৃষ্ঠার প্রসঙ্গ। সহ বিভিন্ন বস্তুর অ্যাক্সেস সরবরাহ করে:
    • servletContext: জেএসপি পৃষ্ঠার সার্লেট এবং একই অ্যাপ্লিকেশনটিতে থাকা কোনও ওয়েব উপাদানগুলির প্রসঙ্গ। ওয়েব প্রসঙ্গে প্রবেশাধিকার দেখুন।
    • session: ক্লায়েন্টের জন্য সেশন অবজেক্ট। ক্লায়েন্ট রাজ্য রক্ষণাবেক্ষণ দেখুন।
    • request: জেএসপি পৃষ্ঠাটি কার্যকর করার জন্য অনুরোধ রইল। অনুরোধগুলি থেকে তথ্য পাওয়া দেখুন ।
    • response: জেএসপি পৃষ্ঠায় দেওয়া প্রতিক্রিয়া। প্রতিক্রিয়া রচনা দেখুন।
  • তদতিরিক্ত, বেশ কয়েকটি অন্তর্নিহিত বস্তু উপলব্ধ রয়েছে যা নিম্নলিখিত বিষয়গুলিতে সহজে অ্যাক্সেসের অনুমতি দেয়:
    • param: একটি একক মানের একটি অনুরোধ পরামিতি নাম মানচিত্র
    • paramValues: মানগুলির একটি অ্যারেতে একটি অনুরোধ পরামিতি নাম মানচিত্র Maps
    • header: একটি একক মান একটি অনুরোধ শিরোনাম নাম মানচিত্র
    • headerValues: মানগুলির একটি অ্যারেতে একটি অনুরোধ শিরোনামের নাম মানচিত্র
    • cookie: একক কুকিতে একটি কুকির নাম মানচিত্র
    • initParam: একটি একক মানের একটি প্রসঙ্গ সূচনা পরামিতি নাম মানচিত্র
  • শেষ অবধি, এমন বস্তু রয়েছে যা স্কোপ অবজেক্টগুলি ব্যবহার করে বর্ণিত বিভিন্ন স্কোপযুক্ত ভেরিয়েবলগুলিতে অ্যাক্সেসের অনুমতি দেয়।
    • pageScope: মানচিত্রের পৃষ্ঠা-স্কোপযুক্ত ভেরিয়েবলের মানগুলিতে
    • requestScope: মানচিত্রগুলি তাদের মানগুলিতে স্কেপযুক্ত ভেরিয়েবলের নাম অনুরোধ করে
    • sessionScope: মানচিত্রের সেশন-স্কোপযুক্ত ভেরিয়েবলের মানগুলিতে
    • applicationScope: মানচিত্র প্রয়োগ করে তাদের মানগুলিতে পরিবর্তনশীল নাম able

আকর্ষণীয় অংশগুলি সাহসী :)

সুতরাং, আপনার প্রশ্নের উত্তর দিতে, আপনার এটির মতো এটির (EL ব্যবহার করে) সক্ষম হওয়া উচিত:

${param.accountID}

বা, জেএসপি স্ক্রিপ্টলেটগুলি ব্যবহার করে (প্রস্তাবিত নয়):

<%
    String accountId = request.getParameter("accountID");
%>

EL সক্ষম করতে আপনাকে কিছু করতে হবে? আমি jboss6 ব্যবহার করছি এবং আমি যখন $ {param.accountID use ব্যবহার করি তখন এটি ব্রাউজার থেকে নিয়মিত পাঠ্য হিসাবে বিবেচিত হয়।
একীকরণকারী

@ সিমজিনিয়ার প্রথমত, ফাইলটি কেবল জেএসপি হওয়া উচিত, কেবল সরল এইচটিএমএল নয়। পড়ুন নিম্নলিখিত বিষয়গুলি: এক্সপ্রেশন ভাষা, পরিবর্তনশীল মান দেখাবেন না , এল এক্সপ্রেশন JBoss আঃ 4.2.2 মূল্যায়ন করা হয় না , JSP মত প্রকাশের ভাষা কাজ করছে না
informatik01

81

EL (জেএসপি এক্সপ্রেশন ভাষা) ব্যবহার করুন:

${param.accountID}


1
এটি কি ইউআরএল ডিকোডিং করে?
ভাইকিংস্টিভ

@ লাইকিংস্টিভ হ্যাঁ এটি করে
নিল ম্যাকগুইগান

2
তবে এটি এইচটিএমএল / এক্সএমএল সত্তা হিসাবে পুনরায় কোডিং পরিচালনা করে না, যা এক্সএসএস প্রতিরোধের জন্য প্রয়োজনীয়। এটি <c:out value="${param.accountID}" />করতে জেএসটিএল ব্যবহার করুন ।
জুলাই

21

আমি যদি এখানে একটি মন্তব্য যুক্ত করতে পারি ...

<c:out value="${param.accountID}"></c:out>

আমার জন্য কাজ করে না (এটি একটি 0 টি প্রিন্ট করে)।

পরিবর্তে, এটি কাজ করে:

<c:out value="${param['accountID']}"></c:out>


লক্ষণীয়: প্যারামে কেবলমাত্র ইউআরএল ক্যোয়ারী যুক্তি (উদাহরণস্বরূপ মডেল মানচিত্রের মান) এর চেয়ে বেশি মান রয়েছে। যদি আপনার ইউআরএল ক্যোয়ারী যুক্তিগুলিতে কোনও মান আছে কিনা তা নির্দিষ্টভাবে পরীক্ষা করতে হবে (এবং উদাহরণস্বরূপ ফর্ম জমা দেওয়ার অংশ হিসাবে জমা দেওয়া হবে), আপনি $ {pageContext.request.queryString at দেখতে পারেন - তবে এটি কোনও অংশে বিভক্ত হয়নি প্যারাম মত সুন্দর মানচিত্র হয়।
পল



0

উদাহরণস্বরূপ আপনি বিষয় রেকর্ডের সাথে সাবজেক্ট রেকর্ডটি মুছতে চেয়েছিলেন

@RequestMapping(value="subject_setup/delete/{subjectid}",method = RequestMethod.GET)
public ModelAndView delete(@PathVariable int subjectid) {
    subjectsDao.delete(subjectid);
    return new ModelAndView("redirect:/subject_setup");
}

এবং প্যারামিটারটি আপনার ক্যোয়ারিতে ইনপুট দেওয়ার জন্য ব্যবহৃত হবে

public int delete(int subjectid) {
    String sql = "update tbl_subject set isdeleted= '1' where id = "+subjectid+"";
    return template.update(sql);
}

0

www.somesite.com/Transaction_List.jsp?accountID=5

এর জন্য জাভাতে URLএকটি পদ্ধতি কল request.getParameterরয়েছে, যদি আপনি এখানে একটি নম্বর দিতে চান তবে intএকইভাবে স্ট্রিংয়ের মান valueালাইয়ের জন্য string। সুতরাং আপনার প্রয়োজনের জন্য, কেবল পৃষ্ঠায় লাইনের নীচে অতীতের অনুলিপি করুন,

int  accountId =(int)request.getParameter("accountID");

আপনি এখন accountIdপুরো পৃষ্ঠাতে এই মানটিকে কল করতে পারেন ।

এখানে accountIdপ্যারামিটারের নাম আপনি এটি ব্যবহার করে একাধিক পরামিতিও পেতে পারেন, তবে এটি কার্যকর হয় না। GETআপনি যদি POSTঅনুরোধটি আঘাত করেন তবে এটি কেবল পদ্ধতিতে কাজ করবে তবে তাদের ত্রুটি হবে।

আশা করি এটি সহায়ক।


0

পৃষ্ঠা 1: বিশদ পৃষ্ঠা 2: <% স্ট্রিং আইডি = অনুরোধ.getParameter ("ইউজারিড");%> // এখন আপনি এইচএসকিএল বিশদ পণ্যের স্কয়ার কোয়েরির জন্য আইডি ব্যবহার করতে পারেন

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