{"id":3568,"date":"2024-03-13T07:08:21","date_gmt":"2024-03-13T07:08:21","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-does-tomcat-handle-error-pages\/"},"modified":"2025-07-30T18:10:16","modified_gmt":"2025-07-30T18:10:16","slug":"how-does-tomcat-handle-error-pages","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-does-tomcat-handle-error-pages\/","title":{"rendered":"Tomcat Error Pages: Configure in web.xml"},"content":{"rendered":"<p>There are two ways to handle error pages in Tomcat.<\/p>\n<ol>\n<li>Setting error pages using web.xml: In the web.xml file, you can configure global error pages as well as error pages corresponding to specific error codes. For example:<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">error-page<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">error-code<\/span>&gt;<\/span>404<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">error-code<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">location<\/span>&gt;<\/span>\/error\/404.html<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">location<\/span>&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">error-page<\/span>&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">error-page<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">error-code<\/span>&gt;<\/span>500<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">error-code<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">location<\/span>&gt;<\/span>\/error\/500.html<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">location<\/span>&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">error-page<\/span>&gt;<\/span>\r\n<\/code><\/pre>\n<ol>\n<li>Using Servlet to handle error pages: You can customize a Servlet to handle error pages by implementing the javax.servlet.ErrorPage interface, to handle various error page scenarios. For example:<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-meta\">@WebServlet(\"\/errorHandler\")<\/span>\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title class_\">ErrorHandlerServlet<\/span> <span class=\"hljs-keyword\">extends<\/span> <span class=\"hljs-title class_\">HttpServlet<\/span> <span class=\"hljs-keyword\">implements<\/span> <span class=\"hljs-title class_\">ErrorPage<\/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_\">handleErrorPage<\/span><span class=\"hljs-params\">(HttpServletRequest request, HttpServletResponse response)<\/span> {\r\n        <span class=\"hljs-comment\">\/\/ \u5904\u7406\u9519\u8bef\u9875\u9762\u903b\u8f91<\/span>\r\n        response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);\r\n        response.setContentType(<span class=\"hljs-string\">\"text\/html\"<\/span>);\r\n        <span class=\"hljs-type\">PrintWriter<\/span> <span class=\"hljs-variable\">out<\/span> <span class=\"hljs-operator\">=<\/span> response.getWriter();\r\n        out.println(<span class=\"hljs-string\">\"&lt;html&gt;&lt;body&gt;\"<\/span>);\r\n        out.println(<span class=\"hljs-string\">\"&lt;h1&gt;Internal Server Error&lt;\/h1&gt;\"<\/span>);\r\n        out.println(<span class=\"hljs-string\">\"&lt;p&gt;Sorry, something went wrong.&lt;\/p&gt;\"<\/span>);\r\n        out.println(<span class=\"hljs-string\">\"&lt;\/body&gt;&lt;\/html&gt;\"<\/span>);\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>It is important to note that the above methods all require configuring the mapping relationship of the Servlet in web.xml or implementing the javax.servlet.ServletContainerInitializer interface, as well as handling error page logic in the Servlet.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There are two ways to handle error pages in Tomcat. Setting error pages using web.xml: In the web.xml file, you can configure global error pages as well as error pages corresponding to specific error codes. For example: &lt;error-page&gt; &lt;error-code&gt;404&lt;\/error-code&gt; &lt;location&gt;\/error\/404.html&lt;\/location&gt; &lt;\/error-page&gt; &lt;error-page&gt; &lt;error-code&gt;500&lt;\/error-code&gt; &lt;location&gt;\/error\/500.html&lt;\/location&gt; &lt;\/error-page&gt; Using Servlet to handle error pages: You can customize a [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[615,2069,2066,2068,2067],"class_list":["post-3568","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-error-handling","tag-java-server","tag-tomcat-error-pages","tag-tomcat-setup","tag-web-xml-configuration"],"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>Tomcat Error Pages: Configure in web.xml - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn how to configure Tomcat error pages using web.xml for 404\/500 errors. Step-by-step setup guide.\" \/>\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-does-tomcat-handle-error-pages\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tomcat Error Pages: Configure in web.xml\" \/>\n<meta property=\"og:description\" content=\"Learn how to configure Tomcat error pages using web.xml for 404\/500 errors. Step-by-step setup guide.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-does-tomcat-handle-error-pages\/\" \/>\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-13T07:08:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-30T18:10:16+00:00\" \/>\n<meta name=\"author\" content=\"Liam\" \/>\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=\"Liam\" \/>\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-does-tomcat-handle-error-pages\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-does-tomcat-handle-error-pages\/\"},\"author\":{\"name\":\"Liam\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671\"},\"headline\":\"Tomcat Error Pages: Configure in web.xml\",\"datePublished\":\"2024-03-13T07:08:21+00:00\",\"dateModified\":\"2025-07-30T18:10:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-does-tomcat-handle-error-pages\/\"},\"wordCount\":114,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"Error Handling\",\"Java server\",\"Tomcat error pages\",\"Tomcat setup\",\"web.xml configuration\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-does-tomcat-handle-error-pages\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-does-tomcat-handle-error-pages\/\",\"name\":\"Tomcat Error Pages: Configure in web.xml - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-13T07:08:21+00:00\",\"dateModified\":\"2025-07-30T18:10:16+00:00\",\"description\":\"Learn how to configure Tomcat error pages using web.xml for 404\/500 errors. Step-by-step setup guide.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-does-tomcat-handle-error-pages\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-does-tomcat-handle-error-pages\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-does-tomcat-handle-error-pages\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tomcat Error Pages: Configure in web.xml\"}]},{\"@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\/23786905eb7b377f45ddb01c17da7671\",\"name\":\"Liam\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g\",\"caption\":\"Liam\"},\"sameAs\":[\"http:\/\/Wilson\"],\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/liamwilson\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Tomcat Error Pages: Configure in web.xml - Blog - Silicon Cloud","description":"Learn how to configure Tomcat error pages using web.xml for 404\/500 errors. Step-by-step setup guide.","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-does-tomcat-handle-error-pages\/","og_locale":"en_US","og_type":"article","og_title":"Tomcat Error Pages: Configure in web.xml","og_description":"Learn how to configure Tomcat error pages using web.xml for 404\/500 errors. Step-by-step setup guide.","og_url":"https:\/\/www.silicloud.com\/blog\/how-does-tomcat-handle-error-pages\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-13T07:08:21+00:00","article_modified_time":"2025-07-30T18:10:16+00:00","author":"Liam","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Liam","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-does-tomcat-handle-error-pages\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-does-tomcat-handle-error-pages\/"},"author":{"name":"Liam","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/23786905eb7b377f45ddb01c17da7671"},"headline":"Tomcat Error Pages: Configure in web.xml","datePublished":"2024-03-13T07:08:21+00:00","dateModified":"2025-07-30T18:10:16+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-does-tomcat-handle-error-pages\/"},"wordCount":114,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["Error Handling","Java server","Tomcat error pages","Tomcat setup","web.xml configuration"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-does-tomcat-handle-error-pages\/","url":"https:\/\/www.silicloud.com\/blog\/how-does-tomcat-handle-error-pages\/","name":"Tomcat Error Pages: Configure in web.xml - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-13T07:08:21+00:00","dateModified":"2025-07-30T18:10:16+00:00","description":"Learn how to configure Tomcat error pages using web.xml for 404\/500 errors. Step-by-step setup guide.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-does-tomcat-handle-error-pages\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-does-tomcat-handle-error-pages\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-does-tomcat-handle-error-pages\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tomcat Error Pages: Configure in web.xml"}]},{"@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\/23786905eb7b377f45ddb01c17da7671","name":"Liam","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8d37ed3e7f770dde8bf069ba0b4298688028c3abaacf1131742fc1352d174ebd?s=96&d=mm&r=g","caption":"Liam"},"sameAs":["http:\/\/Wilson"],"url":"https:\/\/www.silicloud.com\/blog\/author\/liamwilson\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/3568","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\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=3568"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/3568\/revisions"}],"predecessor-version":[{"id":148222,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/3568\/revisions\/148222"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=3568"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=3568"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=3568"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}