我有一张付款表格。当用户提交表单时,支付过程成功运行,但单击后退按钮会将用户带到相同的表单。我想在成功提交后使表单过期,以防止用户多次付款(以防用户返回并提交表单)。在阻止用户返回教程之后,我添加了过滤器,但它对我不起作用。我究竟做错了什么?这是我为过滤添加的内容。
<filter>
<filter-name>paymentFilter</filter-name>
<filter-class>path to PaymentFilter class</filter-class>
</filter>
<filter-mapping>
<filter-name>paymentFilter</filter-name>
<url-pattern>/order/*/payment</url-pattern>
</filter-mapping>
我的过滤器类是
public class PaymentFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
httpServletResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
httpServletResponse.setHeader("Pragma", "no-cache"); // HTTP 1.0.
httpServletResponse.setDateHeader("Expires", 0); // Proxies.
System.out.println("In filter");
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
}
我添加了一个System.out.println("In filter")
,但运行页面后在控制台上看不到它的输出(“在过滤器中”)。
当我使用 URL 模式作为控制台上/*
的打印时,System.out
<url-pattern>/*</url-pattern> (it works as expected)
但是当我将 URL 模式更改为/order/*/payment
(* 是订单 ID 时,每个订单会发生什么变化)。然后System.out
不在控制台上打印任何内容。
<url-pattern>/order/*/payment</url-pattern> (it doesn't work)
我正在使用spring mvc、apache、tomcat7.0