处理SERVLET中的错误和异常

news2025/1/17 21:38:46

在这里插入图片描述

在这里插入图片描述

处理SERVLET中的错误和异常

应用服务器服务客户机请求时可能会遇到一些问题,如找不到所请求的资源或运行中的servlet引发异常。例如,在线购物门户中如果用户选择了当前缺货的物品要放入购物车中,就会出现问题,
这种情况下,浏览器窗口中将显示错误消息。您可以在servlet中进行异常处理操作来处理servlet引发的异常。您还可以自定义错误页面来显示异常和错误消息,并将这些消息记录到应用服务器日志文件中。


在这里插入图片描述

1. 处理servlet异常

Servelt API在javax.servlet包中定义了两个Exception类,分别是ServletException和UnavailableException。UnavailableException类是ServletException类的子类。

javax.servlet.ServletException类

javax.servlet.ServletException类在javax.servlet包中定义,是java.lang.Exception类的子类。该类定义了servlet在处理客户机请求时引发的servlet异常。该类包含getRootCause()方法,可返回java.lang.Throwable类型的对象以表示异常的根本原因。

javax.servlet.UnavailableException类

servlet暂时或永久不可用时,引发javax.servlet.UnavailableException Exception类。UnavailableException类提供的方法为:

  1. public boolean isPermanent():返回描述servlet是否永久不可用的布尔值。如果servlet永久不可用,该方法返回true。
  2. public int getUnavailableSeconds():返回servlet不可用的时间,单位为秒。

在这里插入图片描述

2. 处理错误

Web应用程序中的servlet能生成错误并引发异常。您可以通过发送表示各种错误类型的错误消息和状态代码来为用户提供关于这些错误和异常的信息。还可以创建自定义错误页面来格式化并显示关于所发生的错误和异常类型的信息。还可以将错误和异常纪录到服务器日志文件中,以便跟踪在Web应用程序中发生的错误和异常。

错误消息和状态代码

状态代码是应用服务器发送给客户机的关于客户机请求成功或失败的信息。应用服务器服务客户机请求时,通过响应对象向客户机浏览器返回状态代码。javax.servlet.http包的HttpServletResponse类定义了表示状态代码的各种字段。servlet可以使用这些字段发送状态代码。状态代码在逻辑上可分为以下五个类别:

  1. 信息:信息代码组表示关于收到请求且应用服务器正在处理该请求的消息。一些表示信息代码的HttpServletResponse字段有:
    ①SC_SWITCHING_PROTOCOLS:表示101状态代码,表示应用服务器切换了协议。
    ②SC_CONTINUE:表示100状态代码,表明客户机可继续与应用服务器交互。
  2. 成功:成功代码组表示成功消息,表明请求成功。一些表示成功代码的HttpServletResponse字段有:
    ①SC_OK:表示200状态代码,表明成功接收请求。
    ②SC_ACCEPTED:表示202状态代码,表明服务器已接受请求,正在处理该请求。
  3. 重定向:重定向代码组表示重定向消息,表明请求被重定向得到其他页面进行处理和服务。一些表示客户机错误代码的HttpServletResponse字段有:
    ①SC_BAD_REQUEST:表示400状态代码,表明客户机请求的语法不正确。
    ②SC_NOT_FOUND:表示404状态代码,表明客户机请求的资源不可用。
    ③SC_GONE:表示410状态代码,表明资源已不再可用。
  4. 服务器错误:服务器错误代码组表示服务器错误,表明服务器无法实现客户机请求。一些表示服务器错误代码的HttpServletResponse字段有:
    ①SC_

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1442145.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

cesium系列篇:Entity vs Primitive 源码解析(从Entity到Primitive)02

上篇文章中,我们介绍了使用viewer.entities.add添加entity之后的信号传递以及最后entity对象被传递到GeometryVisualizer; 这篇文章,我们则介绍如何在逐帧渲染的过程中根据GeometryVisualizer中的entity对象创建相应的primitive 这是下文中…

C++ 动态规划 树形DP 没有上司的舞会

Ural 大学有 N 名职员,编号为 1∼N 。 他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。 每个职员有一个快乐指数,用整数 Hi 给出,其中 1≤i≤N 。 现在要召开一场周年庆宴会,不过,没有职…

那些 C语言指针 你不知道的小秘密 (3)

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 我会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能…

【从0上手Cornerstone3D】如何使用CornerstoneTools中的工具之同步器

同步器(Synchronizers)可以使多个视图同步响应同一个工具的操作,例如我们在MPR视图下,同步操作三个视图的缩放程度、windowLevel等等 一个同步器必须需要以下几个部分才可以执行 一个监听事件(什么情况下触发同步&…

STL之stack+queue的使用及其实现

STL之stackqueue的使用及其实现 1. stack,queue的介绍与使用1.1stack的介绍1.2stack的使用1.3queue的介绍1.4queue的使用 2.stack,queue的模拟实现2.1stack的模拟是实现2.2queue的模拟实现 3.总结 所属专栏:C“嘎嘎" 系统学习❤️ &…

【Spring】springmvc如何处理接受http请求

目录 ​编辑 1. 背景 2. web项目和非web项目 3. 环境准备 4. 分析链路 5. 总结 1. 背景 今天开了一篇文章“SpringMVC是如何将不同的Request路由到不同Controller中的?”;看完之后突然想到,在请求走到mvc 之前服务是怎么知道有请求进来…

[BUUTF]-PWN:wdb2018_guess解析

查看保护 查看ida 这道题并不复杂,只是要注意一点细节 完整exp: from pwn import* from LibcSearcher import* pprocess(./guess) premote(node5.buuoj.cn,28068) puts_got0x602020payloadba*0x128p64(puts_got) p.sendlineafter(bPlease type your gu…

基于语义解析的知识图谱问答系统

目录 前言1 背景介绍2 语义解析的核心技术2.1 自然语言处理(NLP)2.2 语义表示学习2.3 实体关系抽取 3 语义解析的基本步骤3.1 短语检测3.2 资源映射3.3 语义组合3.4 逻辑表达式生成 4 处理与知识图谱无关的问句4.1 Bridging技术4.2 确定谓词4.3 Paraphra…

杨中科 配置系统

1、配置系统入门 说明 1、传统Web.config配置的缺点,之前DI讲到过 2、为了兼容,仍然可以使用Web.config和ConfigurationManager类,但不推荐。 3、.NET 中的配置系统支持丰富的配置源,包括文件(json、xml、ini等)、注册表、环境变…

Redis保证数据不丢失的手段

Redis 保证数据不丢失的主要手段有两个: 持久化集群运行 我们分别来看它们两的具体实现细节。 # 1.Redis 持久化 持久化是指将数据从内存中存储到持久化存储介质中(如硬盘)的过程,以便在程序重启或者系统崩溃等情况下&#xf…

1898_野火FreeRTOS教程阅读笔记_链表操作

1898_野火FreeRTOS教程阅读笔记_链表操作 全部学习汇总: g_FreeRTOS: FreeRTOS学习笔记 (gitee.com) 新的节点的插入,影响到的是链表中最后一个元素的后继以及当前被插入元素的前驱、后继以及归属属性。具体的操作效果为:新的节点更新自己的前…

101. 对称二叉树 - 力扣(LeetCode)

题目描述 给你一个二叉树的根节点 root , 检查它是否轴对称。 题目示例 输入:root [1,2,2,3,4,4,3] 输出:true 解题思路 首先想清楚,判断对称二叉树要比较的是哪两个节点,要比较的可不是左右节点! 对于…

SAP-PS-001-006问题预算占用与订单实际金额不一致

前言 PS模块最复杂的业务场景主要就是ETO(Engineering-To-Order),也就是边设计边生产边采购的三边业务。 意味着从前端设计开始的成本就已经要进行收集,其次对于大型非标设备的生产发货只是一个环节,发货后还会涉及到现…

Java项目maven打包的包名设置(finalname标签的使用)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

年-月-日的输入方法

大家对于输入的函数一定有所认识&#xff0c;比如c中位于 #include <iostream> 中的 cin 函数&#xff0c;这个函数输入单个十分好用&#xff0c;但是对于年月日这种较为复杂的就行不通了&#xff0c;就只能输入最前面的一个 那怎么输入像这样的年月日呢 答案就是用 scan…

JVM-双亲委派机制

双亲委派机制定义 双亲委派机制指的是&#xff1a;当一个类加载器接收到加载类的任务时&#xff0c;会自底向上查找是否加载过&#xff0c; 再由顶向下进行加载。 详细流程 每个类加载器都有一个父类加载器。父类加载器的关系如下&#xff0c;启动类加载器没有父类加载器&am…

C++2024寒假J312实战班2.6

错题列表&#xff1a; #1Playlist #2分数线划定 #3Made Up #4图书管理员 #1Playlist 我们来介绍滑动窗口的写法&#xff1a; 1、使用一个滑动窗口k[l,r)在歌曲列表中移动。 2、同时利用一个unordered_set S来检测窗口中的歌曲是否有重复。如果窗口右端的歌曲在窗口内没有重复…

LLM应用开发与落地:流式响应

一、背景 最近智能客服产品给到一个游戏客户那边&#xff0c;客户那边的客服负责人体验后认为我们产品回答的准确率是还是比较高的。同时&#xff0c;他反馈了几个需要改进的地方&#xff0c;其中一个就是机器人回复慢。机器人回复慢有很多原因&#xff0c;也有优化方式&#…

2019 年全国职业院校技能大赛高职组 “信息安全管理与评估”赛项任务书(笔记详解)

1. 网络拓扑图 2. IP 地址规划表 3. 设备初始化信息 阶段一 任务 1:网络平台搭建 1、根据网络拓扑图所示,按照 IP 地址参数表,对 DCFW 的名称、各接口IP 地址进行配置。 2、根据网络拓扑图所示,按照 IP 地址参数表,对 DCRS 的名称进行配置,创建 VLAN 并将相应接口划入 …

C#,雷卡曼数(Recamán Number)的算法与源代码

1 雷卡曼数&#xff08;Recamn Number&#xff09; 雷卡曼数&#xff08;Recamn Number&#xff09;&#xff0c;即Recaman序列被定义如下&#xff1a; (1) a[0]0; (2) 如果a[m-1]-m>0并且这个值在序列中不存在&#xff0c;则a[m]a[m-1]-m; (3) 否则a[m]a[m-1]m; 雷卡曼序…