<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<link rel="stylesheet" type="text/css" href="../../com.ibm.help.doc/swg_info_common.css" />
<title>Adding or removing an error page from a Web application</title>
<script language="JavaScript">
    function popup_window( url, id, width, height )
    {
      popup = window.open( url, id, 'toolbar=no,scrollbars=no,location=no,statusbar=no,menubar=no,resizable=no,width=' + width + ',height=' + height + ',left=,top=' );
      popup.focus();
    }
</script><script language="JavaScript" src="help/liveHelp.js"></script></head>
<body id="twedrmerr"><a name="twedrmerr"><!-- --></a>

<h1 class="topictitle1">Adding or removing an error page from a Web application</h1>
<div><div class="skipspace">Error pages are pages that you configure to display in response to

specific HTTP error codes. To add or remove an error page from a Web application,

you must add or remove the error page from the web.xml file. To do this using

the Web deployment descriptor editor, complete the following steps:<p></p>
</div>
<ol><li><span>Open the Web perspective and display the Project Explorer.</span></li>
<li><span>Expand your project and double click on the Deployment Descriptor

icon. The Web deployment descriptor window appears.</span></li>
<li><span>Select the <b>Pages</b> tab, and in the Error Pages section, select

the <b>Add</b> button to add an error file. To remove an error file, select

the file and then select the <b>Remove</b> button.</span></li>
</ol>
</div>
<div><p><b class="relconceptshd">Related concepts</b><br />
<a href="ccwebxml.html" title="">The Web deployment descriptor editor</a><br />
</p>
<p><b class="reltaskshd">Related tasks</b><br />
<a href="twedtwbx.html" title="">Configuring Web applications using the Web deployment descriptor editor</a><br />
</p>
</div>
<p>
		(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.
</p>
</body>
</html>