如何使用jsp中的post方法将隐藏的表单字段传递给servlet过滤器的doFilter方法?

时间:2019-06-07 10:30:25

标签: jsp servlets

jsp代码:

<form name="editAddress" id="editAddress"  method ="post" >
<td ><input type="hidden" name="csrf" id="csrf" value="<%=token%>"></input>

Servlet过滤器:

public class ValidateToken implements Filter  
    {
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException 
        {
           HttpServletRequest httpRequest = request instanceof HttpServletRequest ? (HttpServletRequest) request : null;
           HttpServletResponse httpResponse = response instanceof HttpServletResponse ? (HttpServletResponse) response: null;

            String token =httpRequest.getParameter("csrf");

            System.out.println("token =" +token);

            chain.doFilter(request, response);
        }
    }

此处,ValidateToken类中的令牌值为null。

1 个答案:

答案 0 :(得分:0)

您需要使用 method参数 request,而不是一些自定义字段。

(我什至看不到第3行和第4行中的这些字段requestresponse的来源。Filter是一个接口,因此没有任何字段甚至可以编译吗?)

删除两个字段,并将方法参数request强制转换为HttpServletRequest,它将起作用。