提交响应后是否可以从 servlet 过滤器转发或重定向?

2023-11-22

逻辑是过滤器被命中,条件不为真,所以它通过过滤器链。提交响应后,过滤器被命中,并且条件现在为真(请求属性已设置)。它进去执行转发,但页面从未转发。我知道这与提交的响应有关,因为我测试了它在第一次到达链之前转发的不同逻辑,并且它确实转发成功。

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {

    HttpServletRequest httpServletRequest = (HttpServletRequest)request;

    if (some condition equals true) {
        httpServletRequest.getRequestDispatcher("/home.jsp").forward(request, response);
        return;
    } else {
        chain.doFilter(request, response);
    }
}

我的部署描述符中的示例:

<filter>
    <filter-name>MyFilter</filter-name>
    <filter-class>com.filters.MyFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>MyFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
    <dispatcher>REQUEST</dispatcher>  
    <dispatcher>FORWARD</dispatcher> 
</filter-mapping>

的“承诺”状态HttpServletResponse实际上是一种表示响应头是否已写入底层套接字的方法。 “承诺”的回应已经(至少)写下了第一行。由于响应的第一行包含状态代码,因此您无法更改已提交响应的状态代码...这意味着将状态更改为 3xx 来进行重定向为时已晚。同样,您无法执行本地转发,因为您已经开始发送响应。

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

提交响应后是否可以从 servlet 过滤器转发或重定向? 的相关文章

  • 在 mvn 命令中指定 pom.xml 并混合其他项目的目标

    我有多个问题 我可以在 mvn 命令中指定 pom xml 吗 在当前项目上执行 mvn 命令时 我可以混合另一个项目的目标吗 例如 mvn clean otherproject comple otherproject install ot
  • 从 java sdk 向对等方发送提案时出现访问被拒绝错误

    我正在尝试使用以下代码查询区块链并收到访问被拒绝错误 我也遇到同样的错误sendTransactionProposal方法也是如此 UserContext adminUserContext RegisterEnrollUser regist
  • Java Runtime.getRuntime().freeMemory() 问题

    我搜索并看到了一些线程 但没有一个能够解决我遇到的具体问题 我正在尝试使用以下方式监视我的内存使用情况Runtime getRuntime freeMemory Runtime getRuntime maxMemory and Runtim
  • 使用 Ant 将非代码资源添加到 jar 文件

    我正在将 java 应用程序打包成 jar 文件 我正在使用 ant 和 eclipse 我实际上需要在 jar 中直接在根文件夹下包含几个单独的非代码文件 xml 和 txt 文件 而不是与代码位于同一位置 我正在尝试使用includes
  • JVisualVM/JConsole 中的 System.gc() 与 GC 按钮

    我目前正在测试处理 XML 模式的概念验证原型 并围绕一个非常消耗内存的树自动机外部库 我已经获得了源代码 构建 我想绘制 真实峰值 堆 随着模式大小的增加 不同运行的内存消耗 使用的指标符合我的目的并且不会影响问题 或者至少是它的合理近似
  • 打印星号的 ASCII 菱形

    我的程序打印出这样的钻石 但只有当参数或菱形的每一面为4 例如如果我输入6 底部三角形的间距是错误的 我一直在试图找出答案 当参数改变时 底部的三角形不会改变 只有顶部的三角形会改变 它只适用于输入4 public static void
  • 大数据使用什么数据结构

    我有一个包含一百万行的 Excel 工作表 每行有 100 列 每行代表一个具有 100 个属性的类的实例 列值是这些属性的值 哪种数据结构最适合在这里使用来存储数百万个数据实例 Thanks 这实际上取决于您需要如何访问这些数据以及您想要
  • 自动生成Flyway的迁移SQL

    当通过 Java 代码添加新模型 字段等时 JPA Hibernate 的自动模式生成是否可以生成新的 Flyway 迁移 捕获自动生成的 SQL 并将其直接保存到新的 Flyway 迁移中 以供审查 编辑 提交到项目存储库 这将很有用 预
  • 内部存储的安全性如何?

    我需要的 对于 Android 我需要永久保存数据 但也能够编辑 并且显然是读取 它 用户不应访问此数据 它可以包含诸如高分之类的内容 用户不得对其进行编辑 我的问题 我会 并且已经 使用过Internal Storage 但我不确定它实际
  • 读取电子邮件的文本文件转换为 Javamail MimeMessage

    我有一个电子邮件原始来源的文本文件 直接从 gmail 复制 如果您单击 查看原始文件 您就会看到它 我想读入该文件并将其转换为 MimeMessage 如果您好奇为什么 我设置了 JavaMaildir 并且需要用电子邮件填充它的收件箱以
  • 流中的非终结符 forEach() ?

    有时 在处理 Java Stream 时 我发现自己需要一个非终端 forEach 来触发副作用但不终止处理 我怀疑我可以用 map item gt f item 之类的方法来做到这一点 其中方法 f 执行副作用并将项目返回到流中 但这似乎
  • QuerySyntaxException:无法找到类

    我正在使用 hql 生成 JunctionManagementListDto 类的实际 Java 对象 但我最终在控制台上出现以下异常 org hibernate hql internal ast QuerySyntaxException
  • 如何在 Java 中创建接受多个值的单个注释

    我有一个名为 Retention RetentionPolicy SOURCE Target ElementType METHOD public interface JIRA The Key Bug number JIRA referenc
  • 使用布尔值进行冒泡排序以确定数组是否已排序

    我有以下用于冒泡排序的代码 但它根本不排序 如果我删除布尔值那么它工作正常 我知道 由于我的 a 0 小于所有其他元素 因此没有执行交换 任何人都可以帮助我解决这个问题 package com sample public class Bub
  • JMenu 中的文本居中

    好吧 我一直在网上寻找有关此问题的帮助 但我尝试的任何方法似乎都不起作用 我想让所有菜单文本都集中在菜单按钮上 当我使用setHorizontalTextPosition JMenu CENTER 没有变化 事实上 无论我使用什么常量 菜单
  • Java中HashMap和ArrayList的区别?

    在爪哇 ArrayList and HashMap被用作集合 但我不明白我们应该在哪些情况下使用ArrayList以及使用时间HashMap 他们两者之间的主要区别是什么 您具体询问的是 ArrayList 和 HashMap 但我认为要完
  • 将 Apache Camel 执行器指标发送到 Prometheus

    我正在尝试转发 添加 Actuator Camel 指标 actuator camelroutes 将交换 交易数量等指标 发送到 Prometheus Actuator 端点 有没有办法让我配置 Camel 将这些指标添加到 Promet
  • 在浏览器刷新中刷新检票面板

    我正在开发一个付费角色系统 一旦用户刷新浏览器 我就需要刷新该页面中可用的统计信息 统计信息应该从数据库中获取并显示 但现在它不能正常工作 因为在页面刷新中 java代码不会被调用 而是使用以前的数据加载缓存的页面 我尝试添加以下代码来修复
  • 洪水填充优化:尝试使用队列

    我正在尝试创建一种填充方法 该方法采用用户指定的初始坐标 检查字符 然后根据需要更改它 这样做之后 它会检查相邻的方块并重复该过程 经过一番研究 我遇到了洪水填充算法并尝试了该算法 它可以工作 但无法满足我对 250 x 250 个字符的数
  • 在java中使用多个bufferedImage

    我正在 java 小程序中制作游戏 并且正在尝试优化我的代码以减少闪烁 我已经实现了双缓冲 因此我尝试使用另一个 BufferedImage 来存储不改变的游戏背景元素的图片 这是我的代码的相关部分 public class QuizApp

随机推荐

  • 信号器与查询参数的持久连接。

    我有一个持久连接 我想使用查询参数从一些种子信息开始 这是连接中的覆盖 protected override Task OnConnected IRequest request string connectionId GET QUERY P
  • Web 浏览器 cookie 密钥的最大大小是多少?

    Web 浏览器 cookie 密钥的最大大小是多少 我知道 cookie 的最大大小是 4KB 但是密钥也有限制吗 您读到的 4K 限制是针对整个 cookie 包括名称 值 到期日期等 如果您想支持大多数浏览器 我建议将名称保持在 400
  • Android 的代理混淆了文档资源

    在我看来 关于 Android 上的代理主题有很多令人困惑的资源 首先 似乎所有的方法代理类已被宣布弃用 建议 使用标准 java vm 代理值来查找主机 端口和 排除列表 此调用会忽略排除列表 官方java vm 代理值可以通过以下方式访
  • 如何使用 sed 删除模式之前的换行符/换行符

    标题已经说明了 我想使用一些 linux oneliner 例如 sed 转变 Anytext into Anytext 这可以使用 sed 来完成吗 或者如果不使用 sed 则使用 awk oneliner 来完成 Sure sed N
  • 使用 ONE JavaFX 8 DatePicker 选择一个时间段或日期

    在我当前正在工作的应用程序中 需要从同一个 JavaFX 8 DatePicker 中选择单个日期或时间段 这样做的首选方法如下 选择单个日期 与 DatePicker 的默认行为相同 选择时间段 按住鼠标按钮并拖动到所需的结束 开始日期来
  • 安装 tabulizer 包时遇到问题

    我使用以下代码来安装tabulizer包裹 ghit install github c ropenscilabs tabulizerjars ropenscilabs tabulizer INSTALL opts no multiarch
  • vb.net错误:由于其保护级别而无法访问

    我是第一次使用 vb net 代码 但我有 5 年的 C 经验 从以前的开发人员那里得知 服务器上的代码运行良好 没有任何错误 但是当我打开网站文件夹 该网站没有解决方案文件 时 我尝试构建该网站 然后得到了大量错误说 未声明 labelC
  • 如何用python将协议号转换为名称?

    tcp udp等协议都是用数字来表示的 import socket socket getprotocobyname tcp 上面的代码将返回 6 如果我知道协议号 如何获取协议名称 我想说几乎肯定有比这更好的方法 但是所有协议名称 和值 都
  • 如何从 Windows 卸载 mongodb

    我看到一个教程说要运行这个 C mongodb bin mongod exe config C mongodb mongod conf remove 但该命令不起作用 因为没有mongod conf文件位于我的 Windows 中的 mon
  • Eclipse CVS 变更列表

    有没有办法查看 eclipse 项目中所有最近更改的文件 包括其他 CVS 用户最近更改的文件 谢谢 这里还有一个 Eclipse 变更日志插件 http code google com a eclipselabs org p change
  • svn 签出时“网络连接意外关闭”

    当我尝试结账时 svn checkout svn ssh serveradmin email protected home 87292 data svn repository trunk 我收到这个 无用的 错误 svn 网络连接意外关闭
  • pycharm 中的“预期语句结束”[重复]

    这个问题在这里已经有答案了 为什么我会收到此错误 请参阅 linting 说 预计声明结束 在pycharm中 我对 python 很陌生 尝试在 Python3 中使用括号进行打印 即print x 代替print x
  • 在间隔列表中搜索间隔重叠?

    假设 a b 表示从 a 到 b 的实线上的区间 a 给定一个间隔列表 x1 y1 x2 y2 找到与 x y 重叠的所有此类间隔的最有效方法是什么 显然 我可以尝试每一个并在 O n 内得到它 但我想知道是否可以以某种巧妙的方式对间隔列表
  • 错误:(59, 8) 错误:无法访问 android.support.v4.app.ActivityCompatApi23 的 ActivityCompatApi23 类文件。

    这是我的 build gradle apply plugin com android application android compileSdkVersion 25 buildToolsVersion 26 0 2 android con
  • 如何使用 SelectionModel 以编程方式选择材质树节点?

    我有一棵带有复选框的树 我们在这里使用 Material 的例子 我希望开始检查水果节点 如何检查这些节点 我看到SelectionModel has a select 示例传递节点的方法 但在示例中 构成树的数据是一个数组TodoItem
  • Android 中的屏幕亮度值

    如何获取活动的当前屏幕亮度 以下方法可以很好地通过调用将亮度设置为最大setBrightness 100 private void setBrightness int brightness WindowManager LayoutParam
  • 如何在 Windows Azure 辅助角色中安排任务

    我运行一个简单的 Azure Worker 角色 每天中午 12 点执行一项任务 下面是完成此操作的代码 public override void Run try while true int time Convert ToInt32 Da
  • Keydown 哪个不工作 Chrome 扩展

    我一直在为谷歌扩展的想法而苦苦挣扎 而你一如既往地是我最后的希望 好吧 我想单击 chrome 扩展上的按钮 这将导致页面扩展上的 keydown 模拟正在运行 我认为 chrome 在我的想法上有一些安全问题 它会阻止键盘模拟 使事件 i
  • 如何获得选择最短旋转方向的角度

    我的游戏中有一个角色必须平滑旋转才能达到所需的角度 考虑angle作为当前角度和touchAngle作为所需的角度 始终在 0 到 360 之间 我想在每次游戏更新中将 1 1 添加到当前角度以获得所需的角度touchAngle 问题是首先
  • 提交响应后是否可以从 servlet 过滤器转发或重定向?

    逻辑是过滤器被命中 条件不为真 所以它通过过滤器链 提交响应后 过滤器被命中 并且条件现在为真 请求属性已设置 它进去执行转发 但页面从未转发 我知道这与提交的响应有关 因为我测试了它在第一次到达链之前转发的不同逻辑 并且它确实转发成功 p