{"id":27235,"date":"2024-03-16T08:08:31","date_gmt":"2024-03-16T08:08:31","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/"},"modified":"2024-03-22T10:32:21","modified_gmt":"2024-03-22T10:32:21","slug":"how-do-you-use-the-filterchain-in-java","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/","title":{"rendered":"How do you use the filterchain in Java?"},"content":{"rendered":"<p>In Java, FilterChain is an interface in Servlet that is used to filter or modify requests before passing them on to the next filter or servlet.<\/p>\n<p>Here is an example using FilterChain:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">import<\/span> javax.servlet.*;\r\n<span class=\"hljs-keyword\">import<\/span> javax.servlet.http.HttpServletRequest;\r\n<span class=\"hljs-keyword\">import<\/span> javax.servlet.http.HttpServletResponse;\r\n<span class=\"hljs-keyword\">import<\/span> java.io.IOException;\r\n\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">MyFilter<\/span> <span class=\"hljs-keyword\">implements<\/span> <span class=\"hljs-title class_\">Filter<\/span> {\r\n\r\n    <span class=\"hljs-meta\">@Override<\/span>\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title function_\">init<\/span><span class=\"hljs-params\">(FilterConfig filterConfig)<\/span> <span class=\"hljs-keyword\">throws<\/span> ServletException {\r\n        <span class=\"hljs-comment\">\/\/ \u521d\u59cb\u5316\u64cd\u4f5c<\/span>\r\n    }\r\n\r\n    <span class=\"hljs-meta\">@Override<\/span>\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title function_\">doFilter<\/span><span class=\"hljs-params\">(ServletRequest request, ServletResponse response, FilterChain chain)<\/span>\r\n            <span class=\"hljs-keyword\">throws<\/span> IOException, ServletException {\r\n        <span class=\"hljs-type\">HttpServletRequest<\/span> <span class=\"hljs-variable\">req<\/span> <span class=\"hljs-operator\">=<\/span> (HttpServletRequest) request;\r\n        <span class=\"hljs-type\">HttpServletResponse<\/span> <span class=\"hljs-variable\">res<\/span> <span class=\"hljs-operator\">=<\/span> (HttpServletResponse) response;\r\n\r\n        <span class=\"hljs-comment\">\/\/ \u5728\u8bf7\u6c42\u88ab\u4f20\u9012\u7ed9\u4e0b\u4e00\u4e2a\u8fc7\u6ee4\u5668\u6216servlet\u4e4b\u524d\uff0c\u53ef\u4ee5\u5bf9\u8bf7\u6c42\u8fdb\u884c\u8fc7\u6ee4\u6216\u4fee\u6539<\/span>\r\n        <span class=\"hljs-type\">String<\/span> <span class=\"hljs-variable\">username<\/span> <span class=\"hljs-operator\">=<\/span> req.getParameter(<span class=\"hljs-string\">\"username\"<\/span>);\r\n        <span class=\"hljs-keyword\">if<\/span> (username != <span class=\"hljs-literal\">null<\/span> &amp;&amp; !username.isEmpty()) {\r\n            <span class=\"hljs-comment\">\/\/ \u5bf9\u8bf7\u6c42\u8fdb\u884c\u4fee\u6539<\/span>\r\n            req.setAttribute(<span class=\"hljs-string\">\"username\"<\/span>, username.toUpperCase());\r\n        }\r\n\r\n        <span class=\"hljs-comment\">\/\/ \u5c06\u8fc7\u6ee4\u5668\u94fe\u7ee7\u7eed\u5411\u4e0b\u4f20\u9012<\/span>\r\n        chain.doFilter(req, res);\r\n    }\r\n\r\n    <span class=\"hljs-meta\">@Override<\/span>\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title function_\">destroy<\/span><span class=\"hljs-params\">()<\/span> {\r\n        <span class=\"hljs-comment\">\/\/ \u6e05\u7406\u64cd\u4f5c<\/span>\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>In the example above, we implemented a custom filter called MyFilter and overrode its init, doFilter, and destroy methods.<\/p>\n<p>In the doFilter method, we first convert ServletRequest and ServletResponse into HttpServletRequest and HttpServletResponse objects in order to utilize more HTTP-related methods and attributes.<\/p>\n<p>Next, we can obtain the request parameters through the HttpServletRequest object, filter or modify the request. In this example, we will convert the value of username to uppercase and set it as an attribute of the request.<\/p>\n<p>Finally, we invoke the doFilter method of FilterChain to pass the request and response to the next filter or servlet for processing.<\/p>\n<p>Note: When configuring a filter in the web.xml file, it is important to bind the filter to a specific URL pattern or servlet name so that the filter can be invoked when a request is received.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Java, FilterChain is an interface in Servlet that is used to filter or modify requests before passing them on to the next filter or servlet. Here is an example using FilterChain: import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { \/\/ [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-27235","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How do you use the filterchain in Java? - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How do you use the filterchain in Java?\" \/>\n<meta property=\"og:description\" content=\"In Java, FilterChain is an interface in Servlet that is used to filter or modify requests before passing them on to the next filter or servlet. Here is an example using FilterChain: import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { \/\/ [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-16T08:08:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-22T10:32:21+00:00\" \/>\n<meta name=\"author\" content=\"Ava Mitchell\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ava Mitchell\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/\"},\"author\":{\"name\":\"Ava Mitchell\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64\"},\"headline\":\"How do you use the filterchain in Java?\",\"datePublished\":\"2024-03-16T08:08:31+00:00\",\"dateModified\":\"2024-03-22T10:32:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/\"},\"wordCount\":179,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/\",\"name\":\"How do you use the filterchain in Java? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-16T08:08:31+00:00\",\"dateModified\":\"2024-03-22T10:32:21+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How do you use the filterchain in Java?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64\",\"name\":\"Ava Mitchell\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g\",\"caption\":\"Ava Mitchell\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/avamitchell\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How do you use the filterchain in Java? - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/","og_locale":"en_US","og_type":"article","og_title":"How do you use the filterchain in Java?","og_description":"In Java, FilterChain is an interface in Servlet that is used to filter or modify requests before passing them on to the next filter or servlet. Here is an example using FilterChain: import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { \/\/ [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-16T08:08:31+00:00","article_modified_time":"2024-03-22T10:32:21+00:00","author":"Ava Mitchell","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Ava Mitchell","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/"},"author":{"name":"Ava Mitchell","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64"},"headline":"How do you use the filterchain in Java?","datePublished":"2024-03-16T08:08:31+00:00","dateModified":"2024-03-22T10:32:21+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/"},"wordCount":179,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/","url":"https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/","name":"How do you use the filterchain in Java? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-16T08:08:31+00:00","dateModified":"2024-03-22T10:32:21+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-do-you-use-the-filterchain-in-java\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How do you use the filterchain in Java?"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/a3e2658c2cb9fb2be95ae0a8861f4a64","name":"Ava Mitchell","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/15c63cd0564b4a2e07d611bcdffa296f6ea80e8db07c3091f43a84010514899d?s=96&d=mm&r=g","caption":"Ava Mitchell"},"url":"https:\/\/www.silicloud.com\/blog\/author\/avamitchell\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/27235","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=27235"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/27235\/revisions"}],"predecessor-version":[{"id":61453,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/27235\/revisions\/61453"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=27235"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=27235"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=27235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}