我编写了一个 servlet 过滤器,它被配置为为每个 url (/*) 调用。基于某些条件,如果条件通过,我想通过 ) 继续正常执行chain.doFilter(request,response
,我还想打开相同的请求 URL 并显示错误消息..
“说在特定文本框中输入的值不正确”。这可能吗?
我必须使用response.sendRedirect(request.getURL())
吗?我希望我不会陷入无限循环,因为我已经在每个 URL 上配置了过滤器。我正在对请求参数进行验证检查。
我编写了一个 servlet 过滤器,它被配置为为每个 url (/*) 调用。基于某些条件,如果条件通过,我想通过 ) 继续正常执行chain.doFilter(request,response
,我还想打开相同的请求 URL 并显示错误消息..
“说在特定文本框中输入的值不正确”。这可能吗?
我必须使用response.sendRedirect(request.getURL())
吗?我希望我不会陷入无限循环,因为我已经在每个 URL 上配置了过滤器。我正在对请求参数进行验证检查。
就像在 servlet 中做的一样:执行转发。
request.getRequestDispatcher("/WEB-INF/some.jsp").forward(request, response);
默认情况下,过滤器不会(重新)在转发上调用。另一个优点是 JSP 重用相同的请求,因此您可以将验证错误消息设置为请求属性,而无需基于会话或 cookie 的变通办法/黑客。
与具体问题无关,这并不完全是正确的方法。特定于表单的验证作业应该在servlet中执行,而不是在filter中。如果你想让你的 servlet(s) DRY,那么看看前端控制器模式或者只是采用一个已经提供前端控制器 servlet 和开箱即用验证的 MVC 框架,例如JSF或Spring MVC。