Java servlet过滤器如何在请求页面上发送错误消息?

Java servlet过滤器如何在请求页面上发送错误消息?,java,servlets,servlet-filters,Java,Servlets,Servlet Filters,我已经编写了一个servlet过滤器,它被配置为针对每个url(/*)调用。基于某些条件,如果条件通过,我希望通过chain.doFilter(请求,响应)继续正常执行,我还希望打开带有错误消息的相同请求URL “假设在特定文本框中输入的值不正确”。这可能吗 我是否必须使用response.sendRedirect(request.getURL())?我希望我不会在无限循环中结束,因为我已经在每个URL上配置了过滤器。我正在对请求参数进行验证检查。只需执行与在servlet中相同的操作:执行转发

我已经编写了一个servlet过滤器,它被配置为针对每个url(/*)调用。基于某些条件,如果条件通过,我希望通过
chain.doFilter(请求,响应
)继续正常执行,我还希望打开带有错误消息的相同请求URL

“假设在特定文本框中输入的值不正确”。这可能吗


我是否必须使用
response.sendRedirect(request.getURL())
?我希望我不会在无限循环中结束,因为我已经在每个URL上配置了过滤器。我正在对请求参数进行验证检查。

只需执行与在servlet中相同的操作:执行转发

request.getRequestDispatcher("/WEB-INF/some.jsp").forward(request, response);
默认情况下,不会(重新)在转发上调用筛选器。另一个优点是JSP重用了相同的请求,因此您可以将验证错误消息设置为请求属性,而不需要会话或基于cookie的解决方法



与具体问题无关,这不是完全正确的方法。表单特定的验证作业应在中执行,而不是在中执行。如果你想让servlet保持干爽,那么看看前端控制器模式,或者只采用一个MVC框架,它已经提供了前端控制器servlet和现成的验证,比如or。

我不会在
过滤器中进行验证,特别是映射到
/*
的一个,我会尝试更具针对性。好的。每个请求都需要进行一些验证。这就是为什么我要尝试使用过滤器谢谢。再帮一个忙,…你能告诉我有没有办法知道这个过滤器上的请求来自哪个jsp?请注意,我的httpRequest.getUri()提供了一个操作字符串,而不是jsp..,它被映射到Spring的控制器,这是您应该在前端控制器中执行此操作的原因之一。通常,前端控制器准确地知道它是哪个JSP。但是当你显然在使用Spring的前端控制器时,为什么不使用它的验证工具呢?因为它是对所有请求的通用检查,所以考虑在请求过滤器中进行检查。如果我写一个Spring拦截器,你能告诉我任务是否会更简单吗?因为我想检查所有请求,所以我不做Spring,所以我不能详细说明。在JSF中,只需向输入组件添加
required=“true”
属性,或者在输入组件中嵌套
标记。