ওয়ারে টীকাগুলি ব্যবহার করে মৃত্যুদণ্ড কার্যকর করার ফিল্টার ক্রমকে কীভাবে সংজ্ঞায়িত করা যায়


167

আমরা যদি ওয়ার এর নিজস্ব ওয়েব অ্যাপ্লিকেশন নির্দিষ্ট সার্লেট ফিল্টার সংজ্ঞায়িত করি web.xml, তবে ফিল্টারগুলি কার্যকর করার ক্রমটি সেই অনুযায়ী যেভাবে তারা সংজ্ঞায়িত হয়েছে একই হবে web.xml

তবে, যদি আমরা @WebFilterটীকাটি ব্যবহার করে সেই ফিল্টারগুলি সংজ্ঞায়িত করি তবে ফিল্টারগুলি কার্যকর করার আদেশ কী এবং আমরা কীভাবে কার্যকর করার ক্রম নির্ধারণ করতে পারি?

উত্তর:


187

আপনি @WebFilterটীকা ব্যবহার করে ফিল্টার নির্বাহের আদেশটি প্রকৃতপক্ষে নির্ধারণ করতে পারবেন না । যাইহোক, web.xmlব্যবহারটি হ্রাস করতে , সমস্ত ফিল্টারকে কেবলমাত্র এমন একটি দিয়ে মন্তব্য করতে যথেষ্ট filterNameযাতে আপনার <filter>সংজ্ঞা প্রয়োজন না , তবে <filter-mapping>পছন্দসই ক্রমে কেবল একটি সংজ্ঞা প্রয়োজন।

উদাহরণ স্বরূপ,

@WebFilter(filterName="filter1")
public class Filter1 implements Filter {}

@WebFilter(filterName="filter2")
public class Filter2 implements Filter {}

সঙ্গে web.xmlশুধু এই:

<filter-mapping>
    <filter-name>filter1</filter-name>
    <url-pattern>/url1/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>filter2</filter-name>
    <url-pattern>/url2/*</url-pattern>
</filter-mapping>

আপনি যদি ইউআরএল প্যাটার্নটি রাখতে চান @WebFilterতবে আপনি ঠিক তেমন করতে পারেন,

@WebFilter(filterName="filter1", urlPatterns="/url1/*")
public class Filter1 implements Filter {}

@WebFilter(filterName="filter2", urlPatterns="/url2/*")
public class Filter2 implements Filter {}

কিন্তু আপনি এখনও রাখা উচিত <url-pattern>মধ্যে web.xml, কারণ এটি XSD অনুযায়ী প্রয়োজন নেই, যদিও এটা খালি হতে পারে:

<filter-mapping>
    <filter-name>filter1</filter-name>
    <url-pattern />
</filter-mapping>
<filter-mapping>
    <filter-name>filter2</filter-name>
    <url-pattern />
</filter-mapping>

পদ্ধতির হোক না কেন, এই সব সংস্করণ 7.0.28 পর্যন্ত হুল বিড়াল ব্যর্থ হবে কারণ এটি উপস্থিতিতে উপর গলগ্রহ হয়ে যায় <filter-mapping>ছাড়া <filter>টমক্যাট ব্যবহার করে দেখুন , @ ওয়েবফিল্টার ওয়েব.এক্সএমএলে <ফিল্টার-ম্যাপিং> নিয়ে কাজ করে না


5
তারা orderনেস্টেড @WebFilterMappingটীকাগুলির একটি বৈশিষ্ট্য প্রবর্তন করতে পারে । আমি ভাবছি কি সরলতার জন্য এটি করেন নি
Bozho

12
@ বোজো: এটি যথেষ্ট নির্দিষ্ট হবে না। যদি আপনার ওয়েব অ্যাপ্লিকেশনগুলি তৃতীয় পক্ষের লাইব্রেরিগুলির সাথে একটি ফিল্টার অন্তর্ভুক্ত থাকে তবে কী হবে? এর অর্ডার আগেই বলা শক্ত।
বালুসসি

1
@ বালুসসি: আপনার উদাহরণে কিছু ভুল হয়েছে: ফিল্টার-নাম দিয়ে ইউআরএল-প্যাটার্নটি বন্ধ রয়েছে।
অ্যান্ড্রুবুর্জোয়া

3
@ অ্যান্ড্রুবুর্জোয়া: স্থির। একটি কপিপস্ট ত্রুটি ছিল। এটা খুব খারাপ, যে Markdown সম্পাদক অন্ধকার হিসেবে মত এক্সএমএল বৈধতা builtin নেই;)
BalusC

6
ব্যবহার <url-pattern />JBoss EAP 6.1 এ কাজ করে না - এটি @WebFilterমানটিকে ওভাররাইড করে এবং ফিল্টারটিকে মোটেও চালানো থেকে বাধা দেয়।
seanf

12

সার্ভলেট spec.০ স্পেসে কোনও ধারক কীভাবে টীকাগুলির মাধ্যমে ঘোষিত ফিল্টারগুলি অর্ডার করা উচিত সে বিষয়ে কোনও ইঙ্গিত সরবরাহ করে বলে মনে হয় না। যদিও ওয়েব.এক্সএমএল ফাইলে তাদের ঘোষণার মাধ্যমে ফিল্টারগুলি অর্ডার করবেন সে সম্পর্কে এটি স্পষ্ট।

সাবধান থাকা. আন্তঃনির্ভরতা রয়েছে এমন ওয়েব.এক্সএমএল ফাইল অর্ডার ফিল্টার ব্যবহার করুন। ওয়েব.এক্সএমএল ফাইলটি ব্যবহারের প্রয়োজনীয়তা হ্রাস করার জন্য আপনার ফিল্টারগুলিকে সমস্ত ক্রম স্বাধীন করার চেষ্টা করুন।


4
আমার প্রজেক্টে আমার অনেক সার্লেটলেট ফিল্টার রয়েছে, তার মধ্যে কেবল একটি নির্দিষ্ট ফিল্টার অবশ্যই প্রথমে কল করতে হবে এবং অন্যান্য ফিল্টারগুলির ক্রম উদ্বেগ নয়। ওয়েব.এক্সএমএল-এ কি সমস্ত ফিল্টার অশুচি করতে হবে? নাকি কোনও শর্ট-কাট রয়েছে?
siva636
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.