Servlet 教程 之 Servlet 异常处理 5

简介: `ErrorHandler` 是一个Servlet示例,用于处理错误和异常。当发生错误时,它捕获并显示相关详细信息,如异常类型、Servlet名称、请求URI和错误代码。通过响应设置为HTML格式,向用户展示友好的错误页面。支持GET和POST方法。

Servlet 教程 之 Servlet 异常处理 5

Servlet 异常处理

Servlet 错误处理程序实例

以下是 Servlet 实例,将应对任何您所定义的错误或异常发生时的错误处理程序。

本实例让您对 Servlet 中的异常处理有基本的了解,您可以使用相同的概念编写更复杂的异常处理应用程序:

//导入必需的 java 库
import java.io.;
import javax.servlet.
;
import javax.servlet.http.;
import java.util.
;

//扩展 HttpServlet 类
public class ErrorHandler extends HttpServlet {

// 处理 GET 方法请求的方法
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
    Throwable throwable = (Throwable)
    request.getAttribute("javax.servlet.error.exception");
    Integer statusCode = (Integer)
    request.getAttribute("javax.servlet.error.status_code");
    String servletName = (String)
    request.getAttribute("javax.servlet.error.servlet_name");
    if (servletName == null){
        servletName = "Unknown";
    }
    String requestUri = (String)
    request.getAttribute("javax.servlet.error.request_uri");
    if (requestUri == null){
        requestUri = "Unknown";
    }
    // 设置响应内容类型
    response.setContentType("text/html;charset=UTF-8");

    PrintWriter out = response.getWriter();
    String title = "百度 Error/Exception 信息";

    String docType = "<!DOCTYPE html>\n";
    out.println(docType +
        "<html>\n" +
         "<head><title>" + title + "</title></head>\n" +
         "<body bgcolor=\"#f0f0f0\">\n");
       out.println("<h1>百度异常信息实例演示</h1>");
       if (throwable == null && statusCode == null){
          out.println("<h2>错误信息丢失</h2>");
          out.println("请返回 <a href=\"" + 
        response.encodeURL("http://localhost:8080/") + 
            "\">主页</a>。");
       }else if (statusCode != null) {
          out.println("错误代码 : " + statusCode);
    }else{
           out.println("<h2>错误信息</h2>");
          out.println("Servlet Name : " + servletName + 
                          "</br></br>");
          out.println("异常类型 : " + 
                          throwable.getClass( ).getName( ) + 
                          "</br></br>");
          out.println("请求 URI: " + requestUri + 
                          "<br><br>");
          out.println("异常信息: " + 
                              throwable.getMessage( ));
       }
       out.println("</body>");
       out.println("</html>");
}
// 处理 POST 方法请求的方法
public void doPost(HttpServletRequest request,
                  HttpServletResponse response)
   throws ServletException, IOException {
    doGet(request, response);
}

}

目录
相关文章
|
5月前
|
自然语言处理 定位技术
Servlet 教程 之 Servlet 国际化 3
Servlet教程展示了如何实现国际化(i18n)和本地化(l10n),利用`request.getLocale()`获取用户区域设置,通过`DateFormat`类格式化特定区域的日期。示例代码演示了根据用户区域显示相应日期,强调了处理多语言网站的关键方法,如`getCountry()`、`getLanguage()`等。
47 6
|
1月前
|
Java API UED
探索研究Servlet 异常处理
【9月更文挑战第25天】
28 0
|
3月前
|
前端开发 Java 应用服务中间件
JavaEE:Servlet后端搭建部署 一条龙全教程
JavaEE:Servlet后端搭建部署 一条龙全教程
|
5月前
|
开发框架 缓存 Java
JSP 教程 之 Eclipse JSP/Servlet 环境搭建 1
本教程指导如何使用Eclipse搭建JSP/Servlet开发环境。需下载Eclipse J2EE和Tomcat,将Tomcat解压至无中文和空格的D盘目录。启动Tomcat后,服务器运行,通过浏览器访问`http://localhost:8080/`。在Tomcat的webapps\ROOT目录创建test.jsp文件,输入代码并访问`http://localhost:8080/test.jsp`以验证环境配置成功。
86 1
|
5月前
|
小程序
Servlet 教程 之 Servlet 调试 3
Servlet调试是开发中的挑战,涉及复杂交互且错误难复现。使用JDB调试器,将HttpServer视为Servlet响应HTTP请求的调试目标。调试时,需配置调试器的classpath以包含HttpServer、Servlet及其相关类。为启用Servlet重载,通常将`server_root/servlets`加入classpath,但在调试时此规则有助于在加载Servlet前设置断点。在正确配置后,可在Servlet代码中设定断点,通过浏览器请求该Servlet以启动调试,程序会在断点处暂停。
53 6
|
5月前
|
自然语言处理 定位技术
Servlet 教程 之 Servlet 国际化 4
Servlet教程之国际化讲解了如何根据用户区域设置展示多语言内容。关键术语包括国际化(i18n)、本地化(l10n)和区域设置(locale)。Servlet通过`request.getLocale()`获取区域设置,并使用`NumberFormat`类格式化特定区域的货币。示例代码展示了如何根据客户端locale显示货币格式。
40 3
|
5月前
|
定位技术
Servlet 教程 之 Servlet 国际化 3
Servlet教程展示了如何实现国际化(i18n)和本地化(l10n)。通过request对象的getLocale()获取用户区域设置,利用DateFormat进行特定区域的日期格式化。示例代码显示了根据用户浏览器设置显示相应语言和文化的日期。
36 2
|
5月前
|
Java 关系型数据库 MySQL
Servlet 教程 之 Servlet 有用的资源
探索Servlet世界:访问Sun&#39;s Site获取官方资料,Tomcat作为开源JSP引擎,搭配MySQL Connector/J实现数据库连接。深入学习Java编程,参考The Java Tutorials及Java 2 SDK文档,免费下载Java并关注Sun Developer Network获取最新资源。
40 1
|
5月前
|
缓存 小程序 Java
Servlet 教程 之 Servlet 调试 6
Servlet调试涉及大量客户端/服务器交互,常带来困难。使用JDB调试器调试HttpServer来模拟HTTP请求,需设置正确类路径,包括servlet和相关类,以及servlet和支撑类的路径。通过在Servlet代码中设置断点,通过浏览器触发请求进行调试。注释法也可辅助调试,通过暂时移除部分代码观察bug变化。查看HTTP头信息对理解Servlet行为有帮助。关键技巧包括:注意classes目录不重载,强制浏览器刷新避免缓存,确保servlet的init()方法正确处理ServletConfig。
41 3
|
5月前
|
定位技术
Servlet 教程 之 Servlet 国际化 2
Servlet教程展示了如何实现网站的国际化(i18n)和本地化(l10n)。通过识别用户的区域设置(locale),Servlet可以提供不同语言版本的页面。`request.getLocale()`用于获取用户浏览器的locale。关键方法包括`getCountry()`、`getDisplayCountry()`、`getLanguage()`和`getDisplayLanguage()`,用于获取国家、语言名称及其显示形式。设置`Content-Language`头确保西欧语言的正确显示,例如在Servlet示例中,使用HTML实体显示西班牙语字符。
34 0