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

Raj*_*esh 3 java servlets servlet-filters

我编写了一个 servlet 过滤器,配置为为每个 url (/*) 调用。根据某些条件,如果条件通过,我想通过chain.doFilter(request,response) 继续正常执行,我还想打开带有错误消息的相同请求 URL。

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

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

Bal*_*usC 5

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

request.getRequestDispatcher("/WEB-INF/some.jsp").forward(request, response);
Run Code Online (Sandbox Code Playgroud)

默认情况下,转发时不会(重新)调用过滤器。另一个优点是 JSP 重用相同的请求,因此您只需将验证错误消息设置为请求属性,而不需要基于会话或 cookie 的变通方法/黑客。


与具体问题无关,这并不完全是正确的方法。特定于表单的验证作业应在servlet中执行,而不是在过滤器中执行。如果您想让您的 servlet 保持干燥,那么请查看前端控制器模式,或者只采用 MVC 框架,该框架已经提供了前端控制器 servlet 和开箱即用的良好验证,例如JSFSpring MVC