আপনি যখন কোনও নির্দিষ্ট ফিল্টার এবং নিম্নলিখিত সমস্তগুলি প্রতিরোধ করতে চান তখন এই পদ্ধতিটি কার্যকর হয়। এটি উদাহরণস্বরূপ ভাল কাজ করা উচিত। আপনার অ্যাপ্লিকেশনটিকে যুক্তি না দেওয়ার পরিবর্তে (গুইসফিল্টারের মতো কোনও ফিল্টারের মাধ্যমে) আপনার সার্লেট পাত্রে কিছু সামগ্রী স্থিতিশীল সংস্থান হিসাবে পরিবেশন করতে চান:
ডিফল্ট সার্লেটে আপনার স্থিতিশীল সংস্থান ফাইলগুলির সাথে ফোল্ডারটি মানচিত্র করুন। একটি সার্লেট ফিল্টার তৈরি করুন এবং এটি আপনার ওয়েব.এক্সএমএল-এ গুয়াস ফিল্টারের আগে রাখুন। আপনার তৈরি ফিল্টারটিতে আপনি কিছু অনুরোধ গুইস ফিল্টার এবং অন্যকে সরাসরি প্রেরণকারীর কাছে ফরোয়ার্ড করার মধ্যে পৃথক করতে পারেন। উদাহরণ অনুসরণ করে ...
web.xml
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
<filter>
<filter-name>StaticResourceFilter</filter-name>
<filter-class>com.project.filter.StaticResourceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>StaticResourceFilter</filter-name>
<url-pattern>/static/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>guiceFilter</filter-name>
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>guiceFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
StaticResourceFilter.class
public class StaticResourceFilter implements Filter {
private final static Logger LOGGER = LoggerFactory.getLogger(StaticResourceFilter.class);
private static final String RESOURCE_PATH = "/static/";
@Override
public void init(final FilterConfig filterConfig) throws ServletException {
LOGGER.info("StaticResourceFilter initialized");
}
@Override
public void doFilter(final ServletRequest request, final ServletResponse response,
final FilterChain chain) throws IOException, ServletException {
String path = ((HttpServletRequest) request).getServletPath();
if (path.toLowerCase().startsWith(RESOURCE_PATH)) {
request.getRequestDispatcher(path).forward(request, response);
} else {
chain.doFilter(request, response);
}
}
@Override
public void destroy() {
LOGGER.info("StaticResourceFilter destroyed");
}
}
দুর্ভাগ্যক্রমে আপনি যদি নিম্নলিখিতগুলি ধরে রেখে ফিল্টার চেইনে কেবল একটি পদক্ষেপ এড়াতে চান তবে এটি কার্যকর হবে না।