当在 JSF 中的映射中使用 FORWARD 时,Servlet Filter 进入无限循环

2023-12-03

我在 web.xml 中定义了一个过滤器,如下所示:-

<filter-mapping>
    <filter-name>AuthenticationFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>ERROR</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<filter>
    <display-name>AuthenticationFilter</display-name>
    <filter-name>AuthenticationFilter</filter-name>
    <filter-class>com.filters.AuthenticationFilter</filter-class>
</filter>

在过滤器中我有以下代码:-

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
  // TODO Auto-generated method stub
  // place your code here

  HttpServletRequest httpRequest = (HttpServletRequest) request;
  HttpServletResponse hres = (HttpServletResponse) response;


  String pathInfo = httpRequest.getRequestURI().trim();

  System.out.println(pathInfo);

  // Do not process any non-jsp files or LogIn.jsp  ! pathInfo.endsWith("jsf") || 
  if (pathInfo.endsWith("RegistrationForm.jsf") || pathInfo.endsWith("Login.jsf")) {
   chain.doFilter(request, response);
   return;
  }
  // pass the request along the filter chain
  User user = (User) httpRequest.getSession().getAttribute("USER_IN_SESSION");
  if(user==null)
   hres.sendRedirect("Login.jsf");
  else {
   chain.doFilter(request, response);

  }

 }

问题是,如果我使用 Topic.jsp 调用应用程序,它会像这样循环:-

Topic.jsp
LogIn.jsf
Login.jsp
Login.jsf
Login.jsp
...

我发现问题出在映射中的 FORWARD 上。如果删除此条目,它会起作用

<dispatcher>FORWARD</dispatcher>

请帮我解决这个难题无限循环交替.jsp 和 .jsf :)


Theory:

  1. Topics.jsp 需要验证,因此 重定向到 LogIn.jsf。

  2. LogIn.jsf 由以下服务提供 FacesServlet。但那个页面是 包含面孔实际上是一个jsp 页。所以servlet做了一个转发 到 LogIn.jsp(构建 组件树)。

  3. 在您的过滤器中,路径是 LogIn.jsp 并且您不验证 请求 LogIn.jsp 所以你要求 身份验证和重定向到 再次制作LogIn.jsf。转到步骤 2。

因此,如果删除 ,则 FacesServlet 从 LogIn.jsf 到 LogIn.jsp 的转发不会进入循环。

快速解决方案:将 LogIn.jsp 添加到 if 语句中的路径信息列表中。

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

当在 JSF 中的映射中使用 FORWARD 时,Servlet Filter 进入无限循环 的相关文章

  • f:ajax 不工作

    我很难得到f ajax从事某项工作h panelGroup 这就是我正在做的 JSF 代码
  • JSF 的最佳实践是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 从支持 bean 更新 PrimeFaces 数据表

    我在 bean 中使用 Schedule Timer 当员工注册从指纹设备获取数据时 它会更新变量 当 bean 中的变量更新时 我需要从支持 bean 更新 jsf 中的组件 我尝试使用 primefaces poll 组件 但它每次都会
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • 无法使用 Struts 2 重定向 JSP 文件并显示值

    我创建了一个简单的程序 使用文本字段获取用户的名字和姓氏 但问题是 当我单击提交按钮时 我无法将其重定向到另一个显示用户名字和姓氏的 jsp 文件 这是我的HelloAction class package com novamsc trai
  • FontAwesome 与 PrimeFaces

    我一直渴望在 Primefaces 中包含 FontAwesome 图标 最后 Optimus 昨天发布了这个伟大的新图标 gt http blog primefaces org p 3004 comment 5422 http blog
  • 在 JSP 或 Javascript 中清除浏览器缓存中的图像

    我正在为一所大学开发JSP Web 应用程序 用户页面中显示人员图片 用户注销后如何从网络浏览器缓存中清除这张图片 使用 JSP 或 JavaScript 那是不可能的 最好的选择是完全禁用相关资源的缓存 创建一个filter https
  • jqgrid删除:没有获取值

    我使用 JSP 和 Servlet IDE Eclipse 数据库 Oracle10 开发 Web 应用程序 我在用JQGRID以表格格式显示数据 我还想要添加 编辑 删除的功能JQGRID 到目前为止我已经完成了编辑功能 现在我想要Del
  • JSF1064 jsf 2.0 上的“无法找到或提供资源”警告

    我正在 Weblogic 10 3 3 上使用 Java EE 5 和 JSF 2 0 Mojarra 2 0 3 开发一个企业项目 我没有错误 但在浏览我的应用程序时 控制台中出现了非常烦人的警告 每当我在 JSF 中执行重定向时 我都会
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • 查看/page.jsf无法恢复[重复]

    这个问题在这里已经有答案了 我有无法解决的问题 当我在页面空闲 10 分钟后刷新打开的 JSF 页面时 我收到以下错误消息 serverError class javax faces application ViewExpiredExcep
  • jsf 中的类型未找到属性

    我正在尝试调用 jsf 中使用 primefaces 的属性 但我有错误 500 在托管bean PersonelBean 类型上找不到 我正在使用 hibernate jsf 和 spring PersonelBean java Mana
  • url 模式“/*”的 servlet 映射中出现 StackOverflowError

    我有一组 JSP 页面 我想隐藏 jsp 扩展名 经过一些研究 这似乎对 SEO 有好处 我遇到的一种解决方案如下
  • JSF 中的partialSubmit 和autoSubmit 有什么区别?

    我想我知道其中的区别 但现在我发现自己很困惑 P 他们俩似乎都在做同样的事情 除了partialSubmit用于提交按钮以使用 AJAX 提交表单 并且autoSubmit用于可编辑组件 该组件仅提交自己的内容 我这样说对吗 对于 ADF
  • 显示 p:dataTable 行号

    于明镜example http www mkyong com jsf2 how to display datatable row numbers in jsf 他们展示了如何在 JSF 中显示数据表行号 他们使用 javax faces m
  • 如果内容超出使用 JavaScript 的 html 表格的固定宽度,则将文本拆分到下一行

    我有一个 div 它由应用了不同样式的表格组成 我正在尝试实现一个布局 如果文本超过表格 td 的宽度 它应该转到下一行 但我不能这样做 我的代码是
  • 维护动作变量的值?

    class SampleAction extends ActionSupport private Map
  • 在 JSF 转换/验证机制之外的操作方法中创建 FacesMessage?

    我目前正在从 core jsf 2 0 book glassfish cdi 中学习 jsf 2 0 我想问一个关于处理 jsf 页面或带有 bean validation framework 的托管 命名 bean 中未定义的验证的问题
  • 当要阻止的组件通过 AJAX 更新时,PrimeFaces 阻止 UI 不起作用

    我已经在中显示了一些组件
  • JSP拒绝未登录用户对URL的直接访问

    我有一个登录名和登录后显示的用户信息页面 如何阻止用户直接访问用户信息页面 我如何通过会话来实现它 登录时 将找到的User会话中的对象 String username request getParameter username Strin

随机推荐

  • 无法在子进程命令中使用 grep

    我的子进程命令有问题 我喜欢 grep 出与 Online 行匹配的行 def run command command p subprocess Popen command shell False stdout subprocess PIP
  • 如何处理 tokio::spawn 闭包需要“static”和“&self”?

    我无法理解如何编写封装在一个结构中的并发异步代码 我不确定如何准确解释这个问题 所以我会尝试用一个例子来解释 假设我有一个UdpServer结构 该结构有多个与其行为相关的方法 例如 handle datagram deserialize
  • 我们是否忽略补码的溢出

    我试图解决二进制补码内的溢出问题 例如说我试图去掉这两个二进制数 1111 1000 0100 010 111 001 000 我将第二个二进制数转换为两个补码等值 然后简单地将其相加 但我注意到它导致了 1 的溢出 我是否只是忽略溢出 或
  • 未找到 Python 模块,但该模块存在于文件夹中

    我正在尝试执行一个简单的 PY 文件 但收到以下错误 Traceback most recent call last File docker pull py line 8 in
  • Python 中可能存在混合缩进吗?

    看着this问题 我在我的机器上尝试了OP的代码 这里有一个文字版和截图 刚刚发生了什么 这应该是一个square功能 并且已正确实现 可以肯定的是 我复制粘贴了代码 然后再次尝试 好吧 我看不出这些版本之间有什么区别square 但只有后
  • 使用 clusplot 绘制以 0 为中心坐标的聚类

    我正在尝试绘制 GIS 坐标 特别是东向和北向相似的英国国家网格坐标 194630000 562220000 我可以使用 Cluster 库中的 clusplot 绘制这些图 clusplot df2 k means fit cluster
  • Javascript 函数生成具有非均匀概率的随机整数

    在javascript 或jquery 中 有一个简单的函数可以计算四个整数及其概率值 1 0 41 2 0 29 3 0 25 4 0 05 我怎样才能生成这四个数字并考虑到它们的概率 这个问题与这里发布的问题非常相似 生成具有概率的随机
  • php 5.3.1 的 phpinfo() 中未启用 mysql

    我在 Vista 上安装了 apache 2 2 14 php 5 3 1 和 mysql 5 1 43 两天以来我一直在尝试配置 php 以在 phpinfo 上启用 mysql 我修改了 php ini 使其具有 extension d
  • 惰性类属性装饰器

    我有一个 Django 模型 需要对自定义用户模型进行一些处理 我无法在类加载时使用该模型的类 因为类的加载顺序未知 所以我需要在运行时添加一些类属性 目前我将它们添加到 init or new like def new cls args
  • SQL Server 对浮点字段“like”会产生不一致的结果

    我在用LIKE返回针对浮点字段的匹配数字结果 似乎一旦小数点左侧超过 4 位 则不会返回与我的小数点右侧搜索项匹配的值 下面是一个说明这种情况的示例 CREATE TABLE number like test num FLOAT NULL
  • 使用 ord 和 chr 移动字母

    我正在尝试执行一个函数 将每个单词中的每个字母按值向右移动 这些单词将来自一个列表 我将使用 打开 功能打开它 我写了代码 我在这里面临一些困难 这是我的代码 def test value eval input Value here wit
  • 模板化友元函数查找

    下面的简单代码可以很好地编译 class A int x 3 public A x 0 1 x 1 2 x 2 3 friend int const at A const a unsigned i noexcept return a x i
  • 为什么下面的函数被调用三次

    我曾尝试调试 但没有运气 我无法理解为什么第二个 printf 调用increment 三次 但第一个按预期调用两次 include
  • 使用正则表达式和转义双引号将变量通过管道传输到 FINDSTR

    我试图理解发送给我的批处理文件 以便在第三方程序解决问题时解决该错误 基本上 他们正在运行 findstr 正则表达式命令来确定字符串是否匹配 如果是这样 则不应删除的特殊字符将在传递到原始命令行程序之前手动添加回来 据我所知 所提供的内容
  • gitcherrypick 不工作

    我正在尝试从 master 中挑选一个提交并将其放入当前的生产分支中 但是 当我执行git cherry pick
  • 在.net core中编写Windows服务

    我的问题是如何在 net core 中编写我们在以前的 net 版本中编写的 Windows 服务 许多链接 文章解释了如何将 net core 应用程序托管为 Windows 服务 那么这是我创建 Windows 服务的唯一方法吗 如果是
  • C# 异步/等待未观察到的异常

    我试图理解为什么下面的代码 async void Handle Clicked object sender System EventArgs e try await CrashAsync aaa catch Exception except
  • 类属性上的 StackOverFlow [重复]

    这个问题在这里已经有答案了 复制 刚接触 C 为什么 Property Set 会抛出 StackOverflow 异常 我有一个简单的类 myClass 它有一个名为 isAuthenticated 的属性 代码如下 public cla
  • `asyncio.run()` 不等待协程完成

    我在 Python 3 7 3 中运行此代码 import asyncio async def fun time print f will wait for time await asyncio sleep time print f don
  • 当在 JSF 中的映射中使用 FORWARD 时,Servlet Filter 进入无限循环

    我在 web xml 中定义了一个过滤器 如下所示