我正在使用 jQuery 发送 POST 请求:
$.post(
'test',
{ foo: 'bar'}
);
我有一个简单的 servlet 来处理它:
@WebServlet("/test")
public class TestServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Map<String, String[]> parameterMap = req.getParameterMap();
}
}
但是 servlet 中的 requestMap 原来是空的。我究竟做错了什么?
编辑:忘了提到我从 JSF Facelet 页面调用这个脚本。不要问我为什么要手动发出 Ajax 请求,以及为什么要使用 servlet 来处理它们。说来话长。我知道这不是 JSF 的方式。
在@BalusC 回答之后,我尝试添加这样的 servlet 过滤器:
@WebFilter(urlPatterns="/test")
public class TestFilter implements Filter {
@Override
public void destroy() { }
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
Map<String, String[]> parameterMap = request.getParameterMap();
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException { }
}
它奏效了!我不仅能够获得过滤器中的参数,而且还可以在 servlet 中访问它们!那么,有人能解释一下这是什么魔法吗?