请求调度程序转发后如何获取原始页面 url/uri

2023-12-05

我有一个 Error404Servlet,它在 web.xml 中配置为 404 的错误页面:

   <servlet>
      <servlet-name>Error404</servlet-name>
      <servlet-class>com.foo.bar.Error404Servlet</servlet-class>
   </servlet>

   <error-page>
      <error-code>404</error-code>
      <location>/error404</location>
   </error-page>

在此 servlet 中,我必须记录导致 404 的原始 url,但 request.getRequestURI() 始终返回“/error404”

怎样才能得到原来的url呢?我知道的唯一丑陋的方法是创建过滤器,将原始 url 放入 request 属性。


在发生错误时,您可以从请求中检索容器设置的属性:

request.getAttribute("javax.servlet.error.request_uri");

其他可以提供有用信息的属性;

javax.servlet.error.status_code
javax.servlet.error.exception_type
javax.servlet.error.message
javax.servlet.error.exception

另请参阅此servlet 2.3 特性文章.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

请求调度程序转发后如何获取原始页面 url/uri 的相关文章

随机推荐

  • 如何将 Alt+空格发送到控制台窗口?

    import win32com client shell win32com client Dispatch WScript Shell shell AppActivate Command Prompt shell SendKeys This
  • c 中的全局键盘挂钩

    我想写一个全局键盘钩子来禁止任务切换 当我用谷歌搜索时 我发现了很多c cpp 和delphi 中的代码 但我需要一些关于钩子的基本概念 如果例子是C语言的 那将是最好的 所以 请建议可以帮助我从 C 角度理解事物的资源 链接 PS I f
  • 同一页面上有多个 Google CSE(自定义搜索引擎)框

    我正在尝试在同一页面上实现两个 不同的 Google CSE 搜索框 问题是只有第一个实例可以正常工作 例如 标题中的站点范围搜索框 然后在某些页面上 第二个搜索框在站点的狭窄筒仓内进行搜索 等等 这不能正常工作 因为使用谷歌为每个框生成的
  • 从txt文件中打印随机行?

    我使用 random randint 生成随机数 然后将该数字分配给变量 然后我想打印带有分配给变量的数字的行 但我不断收到错误 列表索引超出范围 这是我尝试过的 f open filename txt lines f readlines
  • 使用 bootstrap 3 垂直对齐中间内容

    我想使用最新的引导程序在 div 块中设置垂直中间内容v3 2 0 我已阅读答案与 bootstrap 3 垂直对齐 但它使用float none 在 div 块中 但是 我can t use float none 根据我们的布局在 div
  • 启用 SQL Server Express 2012 的远程连接

    我刚刚在我的家庭服务器上安装了 SQL Server Express 2012 我尝试从台式电脑上的 Visual Studio 2012 连接到它 并反复收到众所周知的错误 与 SQL Server 建立连接时发生与网络相关或特定于实例的
  • 如何在网站网址上隐藏我的网站端口号 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我的网站是用JAVA实现的 所以我们采用了VPS并安装了Tomcat然后部署 我的网站是这样的 每当我点击 url 中的 www mysite com 时 它就会显示如下 http
  • 将 posix 样式时区转换为 c# .net 中的 timezoneinfo

    我从另一台机器获取时区信息 格式如下 CET 1CEST M3 5 0 2 M10 5 0 3 Posix 风格时区 我需要解析它并将其转换为c net TimeZoneInfo class 有办法实现这一点吗 根据这篇文章 http ww
  • 编辑 Google Storage 对象元数据需要哪些权限?

    我有以下 Perl 代码 response process gt request PATCH https www googleapis com storage v1 b Bucket o EscapedName content type i
  • Android 搜索活动未启动

    当我按下 Android 手机上的搜索按钮时 我的搜索框不显示 我想要做的是执行 ASyncTask 或后台任务 来获取字符串数组 人名 的 JSON 响应 搜索结果 并使用 IMDB 具有的相同搜索功能将其显示给用户 目前 我正在使用字符
  • 读取使用内联填充的 C# Textblock 文本属性

    假设我有一个空的 Textblock textblock1 Text 然后我只用这两条语句将内联内容放入其中 textblock1 Inlines Add new Run Text A Foreground Brushes Red text
  • switch case 中的默认值

    下面是我需要优化的代码 并计划最好转移到switch构造 但我可以比较case 所以我打算进行比较 len gt 3 作为default case 如果我将比较部分 len gt 3 作为默认情况并添加default作为switch中的第一
  • groupby DataFrame 按 N 列或 N 行

    我想找到一个通用的解决方案来按指定数量的行或列对 DataFrame 进行分组 示例数据框 df pd DataFrame 0 index a b c d e f columns c1 c2 c3 c4 c5 c6 c7 c1 c2 c3
  • Spring类路径前缀差异

    记录于4 7 2 2 类路径 前缀它指出 这个特殊的前缀指定所有 匹配的类路径资源 必须获得名字 在内部 这基本上发生 通过 ClassLoader getResources 调用 然后合并形成 最终应用程序上下文定义 有人可以解释一下吗
  • Tomcat:Web 应用程序中的自定义表单验证器,而不是作为独立的 JAR 模块。可能的?

    我们的 Web 应用程序需要内部具有特定逻辑的自定义表单身份验证 当前的表单验证器实现需要验证器模块 我们称之为custom auth jar 出现在 CATALINA HOME lib在 Web 应用程序启动之前 Web 应用程序使用该自
  • 使用 C# 从 Windows 服务捕获关键事件

    我必须用 C 编写一个应用程序来侦听按下的任何按键 实际上 我有一个条形码扫描仪发送 按键按下 事件 我需要听它 它的作用超出了我的问题范围 我的安全要求是不允许任何登录以任何形状或形式连接到机器并且这必须作为 Windows 服务运行 用
  • 查找最长的重复字符串及其在给定字符串中的重复次数

    例如 给定字符串 abc fghi bc kl abcd lkm abcdefg 该函数应返回字符串 abcd 以及 2 的计数 O n 2 解决方案似乎很简单 但我正在寻找更好的解决方案 Edited 如果不可能有比 O n 2 更好的方
  • 量词中的非零向量

    我想验证以下形式的公式 Exists p ForAll x 0 f x p gt 0 一个实现 不起作用 如下 def f0 x0 x1 x y return x1 2 y x0 2 x s Solver x0 x1 Reals x0 x1
  • 从大型固定宽度文本中解析未排序的数据

    我主要是一个 Matlab 用户和 Perl n00b 这是我的第一个 Perl 脚本 我有一个大型固定宽度数据文件 我想将其处理成带有目录的二进制文件 我的问题是数据文件非常大 并且数据参数按时间排序 这使得解析到 Matlab 变得困难
  • 请求调度程序转发后如何获取原始页面 url/uri

    我有一个 Error404Servlet 它在 web xml 中配置为 404 的错误页面