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

时间:2012-12-03 12:37:15

标签: java servlets servlet-filters

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

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

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

1 个答案:

答案 0 :(得分:4)

就像在servlet中一样:执行转发。

request.getRequestDispatcher("/WEB-INF/some.jsp").forward(request, response);

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


对具体问题

无关,这不是完全正确的方法。特定于表单的验证作业应在servlet中执行,而不是在filter中执行。如果你想保持你的servlet干,那么看看前端控制器模式或者只是采用一个MVC框架,它已经提供了一个前端控制器servlet和开箱即用的验证,例如JSF或{ {3}}