如何将参数从过滤器发送到控制器?

时间:2015-02-03 06:48:27

标签: java spring servlets servlet-filters

我需要将一个用户名对象从过滤器传递给控制器​​。控制器适用于这两个参数,但参数不能过滤掉帖子。

过滤器中的方法:

public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) throws IOException, ServletException {
    /*send object to controller*/
    Username username = value; 
    response.sendRedirect("/create-bank-profile");
}

在控制器中:

@RequestMapping(value = "/create-bank-profile", method = RequestMethod.POST)
public ModelAndView register(
    HttpSession session,
    HttpServletRequest request, 
    @RequestParam(required = false, value = "bank-info-check", defaultValue = "false") Boolean isBankCustomer,
    @RequestParam("accessKey") Long accessKey, 
    @RequestParam("secretKey") Long secretKey
) {
     /* access the username object's two fields: aceesskey and secretKey */

}

我想我必须把这个值提出来。

3 个答案:

答案 0 :(得分:1)

您的create-bank-profile是一种POST方法,无法使用POST发送response.sendRedirect()请求。

您可以从这些选项中查看一些内容:

  • 使用RequestDispatcher

    request.setAttribute("param", "param value");
    RequestDispatcher dispatcher = servletContext().getRequestDispatcher(required_url);
    
  • 在请求中设置所需参数并使用:

    response.setStatus(307);
    response.addHeader("Location", "required URL");
    

答案 1 :(得分:1)

以下评论的代码不起作用。

    //RequestDispatcher rd=request.getRequestDispatcher("./test1");
    //rd.forward(request, response);
    //chain.doFilter(request, response);

然后我尝试如下。它工作正常。请试试这个。它应该是有效的。

我使用servlets测试了下面的代码。我添加了“./test1”。

如果是您的情况,您不需要提及“./”,您只需说“必填网址”

        request.setAttribute("anil", "anil123");
        RequestDispatcher rd= ((HttpServletRequest)request).getRequestDispatcher("./test1");
        rd.forward(request, response);

答案 2 :(得分:0)

request.getRequestDispatcher(" URL")。forward(request,response);